logstash接收syslog,无论发送端是何种级别,接收到的severity" => 0, "facility" => 0, "priority" => 0,始终是0.这个有什么要注意的嘛,哪里需要设置吗。
logstash 版本6.3.2,logstash启动配置文件没有任何改动,syslog配置文件syslog.yml如下:
input {
syslog {
port => 514
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
logstash 版本6.3.2,logstash启动配置文件没有任何改动,syslog配置文件syslog.yml如下:
input {
syslog {
port => 514
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
5 个回复
kennywu76 - Wood
赞同来自: chinaxushi
对应的正则表达式为:
POSINT \b(?:[1-9][0-9]*)\b
SYSLOGLINE %{SYSLOGBASE2} %{GREEDYDATA:message}
SYSLOGBASE2 (?:%{SYSLOGTIMESTAMP:timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource}+(?: %{SYSLOGPROG}:|)
....
如果你的交换机发出的syslog格式不符合上面的标准,可能就无法正确解析。 这样你需要自定义一个grok pattern来解析。
参考: https://www.elastic.co/guide/e ... ttern
chinaxushi
赞同来自:
zqc0512 - andy zhou
赞同来自:
chinaxushi
赞同来自:
我这两天自己也看了一下,现在的判断是"message" => "<20>Hello,this is a syslog message!",这个信息中<>括号里的priority没有解析出来,不知道为什么。
按照文档里说的<%{POSINT:priority}>%{SYSLOGLINE},应该是可以解析出来的呀。
chinaxushi
赞同来自:
但是感觉很奇怪,标准Cisco和用测试工具发的,原先都不行。但是用kiwi接收都可以的,都能识别。看来logstash在syslog适用范围和匹配度上,还是有差距呀。