我正在尝试使用 logstash 设置电子邮件警报。现在,每次将模式“Error”解析到我的日志文件中时,它都会向我发送电子邮件,这会导致大量不必要的电子邮件。我想创建一个条件规则,这样就可以说“X 日志文件在 1 分钟内有 3x 模式 Error 给我发送电子邮件”。这样我就不会被电子邮件淹没了。
以下是我的当前配置:
input {
file {
# sincedb_path => /path/to/whatever/
path => "/opt/test.log"
type => "test_log"
}
}
filter {
dns {
add_field => [ "IPs", "Logs, from %{host}" ]
type => [ "MESSAGES" ]
resolve => [ "host" ]
action => [ "append" ]
}
}
filter {
if [message] == "Error" or [message] == "error" {
throttle {
before_count => 1
after_count => 3
period => 10
key => "%{message}"
add_tag => "throttled"
}
} }
output {
# stdout { codec => rubydebug }
redis { host => "redis_IP" data_type => "list" key => "logstash" }
if "throttled" not in [tags] {
email {
from => "[email protected]"
to => "[email protected]"
subject => "Alert from %{path}, from %{host}"
body => "Message is: ]\n'%{message}'. \nLog file:\n %{path}:\n\n%{message}.\n More information can be viewed in Kibana"
}
}
}
答案1
我们只是设置了 Riemann 来处理基于日志消息的警报。
Riemann 可以从 logstash 读取日志消息流并根据内容发出警报。
Riemann 的一个优点是您可以将某个时间的所有消息汇总到一封电子邮件中。这样,您无需发送太多电子邮件,但仍可收到所有消息。
更多示例可参见http://riemann.io/howto.html