zabbixでログ監視の続き

前回の続きです。
前回は、ログ監視をしているという事で、サーバ設定部分のはまりどころを少し書いてみました。

次はトリガーを含めたはまりどころを備忘録として。

log[/var/log/maillog,”kernel time sync”,”UTF-8″,100]
ログ監視のアイテムで、こんな風なキーで設定しました。ファイルの文字コードが指定できるところなんて、
zabbixは素敵です。100はmaxlines という設定で、一度に読み込む量だったはず。
エージェントがサーバに送る1秒間あたりの行数だそうです。

あと、読み込んだ行の部分を覚えていてくれて、ローテートしたらリセットしてくれる挙動なんて
logsurfer やswatchを使っていたころを考えると感動ものです。

http://www.zabbix.com/documentation/jp/1.8/manual/log_file_monitoring

で、トリガーと連動させてみると、1004の行がマッチしたので、メールが1004飛んできました(w
これじゃあまずいだろうと思って、調べるとzabbix フォーラムに有用な記事が。

http://www.zabbix.jp/modules/newbb/viewtopic.php?topic_id=418&forum=6

「イベント生成」が「ノーマル+障害イベントを継続して生成」であると、イベントが連続発生する様子だったので、「ノーマル」に変える。

(({seedslight.com:log[/var/log/cron,”ftpmailtest”,”UTF-8″,100].regexp(ftpmailtest)})#0)
↑トリガーの記述を変更しています。

今度はメールが飛ばないので、さらに調べてみると、ノーマルではステータスが変化したときに飛ぶとの事なので、トリガーのキーを変更。

({seedslight.com:log[/var/log/cron,”ftpmailtest”,”UTF-8″,100].regexp(ftpmailtest)}=1)&({seedslight.com:log[/var/log/cron,”ftpmailtest”,”UTF-8″,100].nodata(30)}=0)

nodata(30) が肝。30秒間、データ無しならばという条件を加えたことに。

あとは、loggerコマンドを使って自由にsyslog 経由で/var/log/cronに落書き。

# logger -p cron.debug -i -t “test” “ftpmailtest”


May 18 14:33:00 seedslight.com /usr/sbin/cron[7819]: (operator) CMD (/usr/libexec/save-entropy)
May 18 14:34:53 seedslight.com test[7841]: ftpmailtest
May 18 14:34:53 seedslight.com test[7842]: ftpmailtest
May 18 14:34:53 seedslight.com test[7843]: ftpmailtest
May 18 14:34:53 seedslight.com test[7844]: ftpmailtest
May 18 14:34:54 seedslight.com test[7845]: ftpmailtest
May 18 14:34:54 seedslight.com test[7846]: ftpmailtest
May 18 14:34:54 seedslight.com test[7847]: ftpmailtest
May 18 14:34:55 seedslight.com test[7848]: ftpmailtest
May 18 14:34:56 seedslight.com test[7849]: ftpmailtest
May 18 14:34:56 seedslight.com test[7850]: ftpmailtest
May 18 14:35:00 seedslight.com /usr/sbin/cron[7852]: (root) CMD (/usr/libexec/atrun)


きちんと、アイテムで設定した300秒ごとに取得するメールが飛ぶようになりました。

logrt(ログローテーションするためのキー)を使ったものとか、ログに関係するマクロのことなんかを次はやってみたいです。
長い間放りっぱなしでしたが、追記。2011/10/27

logrt でアイテムを作ったのですが、zabbixのマクロでいろいろ指定できるかなと思ったりしたのに
結構ベタな正規表現しか受け付けてくれませんでした。

http://www.zabbix.com/documentation/jp/1.8/manual/log_file_monitoring
基本はこのマニュアルですが、logrtはこんな形で書いてあります。

logrt[“/home/user/filelog_.*_[0-9]{1,3}”,”pattern_to_match”,”UTF-8″,100]


Apacheのrotatelogsを使ったりすると、access_log.20110917 なんていうファイルができたりすると思うのですが、

logrt["/var/log/httpd/access_log\..*","pattern_to_match","UTF-8",100]
または
logrt["/var/log/httpd/access_log\.[0-9]{8}","pattern_to_match","UTF-8",100]


こんな風に書くしかないわけです。
※{1,3}は1回か3回のどちらか{8}は8回繰り返し。

http://www.zabbix.com/documentation/jp/1.8/manual/config/macros
上記の公式マニュアルでzabbixのマクロつかえないかなーって思って調べたのですが、
{DATE} 今日を示すマクロを例にとると

通知とコマンド ディスカバリ通知 自動登録通知


には使えますが、

アイテムキーのパラメータ


これに使えないのではだめです。

という訳で、ログファイルの指定の仕方は同一ディレクトリに存在しているものだけという形でしょうか。
また、ローテートして圧縮しているとダメなんでしょうね。
このあたりは改善してくれたらうれしいなーって思いました