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)