登入阈值后,电子邮件提醒,logstash?

时间:2014-06-13 06:47:51

标签: elasticsearch logstash kibana statsd riemann

我正在使用logstashelasticsearchkibana来分析我的日志。 当特定字符串通过logstash中的email输出进入日志时,我通过电子邮件发出警报:

email {
        match => [ "Session Detected", "logline,*Session closed*" ]
...........................
}

这很好用。

现在,我想提醒一个字段的计数(超过阈值时):

例如,如果user是字段,我想在唯一身份用户数超过5时发出警告。

这可以通过logstash中的email输出完成吗? 请帮忙。

修改 正如@Alcanzar告诉我做的那样:

配置文件:

    if [server] == "Server2" and [logtype] == "ABClog" {

        grok{
        match => ["message", "%{TIMESTAMP_ISO8601:timestamp} %{HOSTNAME:server-name} abc\[%{INT:id}\]:
 \(%{USERNAME:user}\) CMD \(%{GREEDYDATA:command}\)"]       
        }   

        metrics {
                meter =>  ["%{user}"]
                add_tag =>  "metric"
            }   

        }

所以根据上面的内容,对于server2abclog我有一个用于解析我的文件的grok模式,并且在grok解析的user字段上我想要指标应用。

我在上面的配置文件中做了这个,但是当我用-vv检查logstash控制台时,我的行为很奇怪。

因此,如果文件中有9个日志行,则首先解析9个日志行,之后它会启动度量标准部分,但message字段不是日志文件中的 logline 但是它是我的PC的用户名,因此它提供_grokparsefailure。像这样:

 output received {
   :event=>{"@version"=>"1", "@timestamp"=>"2014-06-17T10:21:06.980Z", "message"=>"my-pc-name", 
    "root.count"=>2, "root.rate_1m"=>0.0, "root.rate_5m"=>0.0, "root.rate_15m"=>0.0, 
    "abc.count"=>2, "abc.rate_1m"=>0.0, "abc.rate_5m"=>0.0, "abc.rate_15m"=>0.0, "tags"=>["metric", 
    "_grokparsefailure"]}, :level=>:debug, :file=>"(eval)", :line=>"137"
    }

感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

我相信你需要的是http://logstash.net/docs/1.4.1/filters/metrics

您希望使用metrics代码计算活动费率,然后在电子邮件的thing.rate_1m声明中使用thing.rate_5mif输出

例如:

filter {
  if [message] =~ /whatever_message_you_want/ {
    metrics {
        meter =>  "user"
        add_tag =>  "metric"
    }
  }
}

output {
  if "metric" in [tags] and [user.rate_1m] > 1 {
   email { ... }
  }
}

答案 1 :(得分:0)

在logstash方面的聚合相当有限。它还会增加状态大小,因此内存消耗可能会增长。在Elasticsearch层上运行的警报提供了更多的自由和可能性。

以下博客提供了ELK之上的Logz.io警报:http://logz.io/blog/introducing-alerts-for-elk/