snmptrapd 設定方法


snmptrapd 概要

snmptrapdは各機器からのアラートであるsnmptrapを受信する機能です。主にIMPI, ネットワーク機器などの監視エージェントをインストールできないアラートを検知するのに使います。

よく混同される概念としてsnmpdが挙げられますが、snmpdは監視サーバ(NMS)からのsnmp requestに対して応答する常駐プログラム(デーモン)です。snmptrapdとsnmpdは別の概念ですので、ご注意下さい。

snmptrapd インストールと最小限設定

snmpd インストール [必須]

snmptrapdはnet-snmpというパッケージによって提供されます。yumコマンドでnet-snmpをインストールして下さい。

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

snmp-utils インストール [任意]

必須ではありませんが、net-snmp-utilsも併せてインストールする事をお勧めします。net-snmp-utilsは、snmptrapなどsnmpのデバッグを行うのに有用なツールを多数備えています。使い方については、後述いたします。

snmptrapd.conf トラップ受信許可の設定 [必須]

snmpdの設定は、/etc/snmp/snmptrapd.confというファイルに記述します。SNMPトラップを受信するためには、以下のいずれかの設定が必要となります。

  • disableauthorizationでコミュニティ名による認証を無効化する
  • authCommunityでコミュニティ名単位の受信許可を設定する
snmptrapd.conf トラップ受信許可の設定 – 認証無効化設定

/etc/snmp/snmptrapd.confというファイルを以下のように”disableauthorization yes”という設定を加筆します。

snmptrapd再起動により設定を反映させます。

snmptrapd.conf トラップ受信許可の設定 – コミュニティ名単位の許可

authCommunityと呼ばれるトラップ受信許可の設定を使用する事で、特定のコミュニティ名のみsnmpトラップを受信するようになります。書式は以下の通りとなります。

TYPESとはsnmptrapdがどのような処理を行うかの設定です。log, execute, netの3種類が指定可能です。

type説明
logログ出力を許可します。ファイル出力、標準出力、エラー出力、syslogなどが該当します。
executeプログラムの実行を許可します。例えば、メール転送を行うtraptoemailなどのperlスクリプト等が該当します。
net他のsnmptrapdサーバへの転送を許可します。

多くの場合は、特にsnmptrapdの処理を制限する必要はないので、現実問題として運用しやすい設定は以下のようになります。例えば、”public”, “changineer”というコミュニティからのsnmptrapと受信したいならば、/etc/snmp/snmptrapd.confの設定は以下のようになります。

snmptrapd再起動により設定を反映させます。

UDPポート開放 [必須]

snmptrapはUDP162を使用します。iptablesなどのポート単位の制御を行っている場合は、UDP162を開放して下さい。iptablesの場合の設定例は以下の通りです。

snmpcmd (snmptrapコマンド) による動作確認 [任意]

net-snmp-utilsをインストールすると、snmptrapコマンドを使用してSNMPトラップを送信する事ができます。以下のようなコマンドを使用する事で、localhostに対してSNMPトラップを送信できます。なお、以下の”public”, “changineer”はコミュニティ名です。コミュニティ名は環境に応じて適宜変更して下さい。

送信したトラップが/var/log/messagesに記録されている事を確認します。

ネットワーク機器を用いた動作確認 [任意]

ネットワーク機器にsnmptrapを送信する設定を投入します。ciscoの場合の設定例は以下の通りです。

トラップをテスト送信するため、Loopback interfaceの作成を行います。

snmptrapdサーバの/var/log/messagesを確認し、確かにsnmptrapが届いている事を確認します。

snmptrap メール転送

net-snmp-perl のインストール [必須]

snmptrapをメール転送する方法は多数ありますが、traptoemailというperlスクリプトを使用するのが一番便利です。traptoemailはnet-snmp-perlに同梱されていますので、以下yumコマンドでインストールする事ができます。

snmptrapd メール転送の設定 [必須]

snmptrapをメール転送するには、traphandleという構文を使います。traphandleとは、正確にはsnmptrapをプログラムに渡す指定のことで、traptoemailというプログラムにsnmptrapを渡す事によってメール転送が実現されます。

traphandleの構文は以下のようになります。

全てのOIDをメール転送する設定例は以下の通りです。/etc/snmp/snmptrapd.confを以下のように編集します。

snmptrapd再起動により設定を反映させます。

snmptrapd メール転送 動作確認 [必須]

snmptrapコマンドを用いて、テスト用のトラップを送信します。

トラップが確かにメール転送されている事を確認します。

snmptrap_mail

snmptrapd.conf traphandleの設定例 [任意]

ホワイトリスト形式の指定

全てのsnmptrapをメール転送したくない場合は、メール転送したいトラップのみをsnmptrapd.confに記載します。以下は、CiscoルータのOSPF, BGP, linkdown, linkupをメール転送する設定例です。

ブラックリスト形式の指定

traphandleの記述は上の行から順番に処理され、初めて合致したOIDに対して処理が実施されます。この処理順序を意識すると、ブラックリスト形式の指定ができます。

以下は富士通Primergy以外からのsnmptrapをメール転送する設定例です。”.1.3.6.1.4.1.231.*”に合致するSNMPトラップは/bin/trueが実行されるため、メール転送されなくなります。

動作確認環境

動作確認環境は以下の通りです。

  • 最終動作確認日 : 2015/01/03
  • CentOS 6.6 ( Sakura VPS )
  • net-snmp-libs-5.5-50
  • net-snmp-5.5-50

シェアする

  • このエントリーをはてなブックマークに追加

フォローする