关于传递给zabbix trapper的ELK-Logstash关键字过滤器,我如何配置logstash过滤器以根据每个接收到的消息行中的关键字向zabbix trapper发送特定消息? 我已经完全配置了zabbix-server trapper,并且消息zabbix-sender在客户端服务器上可以正常工作,但是目前我看来过滤器配置有些困难。 我的logstash基于6.4,Zabbix服务器基于3.4,当前logstash过滤器配置如下:
filter {
if [prospector][type] == "log" {
grok {
match => { "message" => "%{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" ]
}
}
}
谢谢。
答案 0 :(得分:0)
是的,现有的grok过滤器可以正常发送邮件;但是,如果我想对诸如“错误”之类的关键字进行特定过滤,以通过zabbix-trapper接口将消息发送到zabbix-server的输出,我该怎么办?我本人进行了一些研究,并进行了数小时的尝试,但很遗憾,此方法无法正常工作。任何建议都非常感谢。 谢谢。
答案 1 :(得分:0)
如果要有条件输出,可以这样做:
output {
if [message] =~ /eek/ {
stdout { codec => rubydebug }
} else {
...
}
}
此配置正在测试message
字段以查看其是否包含eek
。
假设zabbix output plugin完成了您想要的操作,则可以使用类似的结构将数据路由到zabbix。