十二月 9, 2019

zabbix のアラートが飛ばない時のチェックリスト

環境

  • zabbix 4.0 (日本語追加済み)
  • Ubuntu 18.04LTS (ただしOSはほぼ無関係)

何でこの記事を書いたのか

新規にzabbix 4.0 のサーバーを立てたが、アラートが飛ばず、色々と悩みまくったので調査手順をメモしたかった。

調査

調査は以下の順で行います。全てzabbixの画面上から確認できます。
調査順であって、ひとつを解決して再度テストしてもダメであれば、修正の項を上から確認すると良いかもしれません。

調査1:通知レポート

image.png

通知レポートは、通知を誰に、どのような手段で行ったかの記録です。
メニューから、レポート→通知レポート で参照することができます。
上記の画面は私の環境の実際の表示ですが、上から4回は、誰にも通知がされていないことが確認できます。
ここで確認ができない場合、考えられる原因は、

  • 障害発生時のアクションが設定されていない

※ なお、デフォルトでは設定されていません

調査2:アクションログ

通知レポートに上がったイベントを誰にどの手段で通知したかのログです。
ここにエラーが表示されている場合、マウスオーバーで原因が表示されます。
考えられる要因は、スクリプトのパスがおかしい、ユーザー設定のメディアが指定されていない です。

調査3: これでもダメなら

ログを見るときが来たかもしれません。

/var/log/zabbix/zabbix-server.log を見て、必要であればデバッグモード等を使うことになるかと思います。

修正

修正1: 障害発生時のアクションの設定

設定→アクション で表示される画面です。障害(に限らずですが今回は障害に限って記述します)が発生した時、
何を行うかを設定する画面です。デフォルトでは、 Report problems to Zabbix administrators が登録されていますが
無効になっています。

image.png

チェックポイントは、

  • 一番下の 有効 にチェックが入っていること
  • 実行条件欄に実行条件が登録されていること(デフォルトでは登録されていません)

なお、この設定だと全ての障害でアラートが飛ぶように見えますが、実際はユーザーの通知設定で必要な障害レベルを限定できるので問題ありません。

修正2: 通知メディアの指定

管理→ユーザー→ユーザーを選択 して、メディア をクリックすることで確認できます。
どの手段で障害を通知して欲しいかという設定です。

image.png
image.png

有効な時間帯は、 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)