手当たり次第に書くんだ

飽きっぽいのは本能

SNMP Trap は監視設計の主役ではない – 状態監視とイベント通知を分けて考える

SNMP Trap は、ネットワーク機器やアプライアンスが自発的に送信する通知です。障害発生時に機器側から即座に通知できるため、リアルタイム性という意味では便利です。

しかし、Trap は監視対象の状態そのものではありません。あくまで「何かが起きた」というイベント通知であり、状態の正本として扱うには弱い仕組みです。この記事では、SNMP Trap を監視設計の主役に置くべきではない理由と、現実的な使い方を整理します。

Polling と Trap は構造が違う

SNMP 監視には大きく分けて、監視サーバーが定期的に取得する Polling と、監視対象が自発的に送る Trap があります。この 2 つは似ているようで、監視設計上はかなり性質が違います。

方式通信の向き状態確認復旧判定
Polling監視サーバーから監視対象へ問い合わせる定期的に現在状態を取得できる次回取得値で復旧を判定しやすい
Trap監視対象から監視サーバーへ通知する通知されたイベントだけを受け取る復旧 Trap が来ないと戻しにくい

Zabbix 公式ドキュメントでも、Trap は SNMP 対応機器から snmptrapd へ送られ、Zabbix server または proxy が trapper file から収集する仕組みとして説明されています。つまり、Polling のように「Zabbix が今の状態を取りに行く」モデルではありません。

Trap は状態の正本ではない

Trap の最大の問題は、状態を継続的に示すものではないことです。Trap はイベントです。イベントは重要ですが、イベントを受け取ったからといって、その後の状態が継続しているか、復旧したか、通知を取りこぼしていないかまでは保証できません。

Polling = 現在状態を定期的に確認する
Trap    = 発生したイベントを通知する

状態の正本として使いやすいのは Polling
Trap は補助信号として扱う方が安定する

障害発生 Trap でアラートを上げることはできます。しかし、復旧 Trap が来ない、機器が Trap を送る前に落ちる、ネットワーク経路で失われる、といった場合に、監視システム側の状態が戻らなくなります。

Trap を主役にすると復旧条件が弱くなる

監視設計では、障害条件と復旧条件の対称性が重要です。Polling であれば、閾値を超えたら障害、正常値に戻ったら復旧、という設計が比較的自然にできます。

一方、Trap はイベント駆動です。障害 Trap と復旧 Trap が必ずペアで送られるとは限りません。ベンダーや機器、ファームウェア、設定によって Trap の内容も異なります。

課題内容
復旧 Trap がない障害は通知されるが復旧イベントが送られない
取りこぼしUDP や中継処理の都合で Trap が失われる可能性がある
ベンダー差OID や varbind の内容が機器ごとに異なる
試験が必要実際に障害を起こして Trap の内容を確認しないと設計しづらい
自動化しづらいMIB、OID、文字列、重大度のマッピングが個別対応になりやすい

Trap は重要な参考情報として扱う

Trap を否定する必要はありません。むしろ、ネットワーク機器やアプライアンスでは、Trap が唯一の手掛かりになるイベントもあります。重要なのは、Trap を監視の主役にしないことです。

Trap は「状態の正本」ではなく、「補助的なイベント情報」として扱うのが安定します。障害検知の主軸は Polling やメトリクスに置き、Trap は調査の手掛かり、履歴、補助トリガーとして使います。

役割主に使うものTrap の位置づけ
死活監視ICMP、TCP、SNMP Polling補助
リソース監視Polling、メトリクス補助
リンク状態Polling と Trap の併用即時通知として有用
ハードウェア異常Trap、ログ、Polling早期検知の手掛かり
障害復旧判定Polling、メトリクス復旧 Trap だけに依存しない

Zabbix で Trap を扱う時の考え方

Zabbix では SNMP Trap を受けることができますが、通常のアイテム監視とは構造が異なります。snmptrapd、受信スクリプト、trap ファイル、Zabbix trapper の流れを理解しておく必要があります。

SNMP device
  -> snmptrapd
  -> trap receiver script / SNMPTT
  -> trapper file
  -> Zabbix server or proxy
  -> item / trigger

この経路は便利ですが、Polling よりも部品が多くなります。つまり、Trap 監視が動かない時は、SNMP 機器、UDP/162、snmptrapd、変換処理、trap ファイル、Zabbix の item / trigger を順番に切り分ける必要があります。

Trap だけに依存しない設計

実運用では、Trap を受けたら即アラートにするのではなく、状態確認と組み合わせる設計が扱いやすくなります。

  • Trap はイベント履歴として保存する
  • 重要 Trap は補助トリガーとして使う
  • 最終的な障害状態は Polling やメトリクスで確認する
  • 復旧判定は Trap だけに依存しない
  • Trap が来なかった場合でも状態監視で検知できるようにする
  • Trap の OID / varbind / 重大度のマッピングを記録する

特に「Trap が来たら障害」「復旧 Trap が来たら復旧」という設計は、復旧 Trap の取りこぼしや未実装に弱くなります。状態確認を別系統で持っておく方が、監視システムとして安定します。

Trap が有効な場面

Trap は主役ではありませんが、不要なわけではありません。即時性が重要なイベント、Polling 間隔では拾いにくい瞬間的な異常、機器固有のハードウェアイベントなどでは有効です。

場面Trap の価値注意点
リンク up/down即時通知として有用最終状態は interface status で確認する
電源 / FAN / 温度異常機器固有イベントを拾えるOID と重大度の整理が必要
冗長系の切替発生タイミングの記録に有用現在の主系 / 従系状態は別途確認する
ライセンスや閾値イベント機器が発するイベントを記録できるTrap 文面だけで判断しない

監視設計としての結論

Trap は通知としては便利ですが、状態監視の主役には向きません。監視設計の中心には、再現性があり、復旧判定ができ、現在状態を取りに行ける仕組みを置くべきです。

その上で、Trap はイベント履歴、即時通知、補助トリガー、障害解析の材料として使います。Trap を捨てるのではなく、役割を正しく限定することが重要です。

SNMPv2c を使う場合と同じで、古い技術を使うこと自体が問題なのではありません。問題は、その技術が何を保証し、何を保証しないのかを見誤ることです。Trap は状態の正本ではない。この前提を置くだけで、監視設計はかなり安定します。

参考
書籍
参考書籍

マスタリングTCP/IP SNMP編

SNMP、MIB、ネットワーク管理の基礎を確認したい場合の参考書籍です。古い書籍のため、価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

参考

SNMP Trap は監視設計の主役ではない – 状態監視とイベント通知を分けて考える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る