Protocolの略で、IPを持つ様々な機器がきちんと働いているか、もしくは働く上で問題が無いか、といった観点で機器を監視するためのプロトコルです。監視とは具体的には『CPUやメモリ、インタフェースでのパケット受信がどのくらい使われているか?筐体内の温度は何°Cか?』といった状態監視や、『HDDや電源、ファン等の部品が壊れていないか?』といったハードウェア監視、『L2ループが発生していないか?』といったソフトウェア監視など、多岐に渡ります。これらの監視は『SNMPマネージャからSNMPエージェントへのポーリングによる情報取得』と『SNMPエージェントからSNMPマネージャへのトラップ/インフォーム通知』の2種類の仕組みにより実現します。具体的な構成例を以下に示します。Managerの機能が含まれています。監視対象のサーバやNW機器上ではSNMPエージェントが動作しています。Get-Responseの受信)を定期的(例えば3分間隔)に行います。これにより、SNMPエージェントは受動的に情報を渡します。それと同時に、SNMPエージェント側の機器に何か障害が発生したときには速やかにSNMPエージェントから能動的にトラップ/インフォームRequest受信(インフォームを受信した場合はインフォームResponseの送信)を行うものです。SNMPマネージャはWindowsサーバやLinuxサーバの上にインストールする、監視ソフトに内包されるのが一般的ですが、監視ソフトとしては、それ以外にもサービス監視、リソース監視、プロセス監視といった機能を持つことが多いです。それらは場合によってはSNMPエージェント以外のエージェントにより実現します。(先程の図の例であれば、Nagiosエージェント)各監視の説明については下記ページをご参照下さい。https://milestone-of-se.nesuke.com/sv-basic/system-monitoring/sysmon-summary/また、監視ソフトには例えば以下があります。等SNMPエージェントとはSNMPエージェントは、ネットワーク機器であれば大抵初期インストールされており、設定で有効にするだけで使えるようになります。ciscoであれば以下コマンドで使えるようになります。Service」というサービスを設定・起動するだけで使えるようになります。押下しEnter⇒以下画面の該当箇所をダブルクリックし、「起動」ボタンをクリックLinuxはnet-snmpというパッケージをインストールし、設定・有効化することで使えるようになります。SNMPのバージョン一般にバージョン1及びバージョン2は利用されません。バージョン2cかバージョン3が使われます。バージョン2cまではセキュリティが甘く、コミュニティと呼ばれる文字列が平文でやり取りされるため、パケットキャプチャをすればコミュニティが分かり、結果、第三者が簡単にMIB情報取得を出来てしまいます。先程のCiscoのコマンドの例では、コミュニティは"public"となります。バージョン3からは暗号化がサポートされ、その問題を回避できます。SNMPでTCPでは無くUDPを使う理由、ポート番号についてSNMPではポーリングはUDP161番ポート、トラップ/インフォームはUDP162が使われます。SNMPは一度にたくさんの機器を監視するケースが多いため、TCPだとマネージャにたくさんのコネクションが張られ、負荷が大きいです。FIN/ACKの処理も含めると、UDPで扱う場合に比べて通信量が約2.8倍にもなります。SNMPではUDPを使い、ポーリングに3回連続応答しない場合は異常があったと見做す、というような設定が一般的です。ポーリングは往復が前提であるため、応答が無ければ異常だと検知できますが、トラップはエージェントから一方的に送られるだけです。万が一マネージャがそのパケットを取りこぼした場合は検知できません。そのため、バージョン2からはトラップだけでなく、インフォームという方式も使えるようになりました。SNMPエージェントがインフォームリクエストでSNMPマネージャに通知した場合、SNMPマネージャはSNMPエージェントにインフォームレスポンスを返さなければなりません。SNMPマネージャがインフォームリクエストを取りこぼした場合、レスポンスが返されませんので、SNMPエージェントはタイムアウトの後、リクエストの再送を試みます。MIBとはMIBとは、機器の監視に使えるような情報を含んだ軽量のデータベースです。oidと呼ばれる一意な識別子により、どのような情報が含まれているかが決まっています。CPU使用率の情報のoidは"1.3.6.1.2.1.25.3.3.1.2"です。SNMPポーリングではマネージャ側がoidを指定し、そのMIB情報を取りに行っています。トラップ/インフォームでは、エージェント側がどのようなトラップ/インフォームを出すかを設定しておき、それに対応するoidの情報が変わった際にトラップ/インフォームを送信します。MIBは大きく2種類に分かれます。1つはすべての機器に共通のもので、MIB-2と呼ばれています。1つはベンダ独自のもので、ベンダーMIB(プライベートMIB)と呼ばれています。