介绍 Logstash解析系统日志错误:
如果大家使用Logstash自带的解析规则,在某些情况下会出现解析系统日志失败的情况,原因是因为:系统主机名包含下划线时会解析失败,造成无法识别主机名字段。
主要是生产环境有些网络设备的主机名有带下划线_ ,而合法在主机名是没有不允许下划线的。
使用环境:Rocky Linux 8 、 ELK 8.x
HostName主要规则
主机名只允许包含ascii字符里的数字0-9,字母a-zA-Z,连字符-。其他都不允许。例如,不允许出现其他标点符号,不允许空格,不允许下划线,不允许中文字符。
主机名的开头和结尾字符不允许是连字符。
主机名强烈建议不要用数字开头,尽管这一条不是强制的。甚至不要使用只包含可解释为16进制字符的字符串,例如”beef”。
建议不要使用计算机领域的特殊的词汇,例如,up。
给主机命名通常不考虑字母大小写问题,并且只用小写字母而不用大写字母。
给主机命名,建议使用合法的单词,这样方便记忆。因为主机名是在一个domain的范围内唯一即可,通常不必担心重复问题。
修改 1 2 3 4 5 6 7 find /usr/ share/logstash/ vendor/ -name grok-patterns/usr/ share/logstash/ vendor/bundle/ jruby/2.6.0/g ems/logstash-patterns-core-4.3.4/ patterns/ecs-v1/g rok-patterns/usr/ share/logstash/ vendor/bundle/ jruby/2.6.0/g ems/logstash-patterns-core-4.3.4/ patterns/legacy/g rok-patterns
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 vim /usr/share/logstash/vendor/bundle/jruby/2 .6 .0 /gems/logstash-patterns-core-4 .3 .4 /patterns/ecs-v1/grok-patternsvim /usr/share/logstash/vendor/bundle/jruby/2 .6 .0 /gems/logstash-patterns-core-4 .3 .4 /patterns/legacy/grok-patternsHOSTNAME \b(?:[0 -9 A-Za-z][0 -9 A-Za-z-]{0 ,62 })(?:\.(?:[0 -9 A-Za-z][0 -9 A-Za-z-]{0 ,62 }))*(\.?|\b) HOSTNAME \b(?:[0 -9 A-Za-z][0 -9 A-Za-z_-]{0 ,62 })(?:\.(?:[0 -9 A-Za-z][0 -9 A-Za-z_-]{0 ,62 }))*(\.?|\b)
PS:如果使用Filebeat的模块,也会出现这个问题。
1 2 3 4 5 6 system ctl restart logstash.service system ctl status logstash.service
PS:如果Logstash 更新了,也需要再次修改。
参考 https://github.com/logstash-plugins/logstash-output-elasticsearch/issues/400
https://zhuanlan.zhihu.com/p/101154203
https://blog.csdn.net/wanghuiict/article/details/70038140