違いは下記のようになるので、環境(状況)にあわせて使いわけると良いと思います。
- rsyslogの場合は、1回でも特定の文字列が出力されたら通知が実施されます(2回目以降の通知はある程度抑止できます)。
- fluentdの場合は、決められた計測時間内に特定文言が決められた回数出力されたらその都度、通知を実施します。 ⇒ 例)10 秒の間に、特定文言が2回出力したらメールで通知(次の10秒でも、特定文言が2回出力されたらまた通知)
※評価は、CentOS6.6(x86_64) + fluentd v0.12.7(gemによる導入)で行っています
fluentdプラグインの導入
※fluetndそのもの導入に関しての説明は割愛させていただきますので、このあたりを参考に導入してください。今回の目的を達成するのに必要な以下のプラグインを導入します。
・fluent-plugin-grepcounter
・fluent-plugin-mail
fluentdの設定
今回は、以下の条件でメール通知をする設定としました。・/var/log/messagesに
・単位時間10秒の間に
・”WARN”の文字列が2回以上出力
</etc/fluent/fluent.confの設定例>
<source>
type tail
format syslog
path /var/log/messages
tag syslog.messages
pos_file /var/log/fluent/pos_file
</source>
# 特定文言がログに出力されるのをカウントする部分
<match syslog.messages>
type grepcounter
count_interval 10
input_key message
regexp "WARN"
threshold 2
add_tag_prefix warn.count
</match>
# メール通知をする部分
<match warn.count.syslog.messages>
type mail
host localhost
port 25
from "warn@fluetd.example.com"
to "user01@fluentd.example.com"
subject "[URGENT] WARN logging"
message Total WARN count: %s\n\nPlease check your logs
message_out_keys count
</match>
※※各パラメータの意味は、プラグインのREADME.mdで確認してください
<fluent-plugin-grepcounter>
https://github.com/sonots/fluent-plugin-grepcounter
<fluent-plugin-mail>
https://github.com/u-ichi/fluent-plugin-mail
※※私の環境では、以下でも確認できました
<fluent-plugin-grepcounter>
/usr/local/rvm/gems/ruby-2.2.0/gems/fluent-plugin-mail-0.1.1/README.md
/usr/local/rvm/gems/ruby-2.2.0/gems/fluent-plugin-grepcounter-0.5.5/README.md
<fluent-plugin-mail>/usr/local/rvm/gems/ruby-2.2.0/gems/fluent-plugin-mail-0.1.1/README.md
動作検証
fluetndを起動後、Puttyなどの端末を2つ立ち上げて、- 1つは以下のようにloggerコマンドを実行(10秒の間に2回以上実施)
- もう1つは、メールログと/var/log/messagesをtail
する事で動作を確認する事ができます。
#logger WARN
これで、今回設定した”単位時間10秒”に”2回”以上”WARN”の文字列が出力されたら1通ずつメール通知されるようになったと思います。
0 件のコメント:
コメントを投稿