在使用GrayLog采集Linux服务器系统日志的过程,在GrayLog 查询界面source列中只能看到主机名, 当主机数量很多时,特别是多个主机有相同主机名时,这时就无法区分日志来自于是哪一台主机了
比如多台主机的hostname都为默认的localhost
(图片可点击放大查看)
为了解决这个问题,我的想法是能否将source这一列能否用主机IP来展示。
经过翻阅GrayLog社区上的文章,最终找到解决办法 具体文章链接
https://community.graylog.org/t/use-source-ip-for-source-field/20684
(图片可点击放大查看)
(图片可点击放大查看)
具体的配置方法如下
pipeline名字为changehostname_to_ip
(图片可点击放大查看)
(图片可点击放大查看)
(图片可点击放大查看)
描述为
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
并点击应用
(图片可点击放大查看)
(图片可点击放大查看)
(图片可点击放大查看)
(图片可点击放大查看)
当匹配到pipeline中的规则中,就按规则中语法进行处理
可以通过Throughput查看匹配到规则的吞吐量
(图片可点击放大查看)
(图片可点击放大查看)
(图片可点击放大查看)
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'