zabbix のアラートが飛ばない時のチェックリスト
date: "2019-12-09 13:52:00 +0900"
環境
- zabbix 4.0 (日本語追加済み)
- Ubuntu 18.04LTS (ただし OS はほぼ無関係)
何でこの記事を書いたのか
新規に zabbix 4.0 のサーバーを立てたが、アラートが飛ばず、色々と悩みまくったので調査手順をメモしたかった。
調査
調査は以下の順で行います。全て zabbix の画面上から確認できます。
調査順であって、ひとつを解決して再度テストしてもダメであれば、修正の項を上から確認すると良いかもしれません。
調査 1:通知レポート
通知レポートは、通知を誰に、どのような手段で行ったかの記録です。
メニューから、レポート → 通知レポート で参照することができます。
上記の画面は私の環境の実際の表示ですが、上から 4 回は、誰にも通知がされていないことが確認できます。
ここで確認ができない場合、考えられる原因は、
- 障害発生時のアクションが設定されていない
※ なお、デフォルトでは設定されていません
調査 2:アクションログ
通知レポートに上がったイベントを誰にどの手段で通知したかのログです。
ここにエラーが表示されている場合、マウスオーバーで原因が表示されます。
考えられる要因は、スクリプトのパスがおかしい、ユーザー設定のメディアが指定されていない です。
調査 3: これでもダメなら
ログを見るときが来たかもしれません。
/var/log/zabbix/zabbix-server.log を見て、必要であればデバッグモード等を使うことになるかと思います。
修正
修正 1: 障害発生時のアクションの設定
設定 → アクション で表示される画面です。障害(に限らずですが今回は障害に限って記述します)が発生した時、
何を行うかを設定する画面です。デフォルトでは、 Report problems to Zabbix administrators
が登録されていますが
無効になっています。
チェックポイントは、
- 一番下の 有効 にチェックが入っていること
- 実行条件欄に実行条件が登録されていること(デフォルトでは登録されていません)
なお、この設定だと全ての障害でアラートが飛ぶように見えますが、実際はユーザーの通知設定で必要な障害レベルを限定できるので問題ありません。
修正 2: 通知メディアの指定
管理 → ユーザー → ユーザーを選択 して、メディア をクリックすることで確認できます。
どの手段で障害を通知して欲しいかという設定です。
有効な時間帯は、 1-7 (毎日), 00:00-24:00 (24 時間) です。
指定した深刻度ののチェックボックスで、どの深刻度の時に通知が欲しいかを制御できます。
ここでメディアがひとつも指定されていないユーザーに通知をしようとした場合、アクションログ画面で、!マークが表示され、通知するメディアが登録されていない旨のエラーが表示されます。
蛇足
以下、蛇足です。
障害を発生させる方法
- 適当なホストに適当な項目を追加(数字が良いと思います)
- 上記で追加した項目にトリガーをセット。最新値 = 1 なら障害のような
-
zabbix_sender -s zabbixホスト -z 登録したホスト名 -k 登録したキー -o 1
で障害発生 -
zabbix_sender -s zabbixホスト -z 登録したホスト名 -k 登録したキー -o 0
で障害解除
障害を二度連続で発生させてもアラートが飛ばないので一度解除する必要あります
蛇足 2:設定ミス集
- zabbix_server.conf の AlertScriptPath の指定が間違っていた
- AlertScriptPath にスクリプトを置いたが、実行可能にしていなかった
- 管理 → メディアタイプ でスクリプトを設定したが、スクリプト名が間違っていた
- 管理 → メディアタイプ でスクリプトを設定したが、パラメタが間違っていた (スクリプトにログ仕込みましょう)
- メールを飛ばすようにしていたが、ローカルの postfix がエラーを出していた (see /var/log/mail.log)
Discussion