![]() |
AutoCaller
- 緊急電話連絡ソフト
|
はじめにここでは、WinLogmonを使ってログ監視をおこない、Linuxを経由して外部に通知をおこなう設定事例を説明します。なお、SNMPについての基本的な理解がある人を対象として説明します。 設定事例メールなどの外部への通知手段をもっているLinuxサーバと、外部への直接の通知手段をもたないWindowsサーバがある。 WindowsからLinuxへの通知手段は、SNMPトラップを使用することにする。 Linuxサーバ側SNMPトラップを受信したら、その内容をメールで指定のメールアドレス(sakazuki@sample.jp)に送信する。 基本情報
トラップ受信の設定は、snmptrapd.confに書く。このファイルはデフォルトでは/usr/local/share/snmp/snmptrapd.confにある。 snmptrapd.confの書式は、 traphandle OID|default PROGRAM [ARGS ...] である。簡単な日本語の説明が欲しい場合はこちらを参考。 トラップの種類が少なくて仕訳する必要なければ、defaultのトラップハンドラにメール通知用スクリプトを指定してやればいい。設定例は以下の通り。 traphandle default /usr/local/bin/traptoemail -s mail.sample.jp sakazuki@sample.jp snmptrapd.confの編集が終わったら、snmptrapdを再起動する(もしくは、HUPを送る)。これで、受信したトラップのデータはtraptoemailというスクリプトの標準入力に渡されるようになる。 traptoemailは、net-snmpと一緒にインストールされるトラップをメールで通知するPerlスクリプトだ。短いので、ソースをよんでみるといい。このスクリプトの使い方は-hオプションで実行すると確認できる。 sample:~$ /usr/local/bin/traptoemail -h traptoemail [-s smtpserver] [-f fromaddress] toaddress [...] traptoemail shouldn't be called interatively by a user. It is designed to be called as an snmptrapd extension via a "traphandle" directive in the snmptrapd.conf file. See the snmptrapd.conf file for details. Options: -s smtpserver Sets the smtpserver for where to send the mail through. -f fromaddress Sets the email address to be used on the From: line. toaddress Where you want the email sent to. sample:~$ トラップの送信元が複数あって、送信元ごとに仕訳する必要がある場合はdefaultではなくOIDを指定する。defaultの代わりにOIDを指定した設定を追加してやる。設定例は以下のとおり。 traphandle .1.3.6.1.4.1.12345.0.0 /usr/local/bin/traptoemail -s mail.sample.jp test@sample.jp traphandle default /usr/local/bin/traptoemail -s mail.sample.jp sakazuki@sample.jp このOIDは何にしていいのか悩むところだ。が、結論からいうと送信元と受信側とで揃えてありさえすればなんでもいい。ただ、揃え方には注意が必要だ。 受信側のtraphandleに書くOIDは、送信元の[Generic]が6なら、[Enterprise]と0と[Specific]の値をつなげたものとする必要がある。 【注意】送信側データ部のOIDと揃えるのではない。 [Enterprise]+0+[Specific] なんでこうなのかはわからない。この指定の仕方について説明した文書は、筆者はいままで見かけたことがない。ひょっとするとRFCで決まっているかもしれない。筆者は、snmptrapdのソースを読んでみてようやくここに指定すべきOIDの求めかたが分かった。(snmptrapd_handler.c 900行目近辺のcase SNMP_MSG_TRAPのブロック。) 送信側で、Enterpriseを .1.3.6.1.4.1.12345、 Genericを6、Specificを0 の設定をしていた場合は traphandle .1.3.6.1.4.1.12345.0.0 /usr/local/bin/traptoemail -s mail.sample.jp sakazuki@sample.jp と指定する。 この設定を書いたらsnmptrapdを再起動する(もしくは、HUPを送る)。 Windowsサーバ側上記のトラップハンドラで処理されるようにするためには、WinLogmonのSNMPトラップの設定を以下の通りとする。
この場合、Linux側でどのハンドラで処理されるかを決めるのは、EnterpriseとGenericとSpecificだ。最後のOIDはないのでくどいようだが注意しよう。 Enterprise, Generic, Specificの値の意味やなぜそうなのかを知りたい場合は、下記の書籍などを参照しよう。ただ、よくわからなければ、Genericを6、Specificを0で固定してEnterpriseを適度に変更して運用しておけばいいだろう。
トラブルシューティングトラップが受信されているかどうかわからない場合は、snmptrapdを標準出力モードで起動してトラップを受信させてみる。snmptrpdは下記の用にオプション付きで起動する。 /usr/local/bin/snmptrapd -Pd これで標準出力にトラップの受信データが表示されるので、送られてくるOIDなどがどうなっているか確認する。
|