BIG-IPのアラートをメールで送信する
BIG-IPからアラートメールを送信する方法がなかなか複雑だったので解説します。
この記事は アイソルート Advent Calendar 2022 1日目の記事です。
こんにちは。プラットフォームソリューショングループのsuzuki.koです。
今回は初めてだとハマってしまうBIG-IPのアラートメール送信方法になります。
急に実装を求められ困っている(過去の私のような方)は是非参考にしてください。
目次
BIG-IPのアラートフロー
まずBIG-IPのアラートフローを確認します。
BIG-IPがアラートを出力する際、以下のような順序で処理が行われます。
- アラートが発生する
- syslog-ngプロセスが起動
- syslog-ngがalertdプロセスに警告コードを渡す
- alertdがbigip_error_maps.datと警告コードを照合し、警告名を取得
- user_alert.conf, alert.confで対象の警告名を探し、指定されたアクションを実行
メールでアラートを通知する場合、user_alert.conf, alert.confのアクションでメール送付を指定することになります。
また、Loggerコマンドを使ってsyslog-ngを起動させることでアラート周りのテストを行うことが可能です。
今回はアラートメール設定からアラート送付のテストまでの一連の設定を解説します。
設定の流れ
設定の流れは以下の3ステップになります。
- メールサーバを指定する
- /etc/ssmtp/ssmtp.conf を編集
- tmsh コマンドから編集可能
- 送信するアラートを指定する
- /config/user_alert.conf を編集
- 項目は /etc/alertd/alert.conf から流用して使用
- 各項目の詳細は /usr/share/snmp/mibs/F5-BIGIP-COMMON-MIB.txt. を参照する
- 正しくメール送信されるかテストする
- logger コマンドを使用
- alert code は /var/run/bigip_error_maps.dat から取得
メールサーバを指定する
BIG-IPではssmtpを使用してメールの送信を行います。
ssmtpとは簡易にメールを送信できるソフトウェアです。
/etc/ssmtp/ssmtp.conf
を編集して自身をSNMPサーバに設定します。
編集手順
対象ファイルを直接書き換えることは非推奨であるため、tmshコマンドを利用して編集します。
sys outbound-smtp
がファイルと対応するComponentsです。
以下のように編集します。
config # tmsh
(tmos)# modify sys outbound-smtp from-line-override enabled
(tmos)# modify sys outbound-smtp mailhub xxxx.co.jp:25
(tmos)# modify sys outbound-smtp rewrite-domain bigip.yyyy.co.jp
from-line-override
: 送信元を書き換えるための項目です。mailhub
: メールサーバーのipもしくはFQDNです。コロン使ってポートを指定することもできます。rewrite-domain
: 自身のホスト名を書き込みます。(v13以降から必要になったようです)
送信するアラートを指定する
BIG-IPではSNMPのトラップ項目として設定されている項目に、メール情報を紐づける必要があります。
/config/user_alert.conf
を編集することになります。
SNMPトラップの設定を行う箇所ですが、こちらでメールアドレスと紐づけます。
編集手順
/etc/alertd/alert.conf
から必要な項目を選び、 /config/user_alert.conf
にコピーした上で編集します。
トラップの処理は /config/user_alert.conf -> /etc/alertd/alert.conf の順で行われるため、alert.confを直接編集してもメールは飛ぶのですが、非推奨になります。
例えばPoolが落ちたことを検知して、メールを飛ばす設定は以下になります。
- /config/user_alert.conf
alert BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS {
snmptrap OID=".1.3.6.1.4.1.3375.2.4.0.10";
email toaddress="aaaa@to.co.jp"
fromaddress="bbbb@from.co.jp"
body="free"
}
email toaddress
: 宛先とするメールアドレスです。fromaddress
: 送信元とするメールアドレスです。body
: メールの内容です。自由に記述できます。
SNMPとしてのアラート概要はメールのタイトルとして記述されます。
トラップの詳細が知りたい場合はMIBファイル(/usr/share/snmp/mibs/F5-BIGIP-COMMON-MIB.txt.)を参照します。
正しく設定できてるかテストする
loggerコマンドを使用する事で、テスト用のトラップを飛ばす事が可能です。
テスト手順
loggerコマンドからSNMPトラップを飛ばすために、以下のフォーマットでの記述が必要になります。
logger -p (facility).(level) "(alert code):(log level): (descriptive message)"
facility
: ファシリティ設定です。次で使用するlocal0
は /var/run/bigip_error_maps.dat で設定されているようです。level
: loggerとしてのログレベルです。alert code
: アラートコードです。/var/run/bigip_error_maps.dat で定義されています。log level
: BIG-IPが処理するログレベルです。level
と合わせた方が良いと思われます。descriptive message
: メッセージ内容です。
上で設定した BIGIP_MCPD_MCPDERR_POOL_MEMBER_MON_STATUS
でテストを行う際は、以下のようになります。
logger -p local0.Emerg "01070638:0: test_hogehoge."
おわりに
今回はBIG-IPでアラートメールを送信する方法について解説しました。
他のNW機器と比べてかなり設定が複雑なので戸惑うポイントだと思います。
誰かの参考になっていれば幸いです。
明日の記事は watanabe.t さんによる EC2でS3(Static Website Hosting)をプロキシしたいとき です、お楽しみに!