关于传递给zabbix trapper的ELK-Logstash关键字过滤器

时间:2018-12-11 12:10:37

标签: logstash zabbix

关于传递给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" ]
    }
  }
}

谢谢。

2 个答案:

答案 0 :(得分:0)

是的,现有的grok过滤器可以正常发送邮件;但是,如果我想对诸如“错误”之类的关键字进行特定过滤,以通过zabbix-trapper接口将消息发送到zabbix-server的输出,我该怎么办?我本人进行了一些研究,并进行了数小时的尝试,但很遗憾,此方法无法正常工作。任何建议都非常感谢。 谢谢。

答案 1 :(得分:0)

如果要有条件输出,可以这样做:

output {
    if [message] =~ /eek/ {
        stdout { codec => rubydebug }
    } else {
        ...
    }
}

此配置正在测试message字段以查看其是否包含eek

假设zabbix output plugin完成了您想要的操作,则可以使用类似的结构将数据路由到zabbix。