SNMPポーリングの誤検知について

いつも参考にしています。

Zabbixでアプリケーションの監視をしており、方法としてSNMPポーリングによる監視を行っています。

 ・zabbixから監視対象サーバにSNMPポーリングを行っています。
 ・監視対象サーバではsnmpd.confに下記記述をしています

30秒に一回監視をしているのですが、たまに(数週間に1回)誤検知してしまいます。
 →監視対象のプロセス自体は問題なく動いています。また、
  NW遅延等でSNMPパケット遅延する場合も考えていたのですがこの場合は状態が「不明」となる
  のでパケロスでもないのかと思っています(実態は「異常」
  状態となっているので明示的に監視対象サーバがプロセスなしを応答している可能性を考えています)

●設定内容

zabbix
 条件式:{hostname:prErrorFlag.10.last(0)}=1
  ※Flagの後の数値は監視対象のプロセスで異なります

監視対象サーバのsnmpd.conf
proc XXXX
proc XXXX
→procで監視対象のプロセス名を監視する分の行だけ記載

●質問事項
1.SNMPポーリングで誤検知するというような事例はあるのでしょうか。

2.SNMPポーリングでの監視の場合、ZabbixではSNMPポーリングのパケロスがあった場合、再送処理はあるのでしょうか、また、タイムアウト値はどれくらいでしょうか。
(OpenviewだとSNMPポーリング監視で再送回数、タイムアウト値の設定があったのですがzabbixではあるのでしょうか)

情報あればご教示頂きたいです。

コメント表示オプション

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

Zabbixは値が取れなかった場合は取得エラーになってアイテムが取得不可になります。このときトリガーは評価されないので、質問に書かれている通り、パケットロスやタイムアウトによる誤検知というのは発生しません。

ヒストリを確認いただければ分かると思うのですが、おそらく何らかの原因でSNMPが「1」のデータを返しているのだと思います。これはsnmpエージェント側の問題か、実際に何らかの原因でプロセスが存在しないのだと思います。

どのようなプロセスの監視で誤検知が発生しているのか分かりませんが、一度、Zabbix以外の方法でプロセスの生死を確認されてみてはどうでしょうか?

また、Zabbix側で上記のような瞬間的な障害を検知させたくない場合は、トリガーにlastではなくcount関数を利用してみてください。

<code>{hostname:prErrorFlag.10.count(#2,1)}=2</code>

上記では最新の2つのデータがともに1だった場合に障害として検知します。

ユーザー s1puser の写真

kodaiさん

ご回答ありがとうございます。
ご教示いただいた設定で2回連続プロセスダウン検知した
場合のみ異常と判断させることができました。

こちらで対応したいと思います。