BIG-IP SNMP trap のテスト

本日も基本的な記事です。
BIG-IP で SNMP trap を意図的に出したいときの方法です。
config を load したり pool member を落としたりってのが簡単ではあるんですけど、擬似的に出す方法もあります。
詳細は下の SOL を読みましょう。
v9.x の場合
SOL7165: Testing SNMP traps on BIG-IP version 9.x
https://support.f5.com/kb/en-us/solutions/public/7000/100/sol7165.html
v10.x の場合
SOL11127: Testing SNMP traps on BIG-IP version 10.x
https://support.f5.com/kb/en-us/solutions/public/11000/100/sol11127.html
微妙に違うんですが、基本は同じです。
まずここで SNMP trap とは何か(書かなくてもいい気がするが)ですが、機械に何か起きたときに外に向かって通知する機能ですね。
例えば BIG-IP だと pool member がおちたよーんとか。
で、何か起きたって判断する基準はログに何かが表示されたときです。
LTM なら /var/log/ltm に特定の文字列が出てくると、trap が発生します。
具体的に見てみます。
/var/log/ltm の抜粋です。

Mar 16 10:01:28 local/bigip notice mcpd[2593]: 01070638:5: Pool member xxx.xxx.xxx.xxx:80 monitor status down.

xxx のとこは実際は member の IP アドレスですよ。
この表示が出ると、trap を出す担当の daemon である alertd が trap を投げます。
なんでこのログが出たら trap すんだよ!っていうのは /etc/alertd/ 以下で定義されています。
一番重要な設定は /etc/alertd/alert.conf で該当部分をまた抜粋します。

alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS {
snmptrap OID=".1.3.6.1.4.1.3375.2.4.0.10"
}

大文字が定義されてる名前で、この OID で trap を出します。
で、この定義を使うのが下です。

[root@bigip:Active] config # grep -i BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS /etc/alertd/*
/etc/alertd/alert.conf:alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS {
/etc/alertd/alert.conf:alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS_UP {
/etc/alertd/bigip_mcpd_error_maps.h:0 LOG_NOTICE        01070638 BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS "Pool member %s:%u monitor status %s."
/etc/alertd/bigip_mcpd_error_maps.h:0 LOG_NOTICE        01070727 BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS_UP "Pool member %s:%u monitor status up."

徐々に見えてきたと思います。
まずログに Pool member xxx.xxx.xxx.xxx:80 monitor status down. が出ます。
alertd は /etc/alertd/ 以下のヘッダファイルと見比べます。
この場合は "Pool member %s:%u monitor status %s." ってのと一致します。
これに該当している名前は BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS ですね。
alert.conf の BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS で定義されている OID で trap を出します。
分かりにくいかも知れませんが、ログで引っ掛けて trap を出していると認識していただければおっけーです。
ということで冒頭の SOL に戻ります。
この SOL では logger コマンドで任意のログを吐かせています。
/etc/alertd/ 以下で定義されているログを強制的に出して、trap を飛ばしているということになります。
v9.x では facility と level とログの内容が一致していれば出るんですが、v10.x ではちょっと厳しくなっていて alert code と level の番号も書いてあげる必要があります。
まあ実にめんどくさいかも知れませんが、使えるといざというとき便利かもしれませんよ。
できることは多くて損はしないと思います。

シェアする

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