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 - 投稿数: 4720
ログの監視は、アイテムのタイプに「Zabbixエージェント(アクテ
ィブ)」を選択する必要があります。
まずは、アイテムのタイプを変更してみていただけませんでしょう
か?
toku1975 - 投稿数: 22
アイテムのタイプを「Zabbixエージェント(アクティブ)」に変更したところ、
発生していた下記エラーは出力されなくなりました。
12198:20121212:171655.305 item [hogehoge01:log[/var/log/messages]] became not supported: Not supported by Zabbix Agent
そこで、監視対象ログに文字列「error」を含むメッセージを出力したのですが、
検知されませんでした。
トリガーの設定が間違っているとは思うのですが、ご教授いただけますでしょうか。
KAZ - 投稿数: 1085
tokuさん
横から失礼します。
/var/log/messagesですが、zabbixエージェントで参照できる権限でしょうか?
toku1975 - 投稿数: 22
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 - 投稿数: 22
状況に変化がありましたので、ご報告させていただきます。
error文字列の検知は出来ておりました。
トリガーの表示でフィルタが掛っておりました。申し訳ございません。
ただ、error文字列を検知してステータスが「障害」に変化後、
すぐに「正常」に戻ってしまいます。
これは正しい動作なのでしょうか。
※イベント画面のハードコピーを添付させていただきます。
TNK - 投稿数: 4720
添付して頂いた画像ファイルの文字が全く見えないので、推測にな
りますが、アイテムの設定として、
キー :log[/var/log/messages]
とされているならば、errorという文字列が入っていてもいなくて
も、アイテムとしてはログファイルに行が追加されれば、各行を次
々に処理することになります。
そうすると、errorという文字列が含まれている行がログファイル
に出力されるとトリガーが障害として検知し、errorという文字列
が含まれない行がログファイルに出力されると、トリガーの条件と
しては障害ではないので、対応するトリガーが障害回復と判定する
こととなります。
恐らく、この条件にあてはまるようなerrorが含まれない行がログ
に出力されている状態なのではないでしょうか?
matt - 投稿数: 13
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 - 投稿数: 22
TNKさん
ご指摘いただいた通り、アイテム設定のキーを以下のように変更したところ
ステータスが正常に戻ってしまう事象は解決されました。
ありがとうございました。
変更前:
キー :log[/var/log/messages]
変更後:
キー :log[/var/log/messages,error]
toku1975 - 投稿数: 22
「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)
的外れな質問をしていたら、申し訳ございません。