ログ監視機能について(検知→復旧の連携方法)

初めましてZETTONと申します。
現在ZABBIX導入検討をしており、
当フォーラムの情報を大変参考にさせて頂いております。

ログ監視機能の検証を行っており下記事象に困っています。
解決方法がありましたらご教授願います。

■事象
トリガーで設定した文字列がログに出現するとステータスが障害となるが、
設定文字列以外の文字が出現すると即時ステータスが復旧となってしまう。

【質問】
下記動作をさせたいのですが実現方法はありますでしょうか?

(1)一定期間経過後に復旧とする。
 例えば、30分間トリガー文字が出現しなければ、ステータスを復旧とする。

(2)”復旧トリガー文字列”出現によって、障害を復旧ステータスに変更する。

例えば、下記(a)検知により障害ステータスになり、(b)検知で復旧ステータスにしたい。
(a)トリガー文字列 :”SERVERA Service_Down”
(b)復旧トリガー文字:”SERVERA Service_Up” 

■参考までに利用環境は以下となります
○Zabbixサーバ
 【OS】Red Hat Enterprise Linux Server release 5.4 (Tikanga)
 【Zabbixバージョン】v1.9.4
 【インストール方法】ソースからコンパイル

○Zabbixエージェント
 【OS】Red Hat Enterprise Linux Server release 5.3 (Tikanga)
 【Zabbixバージョン】v1.9.4
 【インストール方法】ソースからコンパイル

よろしくお願いします。

コメント表示オプション

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

【質問】
下記動作をさせたいのですが実現方法はありますでしょうか?

(1)一定期間経過後に復旧とする。
 例えば、30分間トリガー文字が出現しなければ、ステータスを復旧とする。

トリガーの条件式にnodata()を利用されてみてはいかがでしょうか。

例えば、log[]を利用して/var/log/test.logファイル内の「SERVERA
Service_Down」という文字列を監視している場合ですと以下のように
条件式を書けばよいと思います。
<code>
({サーバ名:log[/var/log/test.log].nodata(1800)}=0)&
({サーバ名:log[/var/log/test.log].str(SERVERA Service_Down)}=1)
</code>
※見やすくするため改行を入れています。

ただし、この場合ですと、常に何らかのログが出力されている場合
には、nodata()の条件に当てはまらずに長時間障害のままとなる可
能性があります。

ログファイルの中でも「Service_Down」と「Service_Up」だけを見
ればよいのであれば、アイテム取得時からパターンを指定してトリ
ガーで判断するものをフィルタリングし、以下のようにすることで
多少は改善するかもしれません。
<code>
({サーバ名:log[/var/log/test.log,Service].nodata(1800)}=0)&
({サーバ名:log[/var/log/test.log,Service].str(SERVERA Service_Down)}=1)
</code>
※見やすくするため改行を入れています。

(2)”復旧トリガー文字列”出現によって、障害を復旧ステータスに変更する。

以下のようなトリガーの条件式はいかがでしょうか?
<code>
({サーバ名:log[/var/log/test.log].str(SERVERA Service_Down)}=1)|
(({TRIGGER.VALUE}=1)&({サーバ名:log[/var/log/test.log].str(SERVERA Service_Up)}=0))
</code>
※見やすくするため改行を入れています。

簡単に説明すると、ログに「SERVERA Service_Down」があったら障
害発生とみなし、障害発生中に「SERVERA Service_Up」以外が出力
されたのなら障害のままとみなす、といった感じです。

ご要望を満たせているかわかりませんが、ご確認下さい。

ユーザー ZETTON の写真

TNKさん。ご回答ありがとうございます。

ご提案頂いたトリガー(若干変更しましたが)にて検証を行った結果、(1)(2)共に目的を達成出来ましたのでご報告いたします。

(1)一定期間経過後に復旧とする。
 例えば、30分間トリガー文字が出現しなければ、ステータスを復旧とする。

================================================================
({サーバ名:log[/var/log/test.log,Service].nodata(1800)}=0)&
({サーバ名:log[/var/log/test.log,Service].str(SERVERA Service_Down)}=1)
================================================================

【検証での設定値】
({サーバ名:log[/var/log/test.log,"SERVERA Service_Down"].nodata(180)}=0)&
({サーバ名:log[/var/log/test.log,"SERVERA Service_Down"].str(SERVERA Service_Down)}=1)

結果、アイテム指定でのフィルタリングパターンにトリガー設定と同様の文字列を設定することで
意図した動作を確認できました。

(2)”復旧トリガー文字列”出現によって、障害を復旧ステータスに変更する。

================================================================
({サーバ名:log[/var/log/test.log].str(SERVERA Service_Down)}=1)|
(({TRIGGER.VALUE}=1)&({サーバ名:log[/var/log/test.log].str(SERVERA Service_Up)}=0))
================================================================

トリガー設定にて「ノーマル + 障害イベントを継続して生成」にチェックが入っていたため、
障害検知中に復旧トリガー文字列以外の文字列が出力されるたびにメールが発報していましたが
チェックを外すことで意図した動作を確認することができました。

以上から全ての条件が満たせることが確認できました。
大変参考になるご回答誠にありがとうございました。