ELK - Logstash电子邮件警报配置问题

时间:2015-07-07 13:20:56

标签: ruby json logstash logstash-grok elastic-stack

我一直在使用logstash并想知道如何正确配置电子邮件警报。

我正在寻找字符串“BVDCS_LAP”并将邮件发送到该地址。

我的配置是:

input {
  udp {
    port => 5000
    type => syslog
  }
}
filter {
  if [type] == "syslog" {
    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" ]
    }
  }
}
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
  email {
    from => "mymail@domain"
    match =>  {
               "BVDCS_LAP", "message,BVDCS_LAP",
               "BVDCS_LAP", "message,BVDCS_LAP"
              }
    subject => "%{matchName}"
    to => "mymail@domain"
    via => "smtp"
    body => "Here is the event line that occured: %{message}"
    htmlbody => "<h2>%{matchName}</h2><br/><br/><h3>Full Event</h3><br/><br/><div align='center'>%{@message}</div>"
  }
}

我的logstash.conf中没有发送电子邮件,我在第27行看到了以下内容:

{:timestamp =&gt;“2015-07-07T12:55:50.597000 + 0100”,:message =&gt;“错误:#,输入,过滤,输出第27行,第8列(字节649) )在“}

之后

我很好奇,知道我的原始grok编码是否正确,以及我们是否可以解决如何为系统日志消息设置标记并将其用作电子邮件输出?

由于

2 个答案:

答案 0 :(得分:0)

Logstash并非真正针对警报构建。我见过有几个人尝试使用它,但它非常有限(单弦)并且只能在非常小的范围内工作。

您可以尝试像Logz.io这样的解决方案(免责声明:我在那里工作),它在logstash / Elasticsearch之上提供警报。您将日志从logstash发送到Logz.io,然后配置您正在查找的字符串,并在该字符串匹配时向您发送电子邮件警报。

答案 1 :(得分:0)

我去年使用带有条件脚本块的电子邮件插件解决了这个问题,正如Magnus所建议的那样。

如果有人需要,可以添加一些样品。