Azure Monitor エージェントを使用して SNMP トラップ データを収集する

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

簡易ネットワーク管理プロトコル (SNMP) は、Linux のデバイスとアプライアンスをモニターしたり構成したりするための、広範にデプロイされている管理プロトコルです。

次の 2 つの方法で SNMP データを収集できます。

  • ポーリング - 管理システムが SNMP エージェントをポーリングして、特定のプロパティの値を収集します。
  • トラップ - SNMP エージェントがイベントや通知を管理システムに転送します。

トラップはほとんどの場合にイベント通知として使用されますが、ステートフルな正常性の検出やパフォーマンス メトリックの収集にはポーリングが適しています。

Azure Monitor エージェントを使用して、Syslog イベントとして、またはテキスト ファイルにログされるイベントとして SNMP トラップを収集できます。

このチュートリアルでは、以下の内容を学習します。

  • トラップ レシーバーのログのオプションと形式を設定する
  • Syslog またはテキスト ファイルにトラップを送信するようにトラップ レシーバーを構成する
  • Azure Monitor エージェントを使用して SNMP トラップを収集する

[前提条件]

このチュートリアルを完了するには、次のものが必要です。

  • 少なくとも共同作成者権限がある Log Analytics ワークスペース。

  • モニターしようとしているデバイスに関する管理情報ベース (MIB) ファイル。

    SNMP は、ベンダー提供の MIB ファイル内に定義と記述があるオブジェクト識別子 (OID) 値を使用して、モニター対象のプロパティを識別します。

    通常は、デバイスのベンダーが MIB ファイルを提供しています。 MIB ファイルがない場合は、サードパーティの Web サイトに多くのベンダーのファイルがあります。

    SNMP トラップを送信するデバイスごとの MIB ファイルをすべて、MIB ファイル用の既定のディレクトリである /usr/share/snmp/mibs に配置します。 こうすると、OID ではなくわかりやすい名前で SNMP トラップ フィールドをログできます。

    すべてのデバイスに対して 1 つの MIB を保持するベンダーもあれば、何百もの MIB ファイルを保持するベンダーもあります。 1 つの MIB ファイルを正しく読み込むには、snmptrapd ですべての従属 MIB を読み込む必要があります。 MIB の読み込み後に snmptrapd ログ ファイルを検査して、MIB ファイルを解析するのに足りない従属関係がないことを確認してください。

  • SNMP トラップ レシーバーを備えた Linux サーバー。

    この記事では、snmptrapd を使用します。これは、ほとんどの Linux ディストリビューションで提供されている Net-SNMP エージェントの SNMP トラップ レシーバーです。 しかし、使用できる SNMP トラップ レシーバー サービスは他にも多数あります。

    snmptrapd を構成する手順は、Linux ディストリビューションによって異なる場合があります。 SNMP v3 認証の構成に関するガイダンスなど、snmptrapd の構成の詳細については、Net-SNMP のドキュメントを参照してください。

    使用する SNMP トラップ レシーバーは現行の環境用に MIB ファイルを読み込むことができるので、SNMP トラップ メッセージのプロパティに OID ではなくわかりやすい名前が付けられることが重要です。

トラップ レシーバーのログのオプションと形式を設定する

CentOS 7、Red Hat Enterprise Linux 7、Oracle Linux 7 サーバーで snmptrapd トラップ レシーバーを設定するには、次のようにします。

  1. 次のように 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
    
  2. 次のように、コミュニティ文字列 (SNMP v1 および v2 認証文字列) を承認し、ログ ファイルに書き込まれるトラップの形式を定義します。

    1. snmptrapd.conf を開きます:

      sudo vi /etc/snmp/snmptrapd.conf  
      
    2. 行を 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
      

      Note

      snmptrapd は、トラップとデーモン メッセージ (サービスの停止や開始など) を両方とも同じログ ファイルにログします。 上記の例では、後で簡単にログから snmptraps をフィルターに掛けられるように、先頭が "snmptrap" というワードのログ形式を定義しました。

Syslog またはテキスト ファイルにトラップ データを送信するようにトラップ レシーバーを構成する

snmptrapd が SNMP トラップを Azure Monitor エージェントに送信するには、次の 2 つの方法があります。

  • 着信トラップを Syslog に転送する。Azure Monitor エージェントのデータ ソースとして設定できます。

  • Syslog メッセージをファイルに書き込む。Azure Monitor エージェントで追尾と解析を行うことができます。 このオプションを使用すると、SNMP トラップを Syslog イベントとして送信するのではなく、新しいデータ型として送信できます。

snmptrapd の出力ビヘイビアーの構成を編集するには、次のようにします。

  1. /etc/snmp/snmptrapd.conf ファイルを開きます:

    sudo vi /etc/sysconfig/snmptrapd
    
  2. 出力先を構成します。

    構成の例には、 などがあります。

    # 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 ファイルにログします。

Note

出力オプションを設定する方法形式設定オプションを設定する方法の詳細については、Net-SNMP のドキュメントを参照してください。

Azure Monitor エージェントを使用して SNMP トラップを収集する

Syslog にイベントを送信するように snmptrapd を構成した場合は、Azure Monitor エージェントを使用したイベントとパフォーマンス カウンターの収集に関するページで説明されているステップに従います。 Azure Monitor エージェントのデータ収集ルールを定義するときは、必ずデータ ソースとして Linux Syslog を選択してください。

ファイルにイベントを書き込むように snmptrapd を構成した場合は、「Azure Monitor エージェントを使用してテキスト ログを収集する」で説明されているステップに従います。

次のステップ

各項目の詳細情報