3
9

More than 5 years have passed since last update.

WindowsからSNMPTRAPを発報しよう

Last updated at Posted at 2017-05-18

やること

Windows2016評価版を使って、SNMPTRAPを発報してみる。

(余談)Zabbixでイベントログを収集・アラーム可能だが、イベントログは雑多の情報が入り混じるため、昔ながらのSNMPTRAPが一番落ち着くのだ。

登場人物

  • windows2016サーバ (kvmのguestOSとして稼働)
  • centos7(snmptrapd)サーバ(kvmのguestOSとして稼働)

設定情報

設定項目 新規or既存
snmptrap宛先IP 192.168.10.189 新規
(イベント)ログ名 Application 既存
(イベント)ソース Testbatch 新規
(イベント)ID 1 既存(未設定)

※個人環境なので適宜読み替えてください。

手順

  1. SNMPサービスの追加と設定
  2. イベントログのソースを事前に追加
  3. evntwin(イベント⇒snmptrap)の設定
  4. イベントを書き込んで検証

SNMPサービスの追加と設定

SNMPサービスの追加

「サーバーマネージャー」⇒「役割と機能の追加ウィザード」⇒「機能」から、「SNMPサービス」を追加
SNMPサービスを追加インストールしておかないと、SNMPTRAP飛ばせないし、evntwinコマンドもインストールされないので必須です。

SNMPサービス設定

「サーバーマネージャー」⇒「サービス」⇒「トラップ」画面で以下を設定。

image.png

コミュニティ名を追加し、次にトラップ送信先を追加。

イベントログのソースを事前に追加

イベントログのソースを事前登録
new-eventlog -logname application -source Testbatch
  • Windows2016では、上記設定が必要のようです。
  • new-eventlogせずに、write-eventlogすると、以下のメッセージが出てしいました。
エラーメッセージ
write-eventlog:ソース名"Testbatch"はコンピューター"localhost"に存在しません。
  • 2012/2008の時は、いきなりwrite-eventlogでもOKだったような気がするけどなぁ。

  • 試しに、write-eventlogが正常終了することを確認する。

write-eventlog
write-eventlog -logname application -source Testbatch -entrytype error -eventid 1 -message "test#1 event" 

evntwin(イベント⇒snmptrap)の設定

evntwinの実行

powershellプロンプトより、evntwinを実行
image.png

eventwinを立ち上げた直後に、画面右下の「編集(E)>>」をクリックすると、上記のような画面になります。
あとは、Application中のTestbatchを選択して、トラップにしたいイベントID=1を選択する。

image.png

何も触らずに、「OK」を押すのみです。

これで設定終了。

イベントを書き込んで検証

windowsにて、write-eventlogを実行してみる。

write-eventlog
write-eventlog -logname application -source Testbatch -entrytype error -eventid 1 -message "test#1 event" 

イベントログに書き込まれていることを確認したら、次を確認。

snmptrap受信側で確認

生のsnmptrapd.log
May 18 07:54:34 localhost snmptrapd[2298]: 2017-05-18 07:54:34 192.168.10.83(via UDP: [192.168.10.83]:57165->[192.168.10.189]:162) TRAP, SNMP v1, community public#012#011.1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104 Enterprise Specific Trap (1) Uptime: 0:13:42.78#012#011.1.3.6.1.4.1.311.1.13.1.9999.1.0 = STRING: "test#1 event#015#012"#011.1.3.6.1.4.1.311.1.13.1.9999.2.0 = STRING: "Unknown"#011.1.3.6.1.4.1.311.1.13.1.9999.3.0 = STRING: "win2016"#011.1.3.6.1.4.1.311.1.13.1.9999.4.0 = STRING: "1"#011.1.3.6.1.4.1.311.1.13.1.9999.5.0 = STRING: "1"#011.1.3.6.1.4.1.311.1.13.1.9999.6.0 = STRING: "test#1 event"

上記snmptrapd.logを見てわかるように、OIDの中身が

OIDの中身を分解してみる
 .1.3.6.1.4.1.311.1.13.1.9.84.101.115.116.98.97.116.99.104
 .1.3.6.1.4.1.311.1.13.1 = 固定OID
 9 = strlen( Testbatch ) = 9文字
 84.101.115.116.98.97.116.99.104 = アスキーコードtoキャラクタすると"Testbatch"
ASのCIIコード確認方法(例)
[root@sv ~]# echo  84.101.115.116.98.97.116.99.104 | sed 's/\./ /g'  | awk '{print "printf \"%x%x%x%x%x%x%x%x%x\n\" "$0;}' | sh
546573746261746368
[root@sv ~]#

tips

  • イベントのログ名を誤って作ってしまった場合(消したい場合)
ログ名の削除
remove-eventlog -logname hogehoge

しかし、この作業後、イベントログの一部が記載されなくなってしまった。
※WindowsOSリブートすると何事もなかったように正常稼働した。

結果

  • windows2012/2008と同じようにevntwin使えるが、new-eventlogしとかないとwrite-eventlogがエラーになる。
  • トラップのOIDは、固定OIDに"ソースの文字列長"+"ソース名のasciicode"で構成される。
  • (重要)同じイベントソースで、eventidのみを変えた場合は、specific-trapの情報のみが変更される。
3
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
9