php电子商务网站模板,宁波网站建设大概要多少钱,怎么利用花生壳做自己的网站,软件开发流程管理系统文章目录 一、Graylog简介二、Graylog原理架构三、日志系统对比四、Graylog部署传统部署MongoDB部署OS或者ES部署Garylog部署容器化部署 五、配置详情六、优化网络和 REST APIMongoDB 七、升级八、监控九、常见问题及处理 一、Graylog简介
Graylog是一个简单易用、功能较全面的… 文章目录 一、Graylog简介二、Graylog原理架构三、日志系统对比四、Graylog部署传统部署MongoDB部署OS或者ES部署Garylog部署容器化部署 五、配置详情六、优化网络和 REST APIMongoDB 七、升级八、监控九、常见问题及处理 一、Graylog简介
Graylog是一个简单易用、功能较全面的日志管理工具Graylog也采用Elasticsearch作为存储和索引以保障性能MongoDB用来存储少量的自身配置信息master-node模式具有很好的扩展性UI上自带的基础查询与分析功能比较实用且高效支持LDAP、权限控制并有丰富的日志类型和标准如syslogGELF并支持基于日志的报警。 在日志接收方面通常是网络传输可以是TCP也可以是UDP在实际生产环境量级较大多数采用UDP也可以通过MQ来消费日志。
Graylog的优势
部署维护简单资源占用较少查询语法简单易懂(对比ES的语法…)内置简单的告警可以将搜索结果导出为 jsonUI 比较友好
二、Graylog原理架构
Graylog 最简单的架构就是单机部署复杂的也是部署集群模式架构图示如下所示。我们可以看到其中包含了三个组件分别是 Elasticsearch、MongoDb 和 Graylog。 其中Elasticsearch 用来持久化存储和检索日志文件数据(IO 密集)MongoDb 用来存储关于 Graylog 的相关配置信息而 Graylog 来提供 Web 界面和对外接口(CPU 密集)。
单机版本 集群版本 数据处理流程
日志消息通过各种Input输入到Graylog中进行处理 可以通过Extractors进行正则、Json等形式解析 通过Streams进行规则匹配分流对Stream可以配置Pipeline进行数据过滤最终数据会到到不同的index中 根据新建index时配置的策略在elasticsearch的索引中 告警Alert基于Stream进行设置。 为了让大家能够对graylog有一个完整的认识做了一个思维导图。 可以看出graylog的设计是非常全面的从日志的采集、数据分类管理、数据清洗、调用第三方API都考虑到了。
组件名称功能介绍主要特点Dashboards数据面板固定展示主要是用来保存特定搜索条件的数据面板Search日志信息条件搜索关键字搜索、时间搜索、搜索保存、创建面板、分组查询、结果导出、查询高亮显示、自定义时间Alerts设置告警提示方式支持邮件告警、HTTP回调和自定义脚本触发Inputs日志数据抓取接收部署 Sidercar 主动抓取或使用其他服务被动上报Extractors日志数据格式转换json 解析、k-v 解析、时间戳解析、正则解析Streams日志信息分类分组设置日志分类条件并发送到不同的索引文件中去Indices持久化数据存储设置数据存储性能Outputs日志数据的转发解析的 Stream 发送到其他 Graylog 集群或服务Pipelines日志数据的过滤建立数据清洗的过滤规则、字段添加删除、条件过滤、自定义函数等Sidecar轻量级的日志采集器相当于 C/S 模式大规模时使用Lookup Tables服务解析基于 IP 的 Whois 查询和基于来源 IP 的情报监控Geolocation可视化地理位置实现基于来源 IP 的情报监控 三、日志系统对比
对比ELKGraylog组件ESLogstashKibanaESGraylogServerGarylogWeb优点1、处理方式灵活elasticsearch是实时全文索引具有强大的搜索功能2、配置相对简单elasticsearch全部使用JSON 接口logstash使用模块配置kibana的配置文件部分更简单。3、检索性能高效基于优秀的设计虽然每次查询都是实时但是也可以达到百亿级数据的查询秒级响应。4、集群线性扩展elasticsearch和logstash都可以灵活线性扩展5、前端操作绚丽kibana的前端设计比较绚丽而且操作简单1、一体化方案安装方便不像ELK有3个独立系统间的集成问题。2、采集原始日志并可以事后再添加字段比如http_status_coderesponse_time等等。3、自己开发采集日志的脚本并用curl/nc发送到Graylog Server发送格式是自定义的GELFFlunted和Logstash都有相应的输出GELF消息的插件。自己开发带来很大的自由度。实际上只需要用inotify_wait监控日志的MODIFY事件并把日志的新增行用curl/nc发送到Graylog Server就可。4、搜索结果高亮显示就像google一样。5、搜索语法简单比如 source:mongo AND reponse_time_ms:5000 避免直接输入elasticsearch搜索json语法6、搜索条件可以导出为elasticsearch的搜索json文本方便直接开发调用elasticsearch rest api的搜索脚本。缺点1、不能处理多行日志比如Mysql慢查询Tomcat/Jetty应用的Java异常打印2、不能保留原始日志只能把原始日志分字段保存这样搜索日志结果是一堆Json格式文本无法阅读。3、不复合正则表达式匹配的日志行被全部丢弃。1、控制台操作页面是英文的针对国内开发使用者使用起来不方便还得额外汉化汉化可能失败2、使用网络传输可能会占用项目网络
总结 两者之间最重要的区别在于从一开始Graylog就定位为强大的日志解决方案而ELK则是大数据解决方案。Graylog可以通过网络协议直接从应用程序接收结构化日志和标准syslog。相反ELK是使用Logstash分析已收集的纯文本日志的解决方案然后解析并将它们传递给ElasticSearch。在ELK中Kibana扮演仪表盘的角色并显示从Logstash收到的数据。Graylog在这点上更方便因为它提供了单一应用程序解决方案不包括ElasticSearch作为灵活的数据存储具有几乎相同的功能。因此部署所需的时间更短。此外与ELK相比Graylog开箱即用且具有出色的权限系统而Kibana则不具备此功能Graylog具有直观的GUI并提供警报、报告和自定义分析功能。最重要的是它能在多个日志源和跨机房收集数TB的数据。
四、Graylog部署
各组件文件系统默认路径
传统部署
Graylog 5.0 需要以下内容来保持与其软件依赖项的兼容性 OpenJDK 17嵌入在5.0安装文件中 Elasticsearch 7.10.2或OpenSearch 2.x MongoDB5.x 或 6.x
MongoDB部署
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.14.tgztar -xf mongodb-linux-x86_64-rhel70-5.0.14.tgz
mv mongodb-linux-x86_64-rhel70-5.0.14 /usr/local/mongodb
mkdir -p single/logs
mkdir -p single/data/db
vim /etc/profile 添加
export MONGODB_HOME/usr/local/mongodb
export PATH$MONGODB_HOME/bin:$PATH
source /etc/profile
vi /etc/mongodb.conf
#指定数据库路径
dbpath/root/graylog/single/data
#指定MongoDB日志文件
logpath/root/graylog/single/logs/mongodb.log
# 使用追加的方式写日志
logappendtrue
#端口号
port27017
#方便外网访问
bind_ip0.0.0.0
forktrue # 以守护进程的方式运行MongoDB创建服务器进程
#authtrue #启用用户验证
#bind_ip0.0.0.0 #绑定服务IP若绑定127.0.0.1则只能本机访问不指定则默认本地所有IPmongod -f /etc/mongodb.conf #启动mongodbOS或者ES部署
rpm --import https://artifacts.opensearch.org/publickeys/opensearch.pgp
#安装OS GPG密钥
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.4.1/opensearch-2.4.1-linux-x64.tar.gz
tar -xf opensearch-2.4.1-linux-x64.tar.gz
chown -R os:os opensearch-2.4.1/
cd opensearch-2.4.1/
su os (和es一样root启动会报错)
./opensearch-tar-install.sh
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
#安装 ES GPG 密钥
vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.10.2]
nameElasticsearch repository for 7.10.2 packages
baseurlhttps://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck1
gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled1
autorefresh1
typerpm-mdyum install elasticsearch-oss
sudo tee -a /etc/elasticsearch/elasticsearch.yml /dev/null EOT
cluster.name: graylog
action.auto_create_index: false
EOT
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl --typeservice --stateactive
grep elasticsearchGarylog部署
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.rpm
yum install graylog-server
阅读配置文件中的说明并根据需要进行编辑位于/etc/graylog/server/server.conf. 另外添加password_secret和root_password_sha2因为这些是强制性的没有它们 Graylog 将无法启动。
要创建您的root_password_sha2运行以下命令
echo -n Enter Password: head -1 /dev/stdin | tr -d \n | sha256sum | cut -d -f1
为了能够连接到 Graylog您应该设置http_bind_address您可以连接到的机器的公共主机名或公共 IP 地址。
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --typeservice --stateactive | grep graylog
容器化部署
docker-compose.yaml
version: 2
services:# MongoDB: https://hub.docker.com/_/mongo/mongodb:container_name: mongoimage: mongo:5volumes:- mongo_data:/data/db# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.htmlelasticsearch:container_name: esimage: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2volumes:- es_data:/usr/share/elasticsearch/dataenvironment:- TZAsia/Shanghai- http.host0.0.0.0- transport.hostlocalhost- network.host0.0.0.0- ES_JAVA_OPTS-Xms1024m -Xmx1024mulimits:memlock:soft: -1hard: -1mem_limit: 4g# Graylog: https://hub.docker.com/r/graylog/graylog/graylog:container_name: graylogimage: graylog/graylog:environment:- http_bind_address 0.0.0.0:9000 # CHANGE ME (must be at least 16 characters)!- GRAYLOG_PASSWORD_SECRETsomepasswordpepper- GRAYLOG_ROOT_USERNAMEadmin# Password: admin- GRAYLOG_ROOT_PASSWORD_SHA28c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918- GRAYLOG_HTTP_EXTERNAL_URIhttp://192.168.3.83:9000/ #这里配置公网访问地址,可注释.- TZAsia/Shanghailinks:- mongodb:mongo- elasticsearchdepends_on:- mongodb- elasticsearchports:# Graylog web interface and REST API- 9000:9000# Syslog TCP- 1514:1514# Syslog UDP- 1514:1514/udp# GELF TCP- 12201:12201# GELF UDP- 12201-12205:12201-12205/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:mongo_data:driver: locales_data:driver: localgraylog_journal:driver: localdocker-compose up #启动 graylog 服务 docker-compose down #停止服务并删除容器 graylog 启动后可以通过ip端口访问 如http://192.168.11.127:9000 至此 graylog 环境以及搭建完毕!!
五、配置详情
• is_master true
o 如果您正在运行多个Graylog服务器实例则只需选择一个graylog-server节点作为主节点。该节点将执行从属节点不会执行的定期和维护操作。
o 每个从属节点都将像主节点一样接受消息。如果集群中已存在主节点则节点将退回到从属模式。
• node_id_file /etc/graylog/server/
o 自动生成的节点ID将存储在此文件中并在重新启动后读取。如果要从初始化脚本或类似脚本启动Graylog服务器则在此处使用绝对文件路径是个好主意。
• password_secret
o 您必须设置一个用于密码加密和加密的秘密。如果未设置服务器将拒绝启动。至少使用64个字符。如果您运行多个graylog-server节点请确保password_secret对所有节点都使用相同的节点
注意
例如产生秘密 pwgen -N 1 -s 96
• root_username admin
o 默认的root用户名为admin。
• root_password_sha2
o 您将用于首次登录的密码的SHA2哈希。将此设置为生成的SHA2哈希您将能够使用用户名admin和密码yourpassword登录Web界面。echo -n “Enter Password: head -1 /dev/stdin | tr -d ‘\n’ | sha256sum | cut -d” -f1
警告
您必须为根用户指定一个哈希密码您只需要在初始设置系统时使用以防丢失与身份验证后端的连接。不能使用API或通过Web界面更改此密码。如果需要更改请在此文件中对其进行修改。
• root_email “”
o 根用户的电子邮件地址。默认为空。
• root_timezone UTC
o root用户的时区设置。请参阅此有效时区列表。默认为UTC。
• bin_dir bin
o 该目录包含Graylog服务器使用的二进制文件。相对或绝对
• data_dir data
o 该目录用于存储Graylog服务器状态。相对或绝对
• plugin_dir plugin
o 在此处设置插件目录相对或绝对
Web和REST API
• http_bind_address 127.0.0.1:9000
o Graylog HTTP接口使用的网络接口。
o 群集中的所有Graylog节点以及使用Graylog Web界面的所有客户端都必须可以访问此网络界面。
o 如果省略端口默认情况下Graylog将使用端口9000。
• http_publish_uri http://
httpbindaddress/o此Graylog节点的HTTPURI用于与该群集中的其他Graylog节点以及所有使用GraylogWeb界面的客户端进行通信。oURI将在集群发现API中发布以便其他Graylog节点将能够找到并连接到该Graylog节点。o如果此Graylog节点在 http_bind_address以外的其他网络接口上可用则必须使用此配置设置例如如果计算机具有多个网络接口或在NAT网关后面
o 此配置设置不得配置为通配符地址
o 如果http_bind_address包含通配符IPv4地址0.0.0.0http_publish_uri则将使用此计算机的第一个非环回IPv4地址填充。
• http_external_uri
httppublishurioGraylogWeb界面将使用Graylog的公共URI与GraylogRESTAPI进行通信。o如果Graylog在反向代理或负载均衡器后面运行则通常必须指定外部GraylogURI并且它将用于生成在GraylogRESTAPI中寻址实体的URL请参阅http_bind_address
o 使用Graylog收集器时此URI将用于接收心跳消息并且所有收集器都必须可以访问该URI。
o 可以根据每个请求使用“ X-Graylog-Server-URL” HTTP请求标头覆盖此设置。
• http_enable_cors true
o 为HTTP接口启用CORS标头。
o 这对于JS客户端直接访问服务器是必需的。
o 如果禁用了这些功能现代浏览器将无法从服务器检索资源。
• http_enable_gzip true
o 这样可以压缩API响应因此有助于减少总体往返时间。
• http_max_header_size 8192
o HTTP请求标头的最大大小以字节为单位。
• http_thread_pool_size 16
o 专用于服务HTTP接口的线程池的大小。
• http_enable_tls false
o 这样可以确保与具有TLS的HTTP接口的通信安全以防止伪造和窃听请求。
• http_tls_cert_file /path/to/graylog.crt
o PEM格式的X.509证书链文件用于保护HTTP接口。
• http_tls_key_file /path/to/graylog.key
o PEM格式的PKCS8私钥文件用于保护HTTP接口。
• http_tls_key_password secret
o 用于解锁用于保护HTTP接口的私钥的密码。如果密钥已加密
• trusted_proxies 127.0.0.1/32, 0:0:0:0:0:0:0:1/128
o 逗号分隔的受信任代理列表允许使用X-Forwarded-For标头设置客户端地址。可能是子网也可能是主机。
弹性搜索
• elasticsearch_hosts http://node1:9200,http://user:passwordnode2:19200
o Elasticsearch主机Graylog应该连接的列表。
o 需要指定为Elasticsearch节点的http端口的有效URI的逗号分隔列表。
o 如果您的一个或多个Elasticsearch主机需要身份验证请在每个需要身份验证的节点URI中包括凭据。
o 默认 http://127.0.0.1:9200
• elasticsearch_connect_timeout 10s
o 等待成功连接到Elasticsearch HTTP端口的最长时间。
o 默认值10秒
• elasticsearch_socket_timeout 60s
o 等待从Elasticsearch服务器读回响应的最长时间。
o 默认值60秒
• elasticsearch_idle_timeout -1s
o Elasticsearch连接的最大空闲时间。如果超出此范围则该连接将被断开。
o 默认值无穷大
• elasticsearch_max_total_connections 200
o 到Elasticsearch的最大总连接数。
o 默认值200
• elasticsearch_max_total_connections_per_route 20
o 每个Elasticsearch路由的最大总连接数通常意味着每个Elasticsearch服务器。
o 默认值20
• elasticsearch_max_retries 2
o Graylog将重试失败的请求到Elasticsearch的最大次数。
o 默认值2
• elasticsearch_discovery_enabled false
o 通过节点信息启用自动Elasticsearch节点发现请参阅Elasticsearch参考»集群API»节点信息。
o 默认 false
警告
如果Elasticsearch需要使用Shield进行身份验证则自动节点发现将不起作用。
警告
在AWS Elasticsearch Clusters托管的上此设置必须为false并且应谨慎使用。万一与ES的连接出现问题这应该是第一个禁用的选项。有关更多详细信息请参见自动节点发现。
• elasticsearch_discovery_filter rack:42
o 根据其自定义属性过滤发现中是否包含Elasticsearch节点请参阅《Elastic Search参考手册》»《集群API》»《节点规范》。
o 默认值空
• elasticsearch_discovery_frequency 30s
o Elasticsearch节点发现的频率。
o 默认值30秒
• elasticsearch_discovery_default_scheme http
o 连接到Elasticsearch发现的节点时设置默认方案。可用选项httphttps
o 默认值http
• elasticsearch_compression_enabled false
o 为Elasticsearch请求启用有效负载压缩。
o 默认值false
• elasticsearch_use_expect_continue true
o 为Elasticsearch索引请求启用“期望100个连续”标头。如果禁用此选项则Graylog无法正确处理HTTP 413请求实体太大错误。
o 默认值true
回转
注意
以下设置标识为本节中的内容已移至Graylog 2.0中的数据库。升级时请确保将它们设置为以前的1.x设置以便将它们迁移到数据库
• rotation_strategy count
o Graylog将使用多个索引来存储文档。您可以配置该策略来确定何时旋转当前活动的写索引。
o 它支持多种轮换策略-count每个索引使用的消息elasticsearch_max_docs_per_index -size每个索引使用elasticsearch_max_size_per_index
o 有效值countsize并且time默认为count。
• elasticsearch_max_docs_per_index 20000000
o 在创建新索引之前Elasticsearch索引中的大约最大文档数另请参见no_retention和elasticsearch_max_number_of_indices。
o 如果您在上面使用过请进行配置。rotation_strategy count
• elasticsearch_max_size_per_index 1073741824
o 在创建新索引之前磁盘上每个Elasticsearch索引的大约最大大小以字节为单位另请参见no_retention和elasticsearch_max_number_of_indices。默认值为1GB。
o 如果您在上面使用过请进行配置。rotation_strategy size
• elasticsearch_max_time_per_index 1d
o 大约在创建新的Elasticsearch索引之前的最长时间另请参阅no_retention和elasticsearch_max_number_of_indices。默认值为1天。
o 如果您在上面使用过请进行配置。rotation_strategy time
o 请注意该轮换周期不考虑接收到的消息中指定的时间而是使用实际时钟值来决定何时轮换索引
o 使用持续时间和后缀指定所需的时间以指定时间
1w 1周
1d 1天
12h 12小时
o 允许的后缀为d天h小时m分钟s秒。
• elasticsearch_max_number_of_indices 20
o 您要保留多少个索引
• retention_strategy delete
o 确定在达到最大索引数时最旧的索引会发生什么。
o 可以使用以下策略
delete -完全删除索引默认
close-关闭索引并将其从系统隐藏。以后可以重新打开。
• elasticsearch_disable_version_check true
o 禁用检查Elasticsearch版本是否与此Graylog版本兼容。
警告
在不受支持和未经测试的Elasticsearch版本中使用Graylog可能会导致数据丢失
• no_retention false
o 在该节点上禁用消息保留即禁用Elasticsearch索引轮换。
注意
以下设置用!! 已被移至Graylog 2.2.0中的数据库。升级时请确保将它们设置为以前的设置以便将它们迁移到数据库。此设置在第一次启动时被读取一次成为数据库中的初始设置。
• elasticsearch_shards 4 !!
o 索引的分片数。一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。如果您有一个节点请将其设置为1。
• elasticsearch_replicas 0 !!
o 索引的副本数。一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。如果您有一个节点请将其设置为0。
注意
elasticsearch_shards并且elasticsearch_replicas仅适用于新创建的索引。
• elasticsearch_index_prefix graylog !!
o 由Graylog管理的所有Elasticsearch索引和索引别名的前缀。
• elasticsearch_template_name graylog-internal !!
o Graylog用于应用强制索引映射的Elasticsearch索引模板的名称。
o 默认值graylog-internal
• elasticsearch_analyzer standard !!
o 分析器令牌器用于消息和full_message字段。通常“标准”过滤器是一个好主意。
o 所有受支持的分析器为标准简单空白停止关键字模式语言雪球自定义
o Elasticsearch文档https : //www.elastic.co/guide/zh-CN/elasticsearch/reference/5.6/analysis.html
o 请注意此设置仅对新创建的索引有效。
• disable_index_optimization false !!
o 禁用索引循环后优化Elasticsearch索引。在使用大索引的频繁使用的系统上这可能会给Elasticsearch带来一些负担但会降低搜索性能。默认设置是优化循环索引。
• index_optimization_max_num_segments 1 !!
o 将索引优化到 index_optimization_max_num_segments。在具有大量索引的频繁使用的系统上更高的数量可能会从Elasticsearch承受一些负担但会降低搜索性能。预设值为1。
• allow_leading_wildcard_searches false
o 是否要允许使用前导通配符进行搜索这可能会非常耗费资源因此应谨慎启用。
o 另请参阅搜索
• allow_highlighting false
o 是否要突出显示搜索根据消息的大小这可能会占用大量内存只有在确保您的Elasticsearch群集具有足够的内存后才能启用它。
• elasticsearch_request_timeout 1m
o 基于尽力限制Elasticsearch操作的运行时间Elasticsearch请求的全局请求超时例如在搜索索引创建或索引时间范围计算期间。
o 默认值1m
• elasticsearch_index_optimization_timeout 1h
o 索引优化强制合并请求的全局超时。
o 默认值1h
• elasticsearch_index_optimization_jobs 20
o 同时运行的索引优化强制合并作业的最大数量。
o 如果使用大量不同的索引集则可能需要增加该数目。
o 默认值20
• index_ranges_cleanup_interval 1h
o 索引范围信息清除的时间间隔。此设置定义从数据库中清除过时的索引范围信息的频率。
o 默认值1h
• output_batch_size 500
o Elasticsearch输出的批次大小。这是Elasticsearch输出模块将立即获得并以批处理调用方式写入Elasticsearch的最大消息数。如果output_flush_interval几秒钟内未达到配置的批处理大小则将立即刷新所有可用的内容。请记住每个输出缓冲区处理器都管理自己的批处理并执行自己的批写调用。outputbuffer_processors变量
• output_flush_interval 1
o Elasticsearch输出的刷新间隔以秒为单位。这是两批写入Elasticsearch的消息之间的最长时间。仅在此时间段内您的最小消息数小于时才有效。output_batch_size * outputbuffer_processors
• output_fault_count_threshold 5
• output_fault_penalty_seconds 30
o 由于仅按需加载流输出因此将一遍又一遍尝试未初始化的输出。为避免这种情况以下配置选项定义了在有多少个故障之后在可配置的秒数内不会再次尝试输出。
• processbuffer_processors 5
• outputbuffer_processors 3
o 并行运行的处理器数。
o 如果缓冲区已满请增加此数字。
• outputbuffer_processor_keep_alive_time 5000
• outputbuffer_processor_threads_core_pool_size 3
• outputbuffer_processor_threads_max_pool_size 30
• udp_recvbuffer_sizes 1048576
o 所有消息输入例如SyslogUDPInput的UDP接收缓冲区大小。
• processor_wait_strategy blocking
o 等待策略描述缓冲区处理器如何在游标序列上等待。默认睡眠
o 可能的类型
yielding -降低性能和CPU使用率。
sleeping-降低性能和CPU使用率。安静时段后可能会发生延迟峰值。
blocking -高吞吐量低延迟更高的CPU使用率。
busy_spinning-避免可能引起延迟抖动的系统调用。线程可以绑定到特定的CPU内核时最好。
• ring_size 65536
o 内部环形缓冲区的大小。如果加注outputbuffer_processors不再有用请加注。
o 为了获得最佳性能环形缓冲区中的LogMessage对象应适合您的CPU L3高速缓存。
o 必须是2的幂。512、1024、2048等
• inputbuffer_ring_size 65536
• inputbuffer_processors 2
• inputbuffer_wait_strategy blocking
• message_journal_enabled true
o 启用基于磁盘的消息日志。
• message_journal_dir data/journal
o 用于存储消息日志的目录。该目录必须由Graylog独占使用并且不得包含除Graylog本身创建的文件以外的任何其他文件。
注意
如果为日记文件创建单独的分区并使用文件系统在根目录中创建“ lost found”之类的目录则需要为日记创建子目录。否则Graylog将记录一条错误消息指出日志已损坏并且Graylog无法启动。
• message_journal_max_age 12h
• message_journal_max_size 5gb
o 日志保留消息然后才能将其写入Elasticsearch。
o 最长12小时或5 GB以先到者为准。
o 在正常操作期间轴颈将较小。
• message_journal_flush_age 1m
o 此设置允许指定一个时间间隔在该时间间隔我们将强制对日志数据进行fsync。例如如果将其设置为1000则在经过1000 ms之后将进行fsync。
• message_journal_flush_interval 1000000
o 此设置允许指定一个时间间隔在该时间间隔我们将强制对日志数据进行fsync。例如如果将其设置为1我们将在每条消息之后进行fsync如果是5则每隔5条消息就会进行fsync。
• message_journal_segment_age 1h
o 此配置控制时间段在这段时间后即使段文件未满Graylog也会强制日志滚动以确保保留可以删除或压缩旧数据。
• message_journal_segment_size 100mb
注意
当日志已满并且继续接收消息时它将开始以FIFO队列的形式丢弃消息第一个丢弃的消息将是第一个插入的消息依此类推以此类推。
• async_eventbus_processors 2
o 专用于调度内部事件的线程数。默认值为2。
• lb_recognition_period_seconds 3
o 在将节点标记为DEAD以获得可能的负载平衡器与开始实际的关闭过程之间需要等待多少秒。如果前面没有状态检查负载均衡器则设置为0。
• lb_throttle_threshold_percentage 95
o 日志使用百分比该百分比触发从负载均衡器请求对此服务器节点进行节流的操作。如果未设置则该功能被禁用。
• stream_processing_timeout 2000
• stream_processing_max_faults 3
o 每个消息都与已配置的流匹配并且可能发生的情况是流包含的规则花费的运行时间非常少例如如果流中使用的规则表达式执行了过多的回溯操作。
o 这将影响整个服务器的处理。为了防止此类行为异常的流规则影响其他流Graylog限制了每个流的执行时间。
o 默认值如下所示超时以毫秒为单位。
o 如果与一个流匹配的流花费的时间超过了超时值并且发生的时间超过了禁用该流的“ max_faults”次并且在Web界面中显示了一条通知。
注意
从0.21开始Graylog服务器支持可插拔输出模块。这意味着可以将一条消息写入多个输出。下一个设置定义单个输出模块的超时包括所有消息最终到达的默认输出模块。
• output_module_timeout 10000
o 等待所有消息输出完成编写单个消息的时间以毫秒为单位。
• stale_master_timeout 2000
o 以毫秒为单位的时间在此时间之后将在启动时重新检查检测到的陈旧主节点。
• shutdown_timeout 30000
o Graylog等待所有线程在关闭时停止的时间以毫秒为单位。
MongoDB
• mongodb_uri mongodb://…
o MongoDB连接字符串。在此处输入您的MongoDB连接和身份验证信息。
o 有关详细信息请参见https://docs.mongodb.com/manual/reference/connection-string/。
o 请注意用户名或密码中的-signs必须替换为%2B。
o 例子
简单 mongodb://localhost/graylog
针对MongoDB服务器进行身份验证 mongodb_uri mongodb://grayloguser:secretlocalhost:27017/graylog
使用副本集而不是单个主机 mongodb://grayloguser:secretlocalhost:27017,localhost:27018,localhost:27019/graylog?replicaSetrs01
DNS种子列表设置为mongodbsrv://server.example.org/graylog。
• mongodb_max_connections 1000
o 如果遇到MongoDB连接问题请根据您的MongoDB服务器可以从单个客户端处理的最大连接数来增加此值。
• mongodb_threads_allowed_to_block_multiplier 5
o MongoDB连接乘数允许阻止的线程数。默认值5
o 如果mongodb_max_connections为100mongodb_threads_allowed_to_block_multiplier则为5则可能会阻塞500个线程。除此之外还会引发异常。
o http://api.mongodb.com/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
电子邮件
• transport_email_enabled false
• transport_email_hostname mail.example.com
• transport_email_port 587
• transport_email_use_auth true
• transport_email_use_tls true
o 使用STARTTLS启用SMTP以进行加密连接。
• transport_email_use_ssl false
o 为加密连接启用SSL上的SMTPSMTPS。
注意
确保仅启用这两个设置之一因为大多数或所有SMTP服务仅在同一端口上支持一种加密机制。大多数SMTP服务都支持具有STARTTLS的SMTP而大多数SMTP服务都已弃用SMTPS。false当您想通过未加密的连接发送时需要将两者都设置为。
• transport_email_auth_username youexample.com
• transport_email_auth_password secret
• transport_email_subject_prefix [graylog]
• transport_email_from_email graylogexample.com
• transport_email_web_interface_url https://graylog.example.com
o 指定此选项可在流警报邮件中包含流的链接。
o 这应该将完全限定的基本URL定义为您的Web界面与用户访问该URL的方式完全相同。
HTTP
• http_connect_timeout 5s
o 传出HTTP连接的默认连接超时。
o 值必须为正值在转换为毫秒时介于1和2147483647之间。
o 默认值5s
• http_read_timeout 10s
o 传出HTTP连接的默认读取超时。
o 值必须为正值在转换为毫秒时介于1和2147483647之间。
o 默认值10秒
• http_write_timeout 10s
o 传出HTTP连接的默认写超时。
o 值必须为正值在转换为毫秒时介于1和2147483647之间。
o 默认值10秒
• http_proxy_uri
o 传出HTTP连接的HTTP代理
注意
如果您配置代理请确保还配置“ http_non_proxy_hosts”选项以便与其他节点的内部HTTP连接不会通过代理。
• http_non_proxy_hosts
o 绕过配置的代理服务器应直接访问的主机列表。
o 这是用“”分隔的模式列表。模式可以以通配符“ *”开头或结尾。
o 匹配这些模式之一的任何主机都将通过直接连接而不是通过代理访问。
处理状态
注意
通常不需要调整处理状态的设置。
• processing_status_persist_interval 1s
o 服务器正在定期将处理状态信息写入数据库。此设置控制将数据写入数据库的频率。
o 值必须为正值并且不能小于一秒。
o 默认值1秒一秒
• processing_status_update_threshold 1m
o 配置检测过时的处理状态记录的阈值。在配置的阈值中尚未更新的所有记录都将被忽略。
o 值必须为正值并且不能小于一秒。
o 默认值1m一分钟
• processing_status_journal_write_rate_threshold 1
o 配置日志写速率阈值以选择处理状态记录。一分钟速率低于配置值的任何记录都将被忽略。取决于日记中的邮件数量
o 值必须为正值。
o 默认值1
脚本警报通知
• integrations_web_interface_uri https://graylog.example.com
o 指定此选项可在脚本参数或JSON中的标准中包括搜索页面链接显示相关警报消息。
o 这应该将完全限定的基本URL定义为您的Web界面与用户访问该URL的方式完全相同。
o 默认值无
• integrations_scripts_dir /usr/share/graylog-server/scripts
o 允许从中执行脚本的绝对或相对路径。
o 如果指定它将覆盖默认位置请参见“文件位置”文档。
其他
• gc_warning_threshold 1s
o 垃圾收集的阈值运行。如果GC的运行时间超过此阈值则会生成系统通知以警告管理员系统可能存在的问题。默认值为1秒。
• ldap_connection_timeout 2000
o 已配置的LDAP服务器例如ActiveDirectory的连接超时以毫秒为单位。
• disable_sigar false
o 禁止使用SIGAR收集系统统计信息。
• dashboard_widget_default_cache_time 10s
o 仪表板小部件的默认缓存时间。默认10秒最小1秒
• proxied_requests_thread_pool_size 32
o 对于某些与群集相关的REST请求该节点必须查询群集中的所有其他节点。这是可用于此目的的最大线程数。如果/cluster/*请求需要很长时间才能完成请增加它。
o 应该是如果你有一个高并发用户数。http_thread_pool_size * average_cluster_size
• default_events_index_prefix gl-events
o Graylog事件的默认索引前缀。
• default_system_events_index_prefix gl-system-events
o Graylog系统事件的默认索引前缀。
• enabled_tls_protocols TLSv1.2,TLSv1.3
o 配置系统范围内启用的TLS协议。仅在需要支持旧系统时才进行配置。我们将维持安全的默认设置。当前为TLS 1.2和TLS 1.3。注意Web界面不支持JDK 8的TLS 1.3
• content_packs_loader_enabled false
o 在Graylog的第一次启动时自动将内容包加载到“ content_packs_dir”中。
• content_packs_dir data/contentpacks
o 该目录包含应在Graylog的第一个开始处加载的内容包。
• content_packs_auto_install
o 以逗号分隔的内容包列表“ content_packs_dir”中的文件应在Graylog的第一个开始处应用。
o 默认值无六、优化
网络和 REST API
http_enable_gzip true 这会压缩 API 响应因此有助于减少整体往返时间。http_max_header_size 8192 HTTP 请求标头的最大大小以字节为单位。http_thread_pool_size 16 专门用于为 HTTP 接口提供服务的线程池的大小。http_enable_tls false 这通过 TLS 保护与 HTTP 接口的通信以防止请求伪造和窃听。 Elasticsearchelasticsearch_connect_timeout 10s 等待成功连接到 Elasticsearch HTTP 端口的最长时间。 默认值10 秒elasticsearch_socket_timeout 60s 等待从 Elasticsearch 服务器读回响应的最长时间。 默认值60 秒elasticsearch_idle_timeout -1s Elasticsearch 连接的最长空闲时间。如果超过这个值这个连接将被断开。 默认值无穷大elasticsearch_max_total_connections 200 Elasticsearch 的最大总连接数。 默认值200elasticsearch_max_total_connections_per_route 20 每个 Elasticsearch 路由的最大总连接数通常是指每个 Elasticsearch 服务器。 默认值20elasticsearch_max_retries 2 Graylog 将向 Elasticsearch 重试失败请求的最大次数。 默认值2 Rotationrotation_strategy count Graylog 将使用多个索引来存储文档。您可以配置它使用的策略来确定何时轮换当前活动的写入索引。
它支持多种轮换策略-count 每个索引的消息使用elasticsearch_max_docs_per_index - size 每个索引使用elasticsearch_max_size_per_index 有效值为count, size, 和 time; 默认是count。
elasticsearch_max_docs_per_index 20000000 在创建新索引之前Elasticsearch 索引中的近似最大文档数另见 no_retention 和 elasticsearch_max_number_of_indices. 如果您在rotation_strategy count 上面使用过请配置它。elasticsearch_max_size_per_index 1073741824 在创建新索引之前磁盘上每个 Elasticsearch 索引的近似最大大小以字节为单位另见no_retention 和elasticsearch_max_number_of_indices。默认为 1GB。 如果您在rotation_strategy size 上面使用过请配置它。elasticsearch_max_time_per_index 1d 创建新 Elasticsearch 索引之前的近似最长时间另见 no_retention 和elasticsearch_max_number_of_indices。默认为 1 天。 如果您在rotation_strategy time 上面使用过请配置它。
请注意这个轮转周期并不看收到的消息中指定的时间而是使用真实的时钟值来决定何时轮转索引 使用持续时间和表示所需单位的后缀指定时间
1w 1 周1d 1 天12h 12 小时 允许的后缀是d 天、 h 小时、m 分钟、 s 秒。elasticsearch_max_number_of_indices 20 你想保留多少索引
MongoDB
mongodb_max_connections 1000 如果您遇到 MongoDB 连接问题请根据您的 MongoDB 服务器可以从单个客户端处理的最大连接数增加此值。mongodb_threads_allowed_to_block_multiplier 5 MongoDB 连接乘数允许阻塞的线程数。默认值5 如果mongodb_max_connections 是100并且mongodb_threads_allowed_to_block_multiplier 是5那么500个线程可以阻塞。不止于此将抛出异常。
七、升级
升级 Graylog 时不要跳过主要版本。例如要从 4.0.x 升级到 4.3.x您必须先升级到最新的次要版本 4.0.x、4.1.x 和 4.2.x然后再升级到 4.3.x。
server.conf在重新启动 Graylog 服务器之前您可能还需要对 Graylog 配置文件执行手动编辑。
确保在升级 Graylog 堆栈的任何组件之前备份 MongoDB 和 Elasticsearch/OpenSearch 数据库状态以创建回滚选项。
在准备升级 Graylog 时您必须首先满足任何软件先决条件。MongoDB 和 Elasticsearch/OpenSearch 必须至少运行您希望升级到的 Graylog 版本所需的最低要求版本。 请参考下表确定您的版本兼容性要求
八、监控
使用zabbix 监控graylog,在zabbix官方网站上有graylog的监控模板 地址https://share.zabbix.com/templates/applications-monitoring-system-template-graylog-node-monitoring-using-zabbix/ 监控包获取 github地址为https://github.com/bezarsnba/zabbix-graylog-monitoring Python版本只少是大于等于python3.4版本
配置zabbix-agent
配置python
下载monitoring-graylog.py文件并将其复制到服务器上的新建的scripts文件夹
更改monitoring-graylog.py文件中的变量分别在151623行修改自己graylog的配置 通过传递lldgraylognode参数运行脚本
显示结果 说明配置成功 下载user_parameter_graylog.conf并复制到/etc/zabbix/zabboix_agentd.d/下 然后编辑文件将/usr/bin/python3.4替换为/usr/bin/python3 zabbix服务器上导入模板 根据实际情况选择版本模板导入模板上没有图形但是有很多自动发现的监控项自己绘制图形即可 然后再最新数据中确认获取到最新数据数值表明监控生效 九、常见问题及处理
1、graylog启动但是未监听到9000端口 查看日志ERROR [VersionProbe] Unable to retrieve version from Elasticsearch node: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:9200. - Connection refused.
ES服务状态查询 配置文件es配置排查
2、Graylog日志查询超过10000限制问题 在使用graylog时默认分页查询存在限制真实使用不能满足需要我们手动处理。当查询超过执行长度时会出现一下错误提示
While retrieving data for this widget, the following error(s) occurred: Unable to perform search query: Elasticsearch exception [typeillegal_argument_exception, reasonResult window is too large, from size must be less than or equal to: [10000] but was [3382050]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.]. Elasticsearch检索问题 Elasticsearch的max_result_window限制 问题描述 查询超过10000页Elasticsearch出现异常
Elasticsearch exception [typeillegal_argument_exception, reasonResult window is too large, from size must be less than or equal to: [10000] but was [7135950]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.].
解决方案 方案一修改配置文件重启Elasticsearch服务【Elasticsearch5.x版本以后不支持】 修改Elasticsearch 集群中的 配置文件 config/elasticsearch.yml 在配置文件最后增加一行如下
index.max_result_window: 1000000
方案二通过接口修改具体的index 具体操作命令如下比如设置可查询 1000000 条数据其中 alarm 是index名称 推荐使用全局修改方式。
# 修改个别索引
PUT alarm/_settings
{ max_result_window : 1000000
}
# 修改全局 100W
PUT _settings
{index: {max_result_window: 1000000}
}
Curl方式
curl -H Content-Type: application/json -XPUT http://127.0.0.1:9200/_all/_settings -d { index : { max_result_window : 1000000}}3、Deflector exists as an index and is not an alias 官方的步骤 -停止所有Graylog节点 -可选如果您想保留已摄取的消息请通过Elasticsearch reindex API将其重新索引到具有最大数量的Elasticsearch索引中例如如果您想修复偏转器graylog_deflector请使用graylog_23。 -通过Elasticsearch Delete index API删除graylog_deflector索引。 -将action.auto_create_index:false添加到集群中所有Elasticsearch节点的配置文件中并重新启动这些Elasticearch节点有关详细信息请参阅Elasticsearch索引API-自动创建索引和创建索引。 -启动Graylog主节点。 -手动旋转维护下拉菜单中系统/索引/索引集页面上索引集的活动写入索引。 -可选启动所有剩余的Graylog从属节点。
实际上我们可以不按照官方的做法以下是一些实践前提是现有的数据不是很重要可以删除的
可以不用停止graylog server修改es 配置添加action.auto_create_index: false注意需要重启es集群理论上单台重启不会有影响的和部署模型也有关系删除*_deflector 索引可以通过api以及ui手工 rotate active write