LoginSignup
76
71

More than 5 years have passed since last update.

Zabbixのアラートメールにグラフ画像を添付する

Last updated at Posted at 2014-12-09

Zabbixでアラートメールを受信した後、Zabbix Webで該当項目のグラフを参照したりしますよね?
Zabbix Webは外出先からでは直接アクセスできない環境にあることも多いと思います。
そこでアラートメールだけで直近のデータ遷移が確認できるように
該当アイテムのグラフ画像を、メールに添付するアラートスクリプトを作りました。

zabbix 2.5.0 (3.0 alpha版) でも動作することを確認しました。

スクリプトの設定

Zabbixサーバに alertscriptの設置

$ cd /etc/zabbix/alertscripts
$ wget https://raw.githubusercontent.com/ma3ki/sendimgmail/master/sendimgmail.sh
$ wget https://raw.githubusercontent.com/ma3ki/sendimgmail/master/sendimgmail.conf
$ chmod 755 sendimgmail.sh

sendimgmail.confの設定

※設定変更する必要がある項目のみ記述

項目 初期値 説明
ZABBIX_URL http://127.0.0.1/zabbix Zabbix WebのURL
ZABBIX_USER admin Zabbix Webのログインユーザ
ZABBIX_PASS zabbix Zabbix Webのログインパスワード
BASIC_USER - ログインユーザ(BASIC認証必要時)
BASIC_PASS - ログインパスワード(BASIC認証必要時)
MODE 0 グラフ(0)かスクリーン(1)かを設定
IMAGE_TEMP /var/tmp/imgtmp テンポラリディレクトリ(zabbix権限で書き込める必要あり)
MAIL_FROM hogehoge@example.com アラートメールのFromアドレス
MAIL_NAME zabbix_alert アラートメールのディスプレイ表示名
SMTP_URL smtp://127.0.0.1:25 アラートメールのSMTPサーバURL
PRITEXT user.info syslogのレベルとファシリティ
VERBOSE 1 ログレベルを詳細(1)か通常(0)かを選択
PROCESS_LIMIT 10 同時プロセス数制限値
CULROPTS --silent --show-error curlオプション

設定を環境に合わせて変更

$ vi sendimgmail.conf

添付ファイルの送信に使用する mutt コマンドをインストール

$ sudo yum install mutt

テスト

デフォルトのZabbixサーバの監視設定がされていれば、下記コマンドでテストメールが送信できるはず。

$ sudo su - zabbix
$ cd /etc/zabbix/alert
$ ./sendimgmail.sh ma3ki@ma3ki.net "test_subject" "$(echo -e "host: Zabbix server\nkey: system.cpu.load[percpu,avg1]")"

ma3ki@ma3ki.netを、実際の送信先に変更して実行する

Zabbixへの設定

メディアタイプの設定

sendimgmailを追加
スクリーンショット 2014-12-10 1.03.01.png

ユーザのメディアの設定

sendimgmailの送信先を追加
スクリーンショット 2014-12-10 1.05.36.png

アクションの設定

アクション、実行条件、実行内容を追加
スクリーンショット 2014-12-10 1.06.40.png

default-messages
[検知日時] {EVENT.DATE} {EVENT.TIME}
[ホスト名] {HOSTNAME}
[IPアドレス] {IPADDRESS}

[アイテム名] {ITEM.NAME}
[アイテムキー] {TRIGGER.KEY}
[アイテム値] {ITEM.VALUE}

[コメント]
{TRIGGER.COMMENT}

[グラフ情報]
host: {HOSTNAME}
key: {TRIGGER.KEY}
recovery-messages
[検知日時] {DATE} {TIME}
[ホスト名] {HOSTNAME}
[IPアドレス] {IPADDRESS}

[アイテム名] {ITEM.NAME}
[アイテムキー] {TRIGGER.KEY}
[アイテム値] {ITEM.VALUE}

[グラフ情報]
host: {HOSTNAME}
key: {TRIGGER.KEY}

アクションの実行内容で上記で設定したメディアを使用する
host と key を元にグラフを探し、存在する場合のみ添付をします。
グラフが存在しない場合は、添付なしのメールが配送されます。
このスクリプトを使用してアラートメールを送信する場合、グラフがあろうがなかろうが host と key 項目は必要です。

アラートメールの例

  • アラートメール
    IMG_1475.PNG

  • リカバリーメール
    IMG_1476.PNG

テスト環境

スクリプトは下記の環境でテストしています。
- CentOS 7.1
- Zabbix 2.4

動作補足

  1. プロセス上限に達した場合は、添付なしのメールを送信する
  2. グラフが複数存在するアイテムは、複数グラフを添付する
  3. スクリーンモードでスクリーンが見つからない時は、該当アイテムのグラフだけを添付する
  4. 1つのグラフが複数のスクリーンに設定されている時は、最初のスクリーンに登録されているグラフのみを添付する
  5. グラフが複数存在するアイテムで、それぞれのグラフが別々のスクリーンに登録されている時は、それぞれのスクリーンに登録されているグラフを添付する
  6. 20秒以内に更新された対象のグラフデータがテンポラリに存在する時は、更新をしない
  7. スクリーンにグラフ以外のデータが登録されていた場合、そのデータは無視する
  8. グラフデータの取得などに時間がかかり、30秒以内にメール送信処理まで終わらない場合は、落ちます。落としたくない方はZabbixからの実行時に & などを付けて実行するランチャースクリプトを挟んでください。
76
71
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
71