96SEO 2026-02-19 20:05 0
ylog原理架构三、日志系统对比四、Graylog部署传统部署MongoDB部署OS或者ES部署Garylog部署容器化部署

Graylog是一个简单易用、功能较全面的日志管理工具Graylog也采用Elasticsearch作为存储和索引以保障性能MongoDB用来存储少量的自身配置信息master-node模式具有很好的扩展性UI上自带的基础查询与分析功能比较实用且高效支持LDAP、权限控制并有丰富的日志类型和标准如syslogGELF并支持基于日志的报警。
在日志接收方面通常是网络传输可以是TCP也可以是UDP在实际生产环境量级较大多数采用UDP也可以通过MQ来消费日志。
部署维护简单资源占用较少查询语法简单易懂(对比ES的语法…)内置简单的告警可以将搜索结果导出为
最简单的架构就是单机部署复杂的也是部署集群模式架构图示如下所示。
我们可以看到其中包含了三个组件分别是
通过Streams进行规则匹配分流对Stream可以配置Pipeline进行数据过滤最终数据会到到不同的index中
根据新建index时配置的策略在elasticsearch的索引中
为了让大家能够对graylog有一个完整的认识做了一个思维导图。
可以看出graylog的设计是非常全面的从日志的采集、数据分类管理、数据清洗、调用第三方API都考虑到了。
组件名称功能介绍主要特点Dashboards数据面板固定展示主要是用来保存特定搜索条件的数据面板Search日志信息条件搜索关键字搜索、时间搜索、搜索保存、创建面板、分组查询、结果导出、查询高亮显示、自定义时间Alerts设置告警提示方式支持邮件告警、HTTP回调和自定义脚本触发Inputs日志数据抓取接收部署
主动抓取或使用其他服务被动上报Extractors日志数据格式转换json
解析、时间戳解析、正则解析Streams日志信息分类分组设置日志分类条件并发送到不同的索引文件中去Indices持久化数据存储设置数据存储性能Outputs日志数据的转发解析的
集群或服务Pipelines日志数据的过滤建立数据清洗的过滤规则、字段添加删除、条件过滤、自定义函数等Sidecar轻量级的日志采集器相当于
对比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、搜索语法简单比如
避免直接输入elasticsearch搜索json语法6、搜索条件可以导出为elasticsearch的搜索json文本方便直接开发调用elasticsearch
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的数据。
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.14.tgztar
mongodb-linux-x86_64-rhel70-5.0.14.tgz
mongodb-linux-x86_64-rhel70-5.0.14
dbpath/root/graylog/single/data
logpath/root/graylog/single/logs/mongodb.log
#绑定服务IP若绑定127.0.0.1则只能本机访问不指定则默认本地所有IPmongod
https://artifacts.opensearch.org/publickeys/opensearch.pgp
https://artifacts.opensearch.org/releases/bundle/opensearch/2.4.1/opensearch-2.4.1-linux-x64.tar.gz
opensearch-2.4.1-linux-x64.tar.gz
https://artifacts.elastic.co/GPG-KEY-elasticsearch
/etc/yum.repos.d/elasticsearch.repo
baseurlhttps://artifacts.elastic.co/packages/oss-7.x/yum
gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch
/etc/elasticsearch/elasticsearch.yml
https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.rpm
阅读配置文件中的说明并根据需要进行编辑位于/etc/graylog/server/server.conf.
另外添加password_secret和root_password_sha2因为这些是强制性的没有它们
Graylog您应该设置http_bind_address您可以连接到的机器的公共主机名或公共
https://hub.docker.com/_/mongo/mongodb:container_name:
https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.htmlelasticsearch:container_name:
docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2volumes:-
es_data:/usr/share/elasticsearch/dataenvironment:-
https://hub.docker.com/r/graylog/graylog/graylog:container_name:
GRAYLOG_PASSWORD_SECRETsomepasswordpepper-
GRAYLOG_ROOT_PASSWORD_SHA28c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918-
GRAYLOG_HTTP_EXTERNAL_URIhttp://192.168.3.83:9000/
https://docs.docker.com/engine/admin/volumes/volumes/
如果您正在运行多个Graylog服务器实例则只需选择一个graylog-server节点作为主节点。
该节点将执行从属节点不会执行的定期和维护操作。
每个从属节点都将像主节点一样接受消息。
如果集群中已存在主节点则节点将退回到从属模式。
自动生成的节点ID将存储在此文件中并在重新启动后读取。
如果要从初始化脚本或类似脚本启动Graylog服务器则在此处使用绝对文件路径是个好主意。
您必须设置一个用于密码加密和加密的秘密。
如果未设置服务器将拒绝启动。
至少使用64个字符。
如果您运行多个graylog-server节点请确保password_secret对所有节点都使用相同的节点
您将用于首次登录的密码的SHA2哈希。
将此设置为生成的SHA2哈希您将能够使用用户名admin和密码yourpassword登录Web界面。
echo
您必须为根用户指定一个哈希密码您只需要在初始设置系统时使用以防丢失与身份验证后端的连接。
不能使用API或通过Web界面更改此密码。
如果需要更改请在此文件中对其进行修改。
httpbindaddress/o此Graylog节点的HTTPURI用于与该群集中的其他Graylog节点以及所有使用GraylogWeb界面的客户端进行通信。
oURI将在集群发现API中发布以便其他Graylog节点将能够找到并连接到该Graylog节点。
o如果此Graylog节点在
http_bind_address以外的其他网络接口上可用则必须使用此配置设置例如如果计算机具有多个网络接口或在NAT网关后面
如果http_bind_address包含通配符IPv4地址0.0.0.0http_publish_uri则将使用此计算机的第一个非环回IPv4地址填充。
httppublishurioGraylogWeb界面将使用Graylog的公共URI与GraylogRESTAPI进行通信。
o如果Graylog在反向代理或负载均衡器后面运行则通常必须指定外部GraylogURI并且它将用于生成在GraylogRESTAPI中寻址实体的URL请参阅http_bind_address
使用Graylog收集器时此URI将用于接收心跳消息并且所有收集器都必须可以访问该URI。
这样可以确保与具有TLS的HTTP接口的通信安全以防止伪造和窃听请求。
逗号分隔的受信任代理列表允许使用X-Forwarded-For标头设置客户端地址。
可能是子网也可能是主机。
http://node1:9200,http://user:passwordnode2:19200
需要指定为Elasticsearch节点的http端口的有效URI的逗号分隔列表。
如果您的一个或多个Elasticsearch主机需要身份验证请在每个需要身份验证的节点URI中包括凭据。
Elasticsearch连接的最大空闲时间。
如果超出此范围则该连接将被断开。
elasticsearch_max_total_connections
elasticsearch_max_total_connections_per_route
每个Elasticsearch路由的最大总连接数通常意味着每个Elasticsearch服务器。
Graylog将重试失败的请求到Elasticsearch的最大次数。
elasticsearch_discovery_enabled
通过节点信息启用自动Elasticsearch节点发现请参阅Elasticsearch参考»集群API»节点信息。
如果Elasticsearch需要使用Shield进行身份验证则自动节点发现将不起作用。
Clusters托管的上此设置必须为false并且应谨慎使用。
万一与ES的连接出现问题这应该是第一个禁用的选项。
有关更多详细信息请参见自动节点发现。
根据其自定义属性过滤发现中是否包含Elasticsearch节点请参阅《Elastic
elasticsearch_discovery_frequency
elasticsearch_discovery_default_scheme
连接到Elasticsearch发现的节点时设置默认方案。
可用选项httphttps
elasticsearch_compression_enabled
elasticsearch_use_expect_continue
为Elasticsearch索引请求启用“期望100个连续”标头。
如果禁用此选项则Graylog无法正确处理HTTP
2.0中的数据库。
升级时请确保将它们设置为以前的1.x设置以便将它们迁移到数据库
Graylog将使用多个索引来存储文档。
您可以配置该策略来确定何时旋转当前活动的写索引。
它支持多种轮换策略-count每个索引使用的消息elasticsearch_max_docs_per_index
-size每个索引使用elasticsearch_max_size_per_index
elasticsearch_max_docs_per_index
在创建新索引之前Elasticsearch索引中的大约最大文档数另请参见no_retention和elasticsearch_max_number_of_indices。
如果您在上面使用过请进行配置。
rotation_strategy
elasticsearch_max_size_per_index
在创建新索引之前磁盘上每个Elasticsearch索引的大约最大大小以字节为单位另请参见no_retention和elasticsearch_max_number_of_indices。
默认值为1GB。
如果您在上面使用过请进行配置。
rotation_strategy
elasticsearch_max_time_per_index
大约在创建新的Elasticsearch索引之前的最长时间另请参阅no_retention和elasticsearch_max_number_of_indices。
默认值为1天。
如果您在上面使用过请进行配置。
rotation_strategy
请注意该轮换周期不考虑接收到的消息中指定的时间而是使用实际时钟值来决定何时轮换索引
elasticsearch_max_number_of_indices
elasticsearch_disable_version_check
禁用检查Elasticsearch版本是否与此Graylog版本兼容。
在不受支持和未经测试的Elasticsearch版本中使用Graylog可能会导致数据丢失
在该节点上禁用消息保留即禁用Elasticsearch索引轮换。
2.2.0中的数据库。
升级时请确保将它们设置为以前的设置以便将它们迁移到数据库。
此设置在第一次启动时被读取一次成为数据库中的初始设置。
索引的分片数。
一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。
如果您有一个节点请将其设置为1。
索引的副本数。
一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。
如果您有一个节点请将其设置为0。
elasticsearch_shards并且elasticsearch_replicas仅适用于新创建的索引。
由Graylog管理的所有Elasticsearch索引和索引别名的前缀。
Graylog用于应用强制索引映射的Elasticsearch索引模板的名称。
分析器令牌器用于消息和full_message字段。
通常“标准”过滤器是一个好主意。
//www.elastic.co/guide/zh-CN/elasticsearch/reference/5.6/analysis.html
禁用索引循环后优化Elasticsearch索引。
在使用大索引的频繁使用的系统上这可能会给Elasticsearch带来一些负担但会降低搜索性能。
默认设置是优化循环索引。
index_optimization_max_num_segments
index_optimization_max_num_segments。
在具有大量索引的频繁使用的系统上更高的数量可能会从Elasticsearch承受一些负担但会降低搜索性能。
预设值为1。
allow_leading_wildcard_searches
是否要允许使用前导通配符进行搜索这可能会非常耗费资源因此应谨慎启用。
是否要突出显示搜索根据消息的大小这可能会占用大量内存只有在确保您的Elasticsearch群集具有足够的内存后才能启用它。
基于尽力限制Elasticsearch操作的运行时间Elasticsearch请求的全局请求超时例如在搜索索引创建或索引时间范围计算期间。
elasticsearch_index_optimization_timeout
elasticsearch_index_optimization_jobs
索引范围信息清除的时间间隔。
此设置定义从数据库中清除过时的索引范围信息的频率。
Elasticsearch输出的批次大小。
这是Elasticsearch输出模块将立即获得并以批处理调用方式写入Elasticsearch的最大消息数。
如果output_flush_interval几秒钟内未达到配置的批处理大小则将立即刷新所有可用的内容。
请记住每个输出缓冲区处理器都管理自己的批处理并执行自己的批写调用。
outputbuffer_processors变量
Elasticsearch输出的刷新间隔以秒为单位。
这是两批写入Elasticsearch的消息之间的最长时间。
仅在此时间段内您的最小消息数小于时才有效。
output_batch_size
由于仅按需加载流输出因此将一遍又一遍尝试未初始化的输出。
为避免这种情况以下配置选项定义了在有多少个故障之后在可配置的秒数内不会再次尝试输出。
outputbuffer_processor_keep_alive_time
outputbuffer_processor_threads_core_pool_size
outputbuffer_processor_threads_max_pool_size
所有消息输入例如SyslogUDPInput的UDP接收缓冲区大小。
sleeping-降低性能和CPU使用率。
安静时段后可能会发生延迟峰值。
busy_spinning-避免可能引起延迟抖动的系统调用。
线程可以绑定到特定的CPU内核时最好。
内部环形缓冲区的大小。
如果加注outputbuffer_processors不再有用请加注。
为了获得最佳性能环形缓冲区中的LogMessage对象应适合您的CPU
用于存储消息日志的必须由Graylog独占使用并且不得包含除Graylog本身创建的文件以外的任何其他文件。
如果为日记文件创建单独的分区并使用文件系统在根则需要为日记创建子目录。
否则Graylog将记录一条错误消息指出日志已损坏并且Graylog无法启动。
此设置允许指定一个时间间隔在该时间间隔我们将强制对日志数据进行fsync。
例如如果将其设置为1000则在经过1000
此设置允许指定一个时间间隔在该时间间隔我们将强制对日志数据进行fsync。
例如如果将其设置为1我们将在每条消息之后进行fsync如果是5则每隔5条消息就会进行fsync。
此配置控制时间段在这段时间后即使段文件未满Graylog也会强制日志滚动以确保保留可以删除或压缩旧数据。
当日志已满并且继续接收消息时它将开始以FIFO队列的形式丢弃消息第一个丢弃的消息将是第一个插入的消息依此类推以此类推。
在将节点标记为DEAD以获得可能的负载平衡器与开始实际的关闭过程之间需要等待多少秒。
如果前面没有状态检查负载均衡器则设置为0。
lb_throttle_threshold_percentage
日志使用百分比该百分比触发从负载均衡器请求对此服务器节点进行节流的操作。
如果未设置则该功能被禁用。
每个消息都与已配置的流匹配并且可能发生的情况是流包含的规则花费的运行时间非常少例如如果流中使用的规则表达式执行了过多的回溯操作。
这将影响整个服务器的处理。
为了防止此类行为异常的流规则影响其他流Graylog限制了每个流的执行时间。
如果与一个流匹配的流花费的时间超过了超时值并且发生的时间超过了禁用该流的“
从0.21开始Graylog服务器支持可插拔输出模块。
这意味着可以将一条消息写入多个输出。
下一个设置定义单个输出模块的超时包括所有消息最终到达的默认输出模块。
以毫秒为单位的时间在此时间之后将在启动时重新检查检测到的陈旧主节点。
MongoDB连接字符串。
在此处输入您的MongoDB连接和身份验证信息。
有关详细信息请参见https://docs.mongodb.com/manual/reference/connection-string/。
mongodb://grayloguser:secretlocalhost:27017/graylog
mongodb://grayloguser:secretlocalhost:27017,localhost:27018,localhost:27019/graylog?replicaSetrs01
DNS种子列表设置为mongodbsrv://server.example.org/graylog。
如果遇到MongoDB连接问题请根据您的MongoDB服务器可以从单个客户端处理的最大连接数来增加此值。
mongodb_threads_allowed_to_block_multiplier
如果mongodb_max_connections为100mongodb_threads_allowed_to_block_multiplier则为5则可能会阻塞500个线程。
除此之外还会引发异常。
http://api.mongodb.com/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
确保仅启用这两个设置之一因为大多数或所有SMTP服务仅在同一端口上支持一种加密机制。
大多数SMTP服务都支持具有STARTTLS的SMTP而大多数SMTP服务都已弃用SMTPS。
false当您想通过未加密的连接发送时需要将两者都设置为。
transport_email_web_interface_url
这应该将完全限定的基本URL定义为您的Web界面与用户访问该URL的方式完全相同。
http_non_proxy_hosts”选项以便与其他节点的内部HTTP连接不会通过代理。
匹配这些模式之一的任何主机都将通过直接连接而不是通过代理访问。
processing_status_persist_interval
服务器正在定期将处理状态信息写入数据库。
此设置控制将数据写入数据库的频率。
processing_status_update_threshold
配置检测过时的处理状态记录的阈值。
在配置的阈值中尚未更新的所有记录都将被忽略。
processing_status_journal_write_rate_threshold
配置日志写速率阈值以选择处理状态记录。
一分钟速率低于配置值的任何记录都将被忽略。
取决于日记中的邮件数量
指定此选项可在脚本参数或JSON中的标准中包括搜索页面链接显示相关警报消息。
这应该将完全限定的基本URL定义为您的Web界面与用户访问该URL的方式完全相同。
/usr/share/graylog-server/scripts
垃圾收集的阈值运行。
如果GC的运行时间超过此阈值则会生成系统通知以警告管理员系统可能存在的问题。
默认值为1秒。
已配置的LDAP服务器例如ActiveDirectory的连接超时以毫秒为单位。
dashboard_widget_default_cache_time
proxied_requests_thread_pool_size
对于某些与群集相关的REST请求该节点必须查询群集中的所有其他节点。
这是可用于此目的的最大线程数。
如果/cluster/*请求需要很长时间才能完成请增加它。
应该是如果你有一个高并发用户数。
http_thread_pool_size
default_system_events_index_prefix
配置系统范围内启用的TLS协议。
仅在需要支持旧系统时才进行配置。
我们将维持安全的默认设置。
当前为TLS
content_packs_dir”中的文件应在Graylog的第一个开始处应用。
响应因此有助于减少整体往返时间。
http_max_header_size
请求标头的最大大小以字节为单位。
http_thread_pool_size
Elasticsearchelasticsearch_connect_timeout
默认值无穷大elasticsearch_max_total_connections
默认值200elasticsearch_max_total_connections_per_route
将使用多个索引来存储文档。
您可以配置它使用的策略来确定何时轮换当前活动的写入索引。
每个索引的消息使用elasticsearch_max_docs_per_index
每个索引使用elasticsearch_max_size_per_index
elasticsearch_max_docs_per_index
elasticsearch_max_number_of_indices.
上面使用过请配置它。
elasticsearch_max_size_per_index
和elasticsearch_max_number_of_indices。
默认为
上面使用过请配置它。
elasticsearch_max_time_per_index
和elasticsearch_max_number_of_indices。
默认为
请注意这个轮转周期并不看收到的消息中指定的时间而是使用真实的时钟值来决定何时轮转索引
秒。
elasticsearch_max_number_of_indices
服务器可以从单个客户端处理的最大连接数增加此值。
mongodb_threads_allowed_to_block_multiplier
是100并且mongodb_threads_allowed_to_block_multiplier
监控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
下载monitoring-graylog.py文件并将其复制到服务器上的新建的scripts文件夹
更改monitoring-graylog.py文件中的变量分别在151623行修改自己graylog的配置
下载user_parameter_graylog.conf并复制到/etc/zabbix/zabboix_agentd.d/下
然后编辑文件将/usr/bin/python3.4替换为/usr/bin/python3
根据实际情况选择版本模板导入模板上没有图形但是有很多自动发现的监控项自己绘制图形即可
localhost/[0:0:0:0:0:0:0:1]:9200.
在使用graylog时默认分页查询存在限制真实使用不能满足需要我们手动处理。
当查询超过执行长度时会出现一下错误提示
[typeillegal_argument_exception,
Elasticsearch的max_result_window限制
[typeillegal_argument_exception,
方案一修改配置文件重启Elasticsearch服务【Elasticsearch5.x版本以后不支持】
http://127.0.0.1:9200/_all/_settings
-可选如果您想保留已摄取的消息请通过Elasticsearch
API将其重新索引到具有最大数量的Elasticsearch索引中例如如果您想修复偏转器graylog_deflector请使用graylog_23。
-将action.auto_create_index:false添加到集群中所有Elasticsearch节点的配置文件中并重新启动这些Elasticearch节点有关详细信息请参阅Elasticsearch索引API-自动创建索引和创建索引。
-手动旋转维护下拉菜单中系统/索引/索引集页面上索引集的活动写入索引。
实际上我们可以不按照官方的做法以下是一些实践前提是现有的数据不是很重要可以删除的
false注意需要重启es集群理论上单台重启不会有影响的和部署模型也有关系删除*_deflector
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback