1

我一直在玩 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=>"2015-07-07T12:55:50.597000+0100", :message=>"错误:在第 27 行第 8 列(字节 649)之后的 #、输入、过滤器、输出中应有一个(字节 649)}

我也很想知道我原来的 grok 编码是否正确,以及我们是否可以弄清楚如何为系统日志消息设置标签并将其用作电子邮件输出?

谢谢

4

2 回答 2

0

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

如果有人需要,很高兴添加一些样品。

于 2016-07-01T11:52:36.827 回答
0

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

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

于 2015-07-09T04:13:37.270 回答