在使用GrayLog采集Linux服务器系统日志的过程,在GrayLog 查询界面source列中只能看到主机名, 当主机数量很多时,特别是多个主机有相同主机名时,这时就无法区分日志来自于是哪一台主机了
比如多台主机的hostname都为默认的localhost
为了解决这个问题,我的想法是能否将source这一列能否用主机IP来展示。
经过翻阅GrayLog社区上的文章,最终找到解决办法 具体文章链接
https://community.graylog.org/t/use-source-ip-for-source-field/20684
具体的配置方法如下
1、添加一个pipeline
pipeline名字为changehostname_to_ip
2、创建Pipeline Rules
描述为
replace source with sending IP
Rule source 规则语法如下
rule "Replace source with sending IP" when has_field("message") then set_field("source", to_string($message.gl2_remote_ip)); end
并点击应用
3、把pipeline应用到stream中
4、在stage0中应用rules规则
当匹配到pipeline中的规则中,就按规则中语法进行处理
可以通过Throughput查看匹配到规则的吞吐量
5、验证效果
Tips
elasticsearch index.max_result_window数量过小问题
GrayLog后台服务器上执行如下语句解决
curl -XPUT -H 'Content-Type: application/json' -d '{"index_patterns": ["graylog_*"], "settings": {"index.max_result_window": 9000000}}' 'http://127.0.0.1:9200/_template/template_1'