Logstashを使用してメールアラートを設定しようとしています。今のところ、「エラー」というパターンがログファイルに解析されるたびにメールで通知され、不要なメールが大量に送信される可能性があります。条件付きルールを作成して、「Xログファイルに1分間にエラー3xのパターンがメールで送信される」とするようにします。この方法で、メールに圧倒されません。
これが私の現在の設定です:
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"
}
}
}
ログメッセージに基づいてアラートを処理するようにリーマンを設定するだけです。
リーマンは、logstashからログメッセージのストリームを読み取り、その内容に基づいてアラートを送信できます。
Riemannの利点の1つは、特定の時間のすべてのメッセージを1つの電子メールにまとめることができることです。この方法では、多くの電子メールは届きませんが、すべてのメッセージを受信できます。
さらに多くの例が http://riemann.io/howto.html にあります。