ネットワーク監視において、障害をいち早く検知して対応することは非常に重要な課題です。
そのための仕組みとして活用されているのが、SNMPトラップ(SNMP Trap)です。
SNMPトラップは、ネットワーク機器側で異常が発生した際に、監視サーバーへ自動的に通知を送る仕組みであり、リアルタイムな障害検知を可能にします。
本記事では、SNMPトラップの意味・仕組み・ポーリングとの違い・設定方法・活用のポイントまでわかりやすく解説していきます。
SNMPの基礎を学んだ次のステップとして、ぜひ参考にしてみてください。
SNMPトラップとは?非同期通知による障害検知の仕組み
それではまず、SNMPトラップとはどのような仕組みかという基本から解説していきます。
SNMPトラップとは、ネットワーク機器(エージェント)が異常を検知した際に、SNMPマネージャへ自発的に送信する通知メッセージのことです。
通常のSNMP通信がマネージャ側から情報を取得しに行く「ポーリング」方式であるのに対し、トラップはエージェント側から能動的に通知を行う「非同期通知」の方式です。
この違いが、トラップの最大の特徴であり強みといえます。
SNMPトラップは、障害発生と同時に通知が届く「リアルタイム検知」を実現します。ポーリングでは検知まで時間差が生じる可能性がありますが、トラップなら機器側で異常が起きた瞬間に管理者へ通知が届くため、迅速な障害対応が可能です。
SNMPトラップの種類
SNMPトラップには、標準化されたジェネリックトラップとベンダー固有のエンタープライズトラップがあります。
ジェネリックトラップはRFC 1157で定義されており、以下の6種類が代表的です。
| トラップタイプ | 内容 |
|---|---|
| coldStart | 機器が起動したことを通知 |
| warmStart | 機器が再起動したことを通知 |
| linkDown | インターフェースがダウンしたことを通知 |
| linkUp | インターフェースが回復したことを通知 |
| authenticationFailure | 認証失敗を通知 |
| egpNeighborLoss | EGPネイバーが失われたことを通知 |
エンタープライズトラップはメーカー独自に定義されるため、機器によって内容が異なります。
SNMPトラップの送信先ポート
SNMPトラップは、マネージャ側のUDPポート162番宛に送信されます。
通常のSNMPポーリングがポート161番を使用するのに対し、トラップは162番と区別されている点を覚えておきましょう。
ファイアウォールの設定でSNMPトラップを受信するには、ポート162番のUDP通信を許可する必要があります。
SNMPトラップとポーリングの違いを比較
続いては、SNMPトラップとポーリングの違いを詳しく確認していきます。
どちらもSNMPを使った監視手法ですが、通信の方向性とタイミングが根本的に異なります。
ポーリング方式の仕組みと特徴
ポーリングとは、マネージャが一定間隔でエージェントに情報取得要求を送り、応答を受け取る方式です。
定期的にデータを収集するため、CPU使用率やメモリ使用量などのリソース状況を継続的に把握するのに適しています。
ただし、ポーリング間隔(例:5分ごと)の間に発生した障害は、次のポーリングタイミングまで検知できない場合があります。
リアルタイム性という点では、トラップに劣るといえるでしょう。
トラップ方式の仕組みと特徴
トラップはエージェントが異常を検知した瞬間にマネージャへ通知を送る方式であり、リアルタイム検知が可能です。
ただし、トラップは一方向通知(エージェント→マネージャ)であり、到達確認の仕組みが標準では存在しないという点に注意が必要です。
SNMPv2cからはInformRequestという確認応答付きの通知も追加されており、信頼性を高めることができます。
ポーリングとトラップの使い分け
| 項目 | ポーリング | トラップ |
|---|---|---|
| 通信方向 | マネージャ→エージェント | エージェント→マネージャ |
| タイミング | 定期的(任意の間隔) | 異常発生時に即時 |
| リアルタイム性 | 低め | 高い |
| ネットワーク負荷 | 機器数に比例して増加 | 異常時のみ発生 |
| 適した用途 | リソース監視・傾向分析 | 障害検知・即時アラート |
実際の運用では、ポーリングとトラップを組み合わせて使用するのが一般的なアプローチです。
トラップで即時通知を受けつつ、ポーリングで定期的なデータ収集も行うことで、より精度の高い監視体制が整うでしょう。
SNMPトラップの設定方法と受信設定
続いては、SNMPトラップの設定方法を確認していきます。
トラップを有効に活用するには、エージェント側(機器)とマネージャ側(監視サーバー)の両方での設定が必要です。
エージェント側(ネットワーク機器)の設定
ネットワーク機器でSNMPトラップを有効化するには、以下の項目を設定します。
・SNMPエージェントの有効化
・トラップ送信先(マネージャのIPアドレス)の指定
・コミュニティ名(v1/v2c)またはユーザー認証情報(v3)の設定
・送信するトラップの種類(linkDown・linkUpなど)の選択
Ciscoルーターであれば、CLIで「snmp-server host [IPアドレス] traps [コミュニティ名]」のように設定するのが一般的です。
設定後はトラップが正常に送信されているか、監視ツール側で受信確認を行いましょう。
マネージャ側(Zabbixなど)の受信設定
Zabbixでトラップを受信するには、まずSNMPトラップレシーバーの設定を行います。
snmptrapd(Net-SNMPのデーモン)をインストールし、Zabbixと連携する設定ファイルを記述することで、トラップ受信が可能になります。
受信したトラップはZabbixのトリガーと紐づけることで、アラート通知やエスカレーションに活用できます。
設定の手順は監視ツールによって異なりますが、基本的な考え方は共通しています。
SNMPv3トラップの設定とセキュリティ
SNMPv3を使ったトラップでは、認証(authNoPriv)や暗号化(authPriv)のオプションが使用できます。
v1/v2cのトラップがコミュニティ名を平文で送信するのに対し、v3ではSHA認証・AES暗号化などにより安全な通知が可能です。
機密性が求められるネットワーク環境では、SNMPv3トラップの導入を検討するとよいでしょう。
まとめ
本記事では、SNMPトラップの意味・種類・ポーリングとの違い・設定方法について解説しました。
SNMPトラップは、障害発生時にリアルタイムで通知を受け取れる非常に有用な仕組みです。
ポーリングとトラップをうまく組み合わせることで、ネットワーク監視の精度と速度を大幅に向上させることができるでしょう。
監視ツールとの連携設定もあわせて理解し、実運用に役立ててみてください。