如何在Logstash中截断日志消息中的指定前缀内容
移除Logstash中Syslog日志的头部前缀
你可以通过在Logstash的filter阶段添加mutate插件,结合正则替换来移除日志头部的前缀内容。
具体配置修改
在你的Logstash配置里,给filter块添加针对性的正则替换规则:
input { syslog { port => 9771 type => "syslog" } } filter { # 仅对包含www.envoyproxy.io的日志做处理 if "www.envoyproxy.io" in [message] { mutate { gsub => [ # 正则匹配开头的syslog头部并替换为空 "message", "^<\d+>\w+\s+\d+\s+\d+:\d+:\d+\s+\w+\[\d+\]:\s+", "" ] } } } output { file { path => "/var/log/logstash/%{+YYYY-MM-dd}/logstash-%{+HH}.log" } if "www.envoyproxy.io" in [message] { file { path => "/var/log/logstash/%{+YYYY-MM-dd}/test-%{+HH}.log" codec => line { format => "%{message}" } } } }
正则说明
这个正则表达式^<\d+>\w+\s+\d+\s+\d+:\d+:\d+\s+\w+\[\d+\]:\s+会精准匹配日志开头的前缀部分:
^<\d+>:匹配开头的优先级标识(比如<30>)\w+\s+\d+:匹配月份和日期(比如Mar 8)\d+:\d+:\d+:匹配时间(比如11:42:45)\w+\[\d+\]:\s+:匹配容器ID加进程号的部分(比如2867370d06d5[8119]:)
修改后,Logstash会先处理message字段,移除指定前缀后再写入test-*.log文件。
内容的提问来源于stack exchange,提问作者Yves
相关产品推荐
相关产品推荐

