我正在使用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 解析的字段上,我希望应用度量标准。
我在上面的配置文件中这样做了,但是当我使用-vv
.
因此,如果文件中有 9 条日志行,它首先解析 9 条,然后开始公制部分,但该message
字段不是日志文件中的日志行,而是我的 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"
}
任何帮助表示赞赏。