SNMPTrapのMIBを利用したOID部分の変換について
ZabbixにSNMPTrapを飛ばす際、MIBを参照してメッセージの変換を考えています。
SNMPTrapを受信してZabbixに表示させるところまではできているのですが、
OIDの部分の変換ができず困っています。
何が不足しているかわかりますでしょうか。
受信メッセージは次のようになっています。
23:21:18 2018/11/08 .1.3.6.1.4.1.9.9.43.2.0.1 Normal "Status Events" testrouter - Notification of a configuration management event as commandLine running startup
「.1.3.6.1.4.1.9.9.43.2.0.1」の部分を「ciscoConfigManEvent」のように変換できればと考えています。
Zabbixサーバー側では次のように設定をしています。
内容は変更箇所を抜粋しています。
# vi /etc/snmp/snmptrapd.conf
--
authCommunity log,execute,net public
traphandle default /usr/sbin/snmptthandler
--
# vi /etc/snmp/snmptt.ini
--
date_time_format = %H:%M:%S %Y/%m/%d
syslog_enable = 0
/etc/snmp/snmptt.CISCO-CONFIG-MAN-MIB.conf
--
# vi /etc/snmp/snmptt.conf
--
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $ar $1
--
# vi /etc/sysconfig/snmptrapd
--
OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid -M /usr/share/snmp/mibs:/usr/share/snmp/private-mibs -m all"
--
# vi /etc/snmp/snmp.conf
--
MIBDIRS /usr/share/snmp/mibs:/usr/share/snmp/private-mibs
MIBS all
--
MIBファイルは「CISCO-CONFIG-MAN-MIB.my」を次の用に処理しています。
# snmpttconvertmib --in=/usr/share/snmp/private-mibs/CISCO-CONFIG-MAN-MIB.my --out=output
# cat output | sed 's/^FORMAT /FORMAT ZBXTRAP $aA /' > /etc/snmp/snmptt.CISCO-CONFIG-MAN-MIB.conf
SNMPTrap送信に利用しているルータはCisco892で、writeコマンドの実行でこのトラップが飛びます。
よろしくお願いいたします。
heya - 投稿数: 319
snmptt.ini で mibs_environment = ALL と設定してください。
kkono - 投稿数: 7
ご連絡ありがとうございます。
snmptt.ini で mibs_environment = ALL を追加、snmpttを再起動してみましたが内容は変わりませんでした。
snmptranslateでは正常に表示されます。
# snmptranslate .1.3.6.1.4.1.9.9.43.2.0.1
CISCO-CONFIG-MAN-MIB::ciscoConfigManEvent
その他に確認すべき点がありますでしょうか。
kkono - 投稿数: 7
さらに次の設定を追加することで変換できました。
# vi /etc/snmp/snmptt.ini
--
net_snmp_perl_enable = 1
translate_log_trap_oid = 1
--
結果、メッセージは次のようになりました。
10:00:37 2018/11/09 ciscoConfigManEvent Normal "Status Events" testrouter - Notification of a configuration management event as commandLine running startup
ありがとうございました。
heya - 投稿数: 319
ああ、MIB ファイルは標準の場所じゃないんですね。たぶん、snmp.conf とか snmptrapd.conf の設定は snmptt には関係ないので、ディレクトリが分かってないんだと思います。
単純には、MIB ファイルを標準の場所に置けばいいんだと思います。それができない場合は、snmptt 起動時の環境変数で MIBDIRS を設定すればよさそうな気がしますが、どうやるんでしたっけ・・・。
kkono - 投稿数: 7
MIBファイルはどんどん増えていきそうなのであえて分けています(/usr/share/snmp/private-mibs)。
でも標準の場所(/usr/share/snmp/mibs)に置いてもうまく動かなかったような…
ひとまずは分けたこの状態で行きたいと思います。
ありがとうございました。
heya - 投稿数: 319
ああ、すみません、できたというのを読み飛ばしていたみたいです。
で、うまくいったということは、ディレクトリは問題じゃなかったということみたいですね。
>net_snmp_perl_enable = 1
>translate_log_trap_oid = 1
これの存在を忘れていました。自己解決できたようでよかったです。