オフィスなどのネットワークが停止してしまうと、業務に大きな支障をもたらします。万が一障害が発生した場合、早急に復旧させる必要があります。そのためにはネットワークにつながっているどの機器でどのような障害が発生しているか、ネットワークを切り分けることで原因を突き止めます。この切り分けに際して重要な役割を担うのが、SNMPでありSNMPトラップなのです。
SNMPトラップの基礎知識
そもそもSNMPとは?
SNMP(Simple Network Management Protocol)は、TCP/IPネットワーク環境の監視・管理を担う、プロトコルのひとつです。ルータやスイッチングハブといったネットワーク機器、Windows、UNIXといったサーバなどの状態を監視します。監視できる内容は、トラフィックやリソース、パフォーマンスといったものから、CPUやメモリの使用率、プロセスやイベントログなどさまざまです。機器によっては、製品やメーカー固有の監視項目を付与しているものもあります。
※プロトコル:通信プロトコルを略したもので、通信に関わる「規格」のことをいいます。プロトコルにはそれぞれ役目があり、SNMPのほかにもさまざまなプロトコルがあります。
※スイッチングハブ:LANにおいて放射状に分岐させるための集線装置です。いわば通信の分配器のような役割を持っています。
SNMPトラップとは?
SNMPトラップの前に、まず「トラップ(Trap)」を知っておきましょう。トラップは異常を検知したときに、あらかじめ定めた処理を行うことをいいます。ネットワーク用語としてのトラップは、主に障害発生時のイベント通知のことです。
したがってSNMPトラップとは、SNMPで監視した内容をイベントとして通知することをいいます。
SNMPトラップの仕組み
では具体的に、SNMPやSNMPトラップはどのようにして通知を行うのでしょうか。ここではSNMPとSNMPトラップの動作の違いと、それに関係するいくつかの用語を解説します。
SNMPマネージャ
SNMPを管理する機器やソフトウェアのことを、SNMPマネージャと呼びます。機器の情報を取得し、監視や管理に活かします。
SNMPエージェント
SNMPの管理対象となる機器をエージェントと呼びます。ルータやスイッチングハブ、サーバなどがこれに該当します。
MIB
MIB(Management Information Base)は監視対象である機器に内蔵される、機器の情報です。管理情報データベースとも呼ばれます。機器情報や設定、状態などのデータが格納されていて、その形式や参照方法は規格化されています。
SNMPの動作
SNMPはSNMPマネージャとSNMPエージェントが通信し合い、監視や制御を行います。SNMPエージェントは、監視対象のネットワーク機器やサーバのMIBから情報を取り出し、その情報をSNMPマネージャに通知します。情報を受け取ったSNMPマネージャは、それをもとに監視対象機器の状態を判断するのです。
簡単にいえば、SNMPマネージャがSNMPエージェントに対してポーリングを行い(SNMPポーリング)、SNMPエージェントがそれに対応する形で情報を送信します。多くの場合、定期的にSNMPポーリングを行い、取得した情報を監視に活かします。
※ポーリング:相手のコンピュータに対して、こちらに送信したい情報があるか問い合わせることをいいます。
SNMPトラップの動作
SNMPとは異なり、SNMPトラップはSNMPエージェント自らSNMPマネージャに情報を送信します。SNMPトラップは、機器に異常が発生したことを検知(トラップ)したときに、その情報をSNMPマネージャに送信するのです。
SNMPとSNMPトラップの動作の違い
これまでの解説のとおり、SNMPは「SNMPマネージャがSNMPエージェントにポーリングして情報を得る」、SNMPトラップは「異常を検知したときにSNMPエージェント自らSNMPマネージャに情報を送る」という動作の違いがあります。
SNMPトラップが発行される例
SNMPトラップが機器の異常を検知したときに情報を送ることはわかりました。では、どのような場合にSNMPトラップが動作するのでしょうか。
SNMPトラップは、機器によって通知する内容が決まっているものや、あらかじめどのような事象が起こったときにトラップするか設定できるものがあります。そのため、ここでいう「SNMPトラップが発行される」とは、「SNMPトラップで通知できる内容」のことです。
これらの情報は、前述したMIBに格納されます。その内容と設定をもとにして、該当する場合にSNMPマネージャへ情報を送るのです。
では、どのような情報がSNMPトラップとして利用できるのでしょうか。いくつかの例を紹介します。
poesupply
機器から給電を開始したことを通知します。
oversupply
機器からの給電が容量を超えた場合に通知します。
loopdetect
ネットワーク機器において、ループが発生したことを検出した際に通知します。
※ループ:ネットワークループの略です。本来、”一本の線”であるはずのネットワークが、円環で接続された状態をいいます。ループが発生すると、通信ができなくなります。詳細は割愛しますが、ループによる通信障害は、同一ネットワーク全体に影響を及ぼす危険な状態です。
たとえば、2台のスイッチングハブを2本のLANケーブルで円状に接続すると、ループ状態となります。
linkDown
通信できなくなったことを通知します。
linkUp
通信が可能となったことを通知します。
powerfailure
機器の電源に異常が発生した際に通知します。
SNMPトラップを効果的に利用するポイント
これまで解説したように、SNMPトラップはトラップする情報を設定できます。このため、すべての情報をトラップするといった設定も可能です。
では、実際にネットワーク機器を運用していく場合、どのようなことに気をつけて、SNMPトラップを設定すればよいのでしょうか。ここではネットワーク機器におけるSNMPについて、ポイントを解説します。
効果的に利用する
ネットワーク障害において、障害内容は大きく「経路」「リンク」「機器」という3つに分類されます。SNMPトラップが送られた場合、管理者はこの3つのどれなのか、どの機器なのか、という切り分けを早急に行う必要があります。もし切り分けに時間がかかってしまうと、ネットワーク障害の復旧に時間がかかり、業務のダウンタイムも長くなってしまうからです。
このため、SNMPトラップは、うまく効率よく利用しなくてはならない、とても重要なものなのです。
検知ポイントを重複させない
ひとつの障害に対して、複数のSNMPトラップが通知されると、管理者の作業は煩雑になり、切り分けに時間がかかってしまいます。たとえば、linkDownと機器固有のトラップが、同時にSNMPトラップで通知されるような設定にしている場合を考えてみましょう。この場合、「あるポートの障害」というひとつの障害が発生したときに、複数のSNMPトラップが通知されてしまいます。さらに、ある機器のポート障害は、接続されるもう一方の機器のポートからもSNMPトラップが送信されるため、ひとつの障害であるにもかかわらず、多くの通知が行われてしまうのです。
このため、ひとつの機器のひとつの障害は、ひとつだけを通知するよう、設定を見直しましょう。もし機器側でSNMPトラップの設定ができない場合には、SNMPマネージャでフィルタリングするといった対応も有効な方法です。
リソース監視に使わない
CPUやメモリの使用率といったリソースの監視は、SNMPトラップでの通知に不向きといえます。これらのリソースは常に上下しているものであり、一時的なトラフィックの増加なのか、慢性的なものなのか判断できないからです。リソース管理の基本ですが、監視は通常のSNMPポーリングで定期的に行い、長期的に計測し続けることが大切です。
アラート検知の対象を厳選する
なんでもかんでも通知されれば、管理者はその対応に追われてしまい、切り分けは難しくなります。先に解説した2つのポイントはもちろん、“早急な対応が必要ではない内容”は、通知しないように設定することが大切です。
SNMPトラップはネットワーク障害を早期に復旧させるための切り札
SNMPはネットワーク機器やサーバの状況を、監視・管理するプロトコルです。機器のMIBから情報を取得するには、定期的に取得するSNMPポーリングか、異常検知できるSNMPトラップで行います。
ネットワーク障害を早急に復旧させるためには、SNMPトラップをうまく使う必要があります。不要な通知をしないよう、しっかりと設計することが大切です。