📝

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

2021/08/10に公開

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