snmptrapを受信した際に常にトリガーでアクションを発生させるため、 trapに必ず含まれる文字列を条件としてトリガー設定をしています。
この場合だと1度受信するとトリガーのステータスが障害となり、 その障害の状態が続くため、以降のトリガーが作動しなくなります。 (ステータスが正常な状態に戻らないため)
何か、回避する方法などありますでしょうか。 Zabbixは1.8.10を使用しています。
トリガーの設定で、「イベントの生成」を「ノーマル+障害イベントを継続して生成」に設定してみてください。
ご回答ありがとうございます。 記載いただいた設定で検知できるようになりました。
この場合であれば、トリガーのステータスは常時 異常となるのですが、 ステータスを正常に戻したい場合であれば、一定期間データが見取得であれば 正常に戻すなどのトリガー設定が追加で必要になるのでしょうか。
広瀬です。
ログ監視にしても、snmptrapに関しても似通った点がありますが、総じて言えることは以下の通りだと認識しています。
・ログ監視の場合
トリガー条件対象とする文字列が「error」だったとします。
→正常に戻すにはそのerrorに対して「正常になったor戻った」ということを示す文字列を別に定義する必要があります。 しかし、一般的にログファイルにはエラーを出したら出しっ放しでありますし、どれが正常を示す文字列かという複雑 なロジックが存在すると思います。
→戻す場合 過去のFORUMの履歴にもありますが、nodata関数を使用して強制的に一定時間(最小値30秒間)、同一エラー文字 列の検知がなければ、トリガー値(TRIGGER.VALUE)を正常に戻すという処理を、トリガー条件式に組み込む方法です。
・SNMPTRAPの場合
SNMTPRAPで投げた値が、仮に異常が「linkdown」だったとします。
→SNMPTRAPの場合、linkdownに対をなすように正常時にはlinkupを飛ばしてくれるはずですので、 正常に戻したい場合は、linkupをキーワードにTRIGGER.VALUE値を正常に戻す式を組み込むと 理想に近い動きをするかと思います。 {SNMPTRAP:snmptraps.str(linkDown)}=1 {SNMPTRAP:snmptraps.str(linkUp)}=1 {TRIGGER.VALUE}=0 {TRIGGER.VALUE}=1
この辺、組み合わせると良いのではないかと思います。
※ただし複数の全く違うネットワーク機器等のSNMPTrapを1つのシステムに投げている場合、 同時に複数のポートダウン・アップ が同じ場合、若干検討する必要がありますので、ご注意ください。
分かりやすい丁寧な説明ありがとうございました。 理解する事ができました。
複数の同様のトラップが同時に投げられてくる状況なので、 nodata関数の方向で検討いたします。
アカウント名 cloret
Zabbix関連
kodai - 投稿数: 1341
トリガーの設定で、「イベントの生成」を「ノーマル+障害イベントを継続して生成」に設定してみてください。
cloret - 投稿数: 25
ご回答ありがとうございます。
記載いただいた設定で検知できるようになりました。
この場合であれば、トリガーのステータスは常時 異常となるのですが、
ステータスを正常に戻したい場合であれば、一定期間データが見取得であれば
正常に戻すなどのトリガー設定が追加で必要になるのでしょうか。
wakaba - 投稿数: 228
広瀬です。
ログ監視にしても、snmptrapに関しても似通った点がありますが、総じて言えることは以下の通りだと認識しています。
・ログ監視の場合
トリガー条件対象とする文字列が「error」だったとします。
→正常に戻すにはそのerrorに対して「正常になったor戻った」ということを示す文字列を別に定義する必要があります。
しかし、一般的にログファイルにはエラーを出したら出しっ放しでありますし、どれが正常を示す文字列かという複雑
なロジックが存在すると思います。
→戻す場合
過去のFORUMの履歴にもありますが、nodata関数を使用して強制的に一定時間(最小値30秒間)、同一エラー文字
列の検知がなければ、トリガー値(TRIGGER.VALUE)を正常に戻すという処理を、トリガー条件式に組み込む方法です。
・SNMPTRAPの場合
SNMTPRAPで投げた値が、仮に異常が「linkdown」だったとします。
→SNMPTRAPの場合、linkdownに対をなすように正常時にはlinkupを飛ばしてくれるはずですので、
正常に戻したい場合は、linkupをキーワードにTRIGGER.VALUE値を正常に戻す式を組み込むと
理想に近い動きをするかと思います。
{SNMPTRAP:snmptraps.str(linkDown)}=1
{SNMPTRAP:snmptraps.str(linkUp)}=1
{TRIGGER.VALUE}=0
{TRIGGER.VALUE}=1
この辺、組み合わせると良いのではないかと思います。
※ただし複数の全く違うネットワーク機器等のSNMPTrapを1つのシステムに投げている場合、
同時に複数のポートダウン・アップ が同じ場合、若干検討する必要がありますので、ご注意ください。
cloret - 投稿数: 25
分かりやすい丁寧な説明ありがとうございました。
理解する事ができました。
複数の同様のトラップが同時に投げられてくる状況なので、
nodata関数の方向で検討いたします。