首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用pipeline实现GrayLog中用日志源IP地址区分主机

在使用GrayLog采集Linux服务器系统日志的过程,在GrayLog 查询界面source列中只能看到主机名, 当主机数量很多时,特别是多个主机有相同主机名时,这时就无法区分日志来自于是哪一台主机了

比如多台主机的hostname都为默认的localhost

(图片可点击放大查看)

为了解决这个问题,我的想法是能否将source这一列能否用主机IP来展示。

经过翻阅GrayLog社区上的文章,最终找到解决办法 具体文章链接

代码语言:javascript
复制
https://community.graylog.org/t/use-source-ip-for-source-field/20684

(图片可点击放大查看)

(图片可点击放大查看)

具体的配置方法如下

1、添加一个pipeline

pipeline名字为changehostname_to_ip

(图片可点击放大查看)

(图片可点击放大查看)

2、创建Pipeline Rules

(图片可点击放大查看)

描述为

代码语言:javascript
复制
replace source with sending IP

Rule source 规则语法如下

代码语言:javascript
复制
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后台服务器上执行如下语句解决

代码语言:javascript
复制
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'
下一篇
举报
领券