SNMPについて
今回もSNMPについて記載していきたいと思います。
SNMPトラップの設定について
SNMPトラップをLinux でやるには
エージェント側に net-snmp パッケージが必要で snmpd が起動している必要がある。(snmptrapd の起動は必須ではない)
マネージャ側にも net-snmp パッケージが必要で snmptrapd が起動している必要がある。(snmpd の起動は必須ではない)
エージェント側の設定
ためしにリンクのアップダウンをSNMPトラップで飛ばすようにしてみた。
/etc/snmp/snmpd.conf trapcommunity traptest trap2sink 192.168.100.193 traptest createUser internaluser MD5 "internalpass" rouser internaluser notificationEvent linkUpTrap linkUp ifName ifAdminStatus ifOperStatus notificationEvent linkDownTrap linkDown ifName ifAdminStatus ifOperStatus monitor -r 20 -e linkUpTrap -u internaluser "sampleLinkUp" ifOperStatus != 2 monitor -r 20 -e linkDownTrap -u internaluser "sampleLinkDown" ifOperStatus == 2
trapcommunity でコミュニティ名を指定している(2行目の trap2sink があればなくてもよいかも)
trapcommunity
trap2sink でトラップの転送先を指定している
trap2sink
createUser で内部で監視する用のユーザを指定する(これは /etc/passwd などに実在しなくてもよい)
createUser
rouser で内部監視用ユーザに対するアクセス権を定義する
rouser
notificationEvent でイベントが起きた際に通知する MIB の情報をオブジェクト名もしくは OID で指定する。(イベント名は何でもよい)
notificationEvent ….
monitor で実際に監視するイベントとタイミングを定義する。(イベント名や内部監視用ユーザは上記で作成したものを指定する)
monitor -r -e -u “メッセージ”
snmpd の再起動
/etc/init.d/snmpd restart
今度は以下のようにして memmory のトータル量が 1111000 KB (約 1.1GB) 以下になったらトラップを出すようにしてみた。
/etc/snmp/snmpd.conf notificationEvent memfree memTotalFree monitor -r 20 -e memfree -u internaluser "memory non" memTotalFree < 1111000
snmpd の再起動
/etc/init.d/snmpd restart
これ以外にもおそらく sysName が変わった場合などの文字列 (STRING) の判定もできるはず
だが STRING の場合はうまく取れない
マネージャ側の設定
最低限必要なのは以下の設定である。
/etc/snmp/snmptrapd.conf authCommunity log,execute,net traptest
authCommunity 挙動の設定 受け取るトラップのコミュニティ名
挙動の設定は以下を表す
log はログに出力するという意味。
execute はコマンドを実行する
net は他のネットワークに転送する
またその他にも SNMPv3で接続する際のユーザの設定や、IPの制限や、ログのフォーマットの変更などもできる
設定を変更したら起動、もしくは再起動する。
SNMPトラップの起動
# /usr/sbin/snmptrapd -Lad
もしくは
# /etc/init.d/snmptrapd start
loggerコマンドについて
loggerコマンドに引数をつけて実行すると /var/log/messages ファイルにログが吐き出される。
[root@localhost ~]# logger bakebake [root@localhost ~]# tail /var/log/messages Sep 15 03:09:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="847" x-info="http://www.rsyslog.com"] rsyslogd was HUPed Sep 17 15:07:05 localhost init: serial (hvc0) main process ended, respawning Sep 17 15:13:15 localhost yum[8074]: Installed: 1:net-snmp-5.5-44.el6_4.4.x86_64 Sep 17 15:14:07 localhost snmptrapd[8092]: NET-SNMP version 5.5 Sep 17 15:16:37 localhost root: bakebake