Technical information

外部との連携 snmptrapをKompiraで受信する

snmptrapは、snmpプロトコルでネットワーク上の危機を監視する際に、監視対象になっている機器から管理用コンピュータにむけての通知機能です。主にネットワーク機器などの監視エージェントをインストールできないアラートを検知するのに使います。snmptrapが発行されるのは、あらかじめ指定した異常状態が発生した場合や、機器の状態を表すパラメータが設定された閾値を越えた場合等があります。

snmpとの違いは、snmpの場合は機器に向けて問い合わせや要求を行い、それに対する応答を得るという手順となります。snmptrapの場合は機器からの一方的な通知(トラップ)となります。

トラップの受信はzabbixなどのツールを使うことも多いですが、ここではKompiraサーバーで受信を行う方法をご紹介します。
大まかには以下のような流れとなります。
1. snmptrapdで受信
2. kompira_sendevtを使って、kompiraのチャネルに転送
3. チャネルで受信した情報をジョブフローで処理

 
kompira_sendevtコマンドのインストール

チャネルにデータを送信するユーティリティー kompira_sendevtをインストールします。手順については、別記事
「チャネルを利用した外部システムからのデータ受信」を参照してください。

 
snmptrapdのインストール

snmptrapdは”net-snmp”というパッケージによって提供されます。関連ユーティリティーを含めて、Kompiraサーバーにyumコマンドでインストールして下さい。

次に/etc/snmp/snmptrapd.confを編集して、トラップの受信条件を設定します。ここでは簡易的に以下のようにしました。
トラップを受信したらtraphandleディレクティブで指定されたkompira_sendevtを実行するようにします。

インストールが完了したら、以下のコマンドでsnmptrapdを起動させます。

 
アラート受信のジョブフロー

ここではトラップの受信確認を行うため、下記のような簡易なジョブフローを作成して実行します。

“self()”を追加して、トラップを受信した表示後に繰り返し、受信待機状態に戻るようにしています。

 
トラップの送信テスト

上記のジョブフローを実行すると、ステータスが「待ち」の状態になり、チャネルを通じたトラップ情報の受信待機となります。
ここで実際にトラップを送ってみましょう。Kompiraサーバーにインストールしたユーティリティー”snmptrap”を使って、下記コマンドを実行することでsnmptrapを送信することができます。

実行後、Kompira側のコンソールは以下のようになり、受信確認が出来ました。

snmptrapの受信画面

snmptrapdが起動していても上手くいかない場合には、ブロックされている可能性が考えられます。snmptrapはUDP162を使うため、ポートの制限をかけている場合にはUDP162を開放してください。

以上のようにして、snmpトラップの受信をすることができます。実際にはMIBの解決やコミュニティーの設定を入れるなどの必要がありますが、お使いになるネットワーク等の設定に合わせて適宜行ってください。受信したトラップについては今回は単にコンソールに表示するにとどめていますが、受信トラップの内容に応じてメールでの通知、情報収集、一次対応などをジョブフローで記述する事が出来ます。こちらも必要に応じて別記事を参照してご利用ください。