我正在查看 ELK 堆栈中的一些 syslog 日志文件,并注意到所有 syslog_severity 字段都是“notice”,而我可以在日志文件中验证它们不是“notice”。似乎 Logstash 默认将 syslog_severity 设置为 notice。我的 logstash 过滤器配置中有以下内容:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "<%{NONNEGINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
我已经看过提到的解决方案这里但如果你看一下我的过滤器配置文件,你就会发现这并不适用于我的情况。我尝试了上述解决方案这里并重新启动我的logstash服务
sudo service logstash restart
我还尝试重新启动 ELK 堆栈中的其余服务,但仍然收到所有 syslog_severity 字段的通知。您知道过滤器中需要更改什么吗?
我的日志消息采用以下格式:
<134>1 2015-01-01T11:12:23.180242-02:00 message