質問: いつもお世話になっております。 ZabbixのSNMPトラップ監視が期待通りの動作をしていないため、 原因究明に当たってアドバイスを頂きたく質問させて頂きました。 ■事象 linkDownのトラップを受信してもlinkUpとしてイベント画面に挙がる ■検証環境 VMware Workstation 12 Pro を用いて以下の仮想環境を構築しています。 Red Hat Enterprose Linux 6.7 Zabbix 2.2.14(agent、serverも同様) ZabbixサーバとZabbixエージェントは1つの仮想マシンにまとめて入っています。 ■トリガー設定 トリガー1:linkDownを検知しました。 条件式:{テンプレート名:アイテム名.str(linkDown,900)}=1 障害イベントを継続して生成:未チェック トリガー2:linkUpを検知しました。 条件式:{テンプレート名:アイテム名.str(linkUp,900)}=1 障害イベントを継続して生成:未チェック ■時系列 時間 アクション内容 確認内容 9:58 snmptrapコマンドでローカルに向けて"linkDown"送信 トリガー1が表示されること 10:00 〃 "linkUp"送信 トリガー2が表示されること 10:10 〃 "linkDown"送信 トリガー1が表示されないこと 10:16 〃 "linkDown"送信 ※トリガー1が表示されること 上記の10:16のアクションにて、linkDownではなくてlinkUpとしてイベントに表示されてしまいます。 ヒストリを参照してもlinkDownとして記述が残っており、snmptt.logも同様にlinkDownの記述となっております。 何か原因に心当たりはありましたらご教授願います。 宜しくお願いします。
回答: 10:00 に linkUp のトリガーが「障害」ステータスになっていたものが、10:16 にアイテムが更新されたタイミングで、linkUp のトリガーが評価され(str(linkUp,900)=0)、「正常」ステータスに戻ったものがイベントに表示されているのではないでしょうか。 また、str() の 2つめの引数 900 [sec] はどのような意図で設定していますでしょうか? str() の 2つめの引数は比較するログの範囲を示すもので、ステータス[正常」→「障害」の後、900 秒経過したからといって、自動的に「障害」→「正常」に戻るわけではありません。 10:10 の "linkDown" も、10:16 の "linkDown" も、str(linkDown,900)=1 です。 「障害イベントを継続して生成:未チェック」なので、「障害」のまま、イベントは出ません。 もし、900 秒で「障害」→「正常」に戻したいのであれば、nodate() を使うといいと思います。 ただし、nodate() はクセがあるので、使いづらいところがあると思います。