簡易ネットワーク管理プロトコル (SNMP) は、Linux のデバイスとアプライアンスを監視および構成するための、広く展開されている管理プロトコルです。 この記事では、SNMP トラップ データを収集し、Azure Monitor エージェントを使用して Log Analytics ワークスペースに送信する方法について説明します。
次の 2 つの方法で SNMP データを収集できます。
- ポーリング - 管理システムが SNMP エージェントをポーリングして、特定のプロパティの値を収集します。 ポーリングは、ステートフルな正常性の検出やパフォーマンス メトリックの収集に最もよく使用されます。
- トラップ - SNMP エージェントがイベントや通知を管理システムに転送します。 トラップは、イベント通知として最もよく使用されます。
Azure Monitor エージェントでは SNMP データを直接収集できませんが、このデータは、Azure Monitor エージェントで収集できる次のいずれかのデータ ソースに送信できます。
- Syslog。 データは、Azure Monitor エージェントによって収集された他の syslog データと共に、Syslogテーブルに格納されます。
- テキストファイル。 データは、作成したカスタム テーブルに格納されます。 変換を使用すると、データを解析し、構造化された形式で格納できます。
[前提条件]
- 少なくとも共同作成者権限がある Log Analytics ワークスペース。 
- モニターしようとしているデバイスに関する管理情報ベース (MIB) ファイル。 - SNMP は、ベンダー提供の MIB ファイル内に定義と記述があるオブジェクト識別子 (OID) 値を使用して、モニター対象のプロパティを識別します。 通常は、デバイスのベンダーが MIB ファイルを提供しています。 MIB ファイルがない場合は、サードパーティの Web サイトに多くのベンダーのファイルがあります。 すべてのデバイスに対して 1 つの MIB を保持するベンダーもあれば、何百もの MIB ファイルを保持するベンダーもあります。 - SNMP トラップを送信するデバイスごとの MIB ファイルをすべて、MIB ファイル用の既定のディレクトリである - /usr/share/snmp/mibsに配置します。 こうすると、OID ではなくわかりやすい名前で SNMP トラップ フィールドをログできます。 1 つの MIB ファイルを正しく読み込むには、snmptrapd ですべての従属 MIB を読み込む必要があります。 MIB の読み込み後に snmptrapd ログ ファイルを検査して、MIB ファイルを解析するのに足りない従属関係がないことを確認してください。
- SNMP トラップ レシーバーを備えた Linux サーバー。 - この記事では、snmptrapd が使用されています。これは、ほとんどの Linux ディストリビューションで提供されている Net-SNMP エージェントの SNMP トラップ レシーバーです。 しかし、使用できる SNMP トラップ レシーバー サービスは他にも多数あります。 使用する SNMP トラップ レシーバーは現行の環境用に MIB ファイルを読み込むことができるので、SNMP トラップ メッセージのプロパティに OID ではなくわかりやすい名前が付けられることが重要です。 - snmptrapd を構成する手順は、Linux ディストリビューションによって異なる場合があります。 SNMP v3 認証の構成に関するガイダンスなど、snmptrapd の構成の詳細については、Net-SNMP のドキュメントを参照してください。 
トラップ レシーバーのログのオプションと形式を設定する
Red Hat Enterprise Linux 7 または Oracle Linux 7 サーバーで snmptrapd トラップ レシーバーを設定するには:
- 次のように snmptrapd をインストールして有効にします。 - #Install the SNMP agent sudo yum install net-snmp #Enable the service sudo systemctl enable snmptrapd #Allow UDP 162 through the firewall sudo firewall-cmd --zone=public --add-port=162/udp --permanent
- 次のように、コミュニティ文字列 (SNMP v1 および v2 認証文字列) を承認し、ログ ファイルに書き込まれるトラップの形式を定義します。 - snmptrapd.confを開きます:- sudo vi /etc/snmp/snmptrapd.conf
- これらの行を - snmptrapd.confファイルに追加します。- # Allow all traps for all OIDs, from all sources, with a community string of public authCommunity log,execute,net public # Format logs for collection by Azure Monitor Agent format2 snmptrap %a %B %y/%m/%l %h:%j:%k %N %W %q %T %W %v \n- 注 - snmptrapd は、トラップとデーモン メッセージ (サービスの停止や開始など) を両方とも同じログ ファイルにログします。 上記の例では、後でログから snmptraps を簡単にフィルター処理できるように、 - snmptrapという単語で始まるログ形式を定義しました。
 
Syslog またはテキスト ファイルにトラップ データを送信するようにトラップ レシーバーを構成する
snmptrapd の出力ビヘイビアーの構成を編集するには、次のようにします。
- /etc/snmp/snmptrapd.confファイルを開きます:- sudo vi /etc/sysconfig/snmptrapd
- 次の構成例のように、出力先を構成します。 - # snmptrapd command line options # '-f' is implicitly added by snmptrapd systemd unit file # OPTIONS="-Lsd" OPTIONS="-m ALL -Ls2 -Lf /var/log/snmptrapd"- この構成例のオプションは次のとおりです。 - -m ALL- 既定のディレクトリ内の MIB ファイルをすべて読み込みます。
- -Ls2- Syslog へのトラップを Local2 ファシリティに出力します。
- -Lf /var/log/snmptrapd- トラップの情報を- /var/log/snmptrapdファイルに記録します。
 
注
出力オプションを設定する方法と形式設定オプションを設定する方法の詳細については、Net-SNMP のドキュメントを参照してください。
Azure Monitor エージェントを使用して SNMP トラップを収集する
SNMP イベントを送信した場所に応じて、次のいずれかのガイダンスを使用して、Azure Monitor エージェントでデータを収集します。
次のステップ
詳細については、以下をご覧ください。
