snmptrap は、snmp プロトコルでネットワーク上の危機を監視する際に、監視対象になっている機器から管理用コンピュータにむけて通知するための機能です。主にネットワーク機器などの監視エージェントをインストールできないアラートを検知するために使います。snmptrap が発行されるのは、あらかじめ指定した異常状態が発生した場合や、機器の状態を表すパラメータが設定された閾値を越えた場合などです。
snmp の場合は機器に向けて問い合わせや要求を行い、それに対する応答を得るという手順となります。対して snmptrap の場合は、異常発生等を契機に機器から自動で通知が送られます。
トラップの受信は Zabbix などのツールを使うことも多いですが、ここでは Kompira Enterprise サーバーで受信を行う方法をご紹介します。
大まかには以下のような流れとなります。
1. snmptrapd で受信
2. kompira_sendevt を使って、Kompira Enterprise のチャネルに転送
3. チャネルで受信した情報をジョブフローで処理
環境情報
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.5.5.post11 |
OS | CentOS 7.8.2003 |
snmptrap | 5.7.2 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.2.post4 |
OS | CentOS 7.8.2003 |
snmptrap | 5.7.2 |
snmptrapd のインストール
snmptrapd は “net-snmp” というパッケージによって提供されます。関連ユーティリティーを含めて、Kompira Enterprise サーバーにインストールして下さい。
$ yum install net-snmp net-snmp-utils
次に /etc/snmp/snmptrapd.conf を編集して、トラップの受信条件を設定します。ここでは簡易的に以下のようにしました。
トラップを受信したら traphandle ディレクティブで指定された kompira_sendevt を実行するようにします。
$ cat /etc/snmp/snmptrapd.conf authCommunity log,execute,net public traphandle default /opt/kompira/bin/kompira_sendevt
インストールが完了したら、以下のコマンドで snmptrapd を起動させます。
$ systemctl enable snmptrapd $ systemctl start snmptrapd
アラート受信のジョブフロー
ここではトラップの受信確認を行うため、下記のような簡易なジョブフローを作成して実行します。
</system/channels/Alert> -> [message = $RESULT] -> print('${message} を受信しました') -> self()
「self()」を追加して、「${message} を受信しました」の表示後に再度受信待機状態に戻るようにしています。
トラップの送信テスト
上記のジョブフローを実行すると、ステータスが「待ち」の状態になり、チャネルを通じたトラップ情報の受信待機となります。
ここで実際にトラップを送ってみましょう。Kompira Enterprise サーバーにインストールしたユーティリティー “snmptrap” を使って、下記コマンドを実行することで snmptrap を送信することができます。
$ snmptrap -v 2c -c public localhost '' systemStats 1 s "This is test"
実行後、Kompira Enterprise 側のコンソールは以下のようになり、受信確認が出来ました。
snmptrapd が起動していても上手くいかない場合には、ブロックされている可能性が考えられます。snmptrap は UDP162 を使うため、ポートの制限をかけている場合には UDP162 を開放してください。
以上のようにして、snmptrap の受信をすることができます。実際には MIB の解決やコミュニティーの設定を入れるなどの必要がありますが、お使いになるネットワーク等の設定に合わせて適宜行ってください。今回は、受信トラップをコンソールに表示するにとどめていますが、受信トラップの内容に応じてメールでの通知、情報収集、一次対応などをジョブフローで記述することが出来ます。こちらも必要に応じて別記事を参照してご利用ください。