Zabbixによるログ監視について

お世話になっております。
ログ監視の設定を行ったのですが、監視が出来ず苦慮しております。
アドバイスをいただければと思います。

[環境]
----------------
Zabbix Server:
 OS: RHEL5.5
 zabbix server: 2.0.3

Zabbix Agent:
 OS: RHEL5.5
 zabbix agent:2.0.3
----------------

[アイテムの設定]
----------------
名前 :Syslog
ホスト :hogehoge01
タイプ :Zabbixエージェント
キー :log[/var/log/messages]
データ型:ログ
アプリケーション:Log files
----------------

[トリガーの設定]
----------------
名前:error
条件式:(({hogehoge01:log[/var/log/messages].regexp(error)})#0)
深刻度:致命的な障害
----------------

■事象
----------------
設定してしばらくすると、アイテム「Syslog」のステータスが「取得不可」になり、
エラー欄の「×」にカーソルを合わせると、「Not supported by Zabbix Agent」と表示されます。
zabbix_agentd.logには何も出力はありませんが、zabbix_server.logには以下のメッセージが
出力されています。
12198:20121212:171655.305 item [hogehoge01:log[/var/log/messages]] became not supported: Not supported by Zabbix Agent
----------------

以上、よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

ログの監視は、アイテムのタイプに「Zabbixエージェント(アクテ
ィブ)」を選択する必要があります。

まずは、アイテムのタイプを変更してみていただけませんでしょう
か?

ユーザー toku1975 の写真

アイテムのタイプを「Zabbixエージェント(アクティブ)」に変更したところ、
発生していた下記エラーは出力されなくなりました。
12198:20121212:171655.305 item [hogehoge01:log[/var/log/messages]] became not supported: Not supported by Zabbix Agent

そこで、監視対象ログに文字列「error」を含むメッセージを出力したのですが、
検知されませんでした。

トリガーの設定が間違っているとは思うのですが、ご教授いただけますでしょうか。

ユーザー KAZ の写真

tokuさん

横から失礼します。
/var/log/messagesですが、zabbixエージェントで参照できる権限でしょうか?

ユーザー toku1975 の写真

KAZさん

ご指摘の権限ですが、zabbixエージェントが参照できる権限になっております。
以下を参照ください。

[root@hogehoge01 zabbix]# ls -l /var/log/messages
-rw-r--r-- 1 root root 3827379 12月 13 09:58 /var/log/messages
[root@hogehoge01 zabbix]#
[root@hogehoge01 zabbix]# grep zabbix /etc/group
root:x:0:root,zabbix
zabbix:x:402:
[root@hogehoge01 zabbix]#
[root@hogehoge01 zabbix]# sudo -u zabbix wc -l /var/log/messages
74598 /var/log/messages
[root@hogehoge01 zabbix]#

ユーザー toku1975 の写真

状況に変化がありましたので、ご報告させていただきます。

error文字列の検知は出来ておりました。
トリガーの表示でフィルタが掛っておりました。申し訳ございません。

ただ、error文字列を検知してステータスが「障害」に変化後、
すぐに「正常」に戻ってしまいます。
これは正しい動作なのでしょうか。
※イベント画面のハードコピーを添付させていただきます。

ユーザー TNK の写真

添付して頂いた画像ファイルの文字が全く見えないので、推測にな
りますが、アイテムの設定として、

 キー :log[/var/log/messages]

とされているならば、errorという文字列が入っていてもいなくて
も、アイテムとしてはログファイルに行が追加されれば、各行を次
々に処理することになります。

そうすると、errorという文字列が含まれている行がログファイル
に出力されるとトリガーが障害として検知し、errorという文字列
が含まれない行がログファイルに出力されると、トリガーの条件と
しては障害ではないので、対応するトリガーが障害回復と判定する
こととなります。

恐らく、この条件にあてはまるようなerrorが含まれない行がログ
に出力されている状態なのではないでしょうか?

ユーザー matt の写真

tokuさん

「正常に戻ってしまう」件はTNKさんのご指摘の通り、errorが含まれない行がログに出力されて、障害-->正常に戻っているのかと思います。
やり方はいろいろあると思いますが
var/log/messages に error を含むlog行が出たら検知したい、であれば以下をお奨めします。

①{hogehoge01:log[/var/log/messages,"error"].nodata(600)}=0
②{hogehoge01:log[/var/log/messages,@ERROR].nodata(600)}=0

これですと10分間で一行でもerrorを含む行が出れば障害で検知、10分以上でなければ障害-->正常に戻ります。
何行続けて出ても一旦正常に戻らなければ1回の検知ですので、連続発生時に何度も引っかからないのが良いところです。
10分はnodata(600)の指定で調整します。分かり易い手法と思います。
②の正規表現を使って今後のキーワードの追加や例外設定にも使えるようにしておくとベターです。

ユーザー toku1975 の写真

TNKさん

ご指摘いただいた通り、アイテム設定のキーを以下のように変更したところ
ステータスが正常に戻ってしまう事象は解決されました。
ありがとうございました。
変更前:
 キー :log[/var/log/messages]
変更後:
 キー :log[/var/log/messages,error]

ユーザー toku1975 の写真

「logキーによる除外」の投稿でkodaiさんが回答されていた方法で
アイテムの設定のキーに正規表現を設定しました。

[キー]
 log[/var/log/messages,@syslogfilter]
[正規表現]
 名前:syslogfilter
 条件式:fail|error|WRN|ERR
 期待値:結果が真

この状態で複数の文字列を監視したいのですが、
どのように設定をすれば良いかイメージが掴めないため、
ご教授いただけないでしょうか。
例) /var/log/messagesに出力されるメッセージのうち、
  fail、error、WRN、ERRのいずれかが含まれるものを検知

1つのトリガーの中で複数文字列を設定しようとしたのですが
うまくいきませんでした。
(({hogehoge01:log[/var/log/messages].str(fail|error|WRN|ERR)})=1)

的外れな質問をしていたら、申し訳ございません。