我正在使用logstash
,elasticsearch
并kibana
分析我的日志.当特定字符串通过email
logstash中的输出进入日志时,我通过电子邮件发出警报:
email { match => [ "Session Detected", "logline,*Session closed*" ] ........................... }
这很好用.
现在,我想提醒一个字段的计数(超过阈值时):
例如,如果user
是字段,我想在独特用户数超过5 时发出警报.
可以通过email
logstash中的输出完成吗?
请帮忙.
编辑: 正如@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" } }
所以根据上面的说法,为了server2
和abclog
我有一个grok模式来解析我的文件和在user
grok解析的字段上我希望应用度量.
我在上面的配置文件中做了这个,但是当我检查logstash控制台时,我得到了奇怪的行为-vv
.
所以,如果有文件中的9个日志行,它解析9第一,在那之后它开始度量的一部分,但那里的message
字段不是的logline在日志文件,但它是我的电脑的用户名,因此它给_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" }
任何帮助表示赞赏.
我相信你需要的是http://logstash.net/docs/1.4.1/filters/metrics.
您希望使用metrics
标记来计算事件的比率,然后在电子邮件输出的语句中使用thing.rate_1m
或.thing.rate_5m
if
例如:
filter { if [message] =~ /whatever_message_you_want/ { metrics { meter => "user" add_tag => "metric" } } } output { if "metric" in [tags] and [user.rate_1m] > 1 { email { ... } } }