2016年5月4日水曜日

ZabbixでGmailを使って障害メールを送信する設定

Zabbixで検知した障害をメール送信させる際に、GmailのSMTPサーバを使って送信する設定メモ。

スクリプトのダウンロード・配置

Zabbixの標準機能では実装できないようなので、以下からメール送信用のスクリプトをダウンロードする。

zabbix-jp/plugins
※「Download ZIP」ボタンから「plugins-master.zip」をダウンロード
https://github.com/zabbix-jp/plugins

ダウンロードしたスクリプトを解凍し、zabbix-server.confの「AlertScriptsPath」で指定されたディレクトリへ、フォルダごと配置する。私の環境の場合の配置先は以下ディレクトリとなる。

/etc/zabbix/alertscripts/

スクリプトの設定パラメーター編集

配置したスクリプト/etc/zabbix/alertscripts/sendmessage-smtp-php/sendmessage_smtp_php.shに対して、vi等にてパラメーター編集を行う。Gmailを使う場合は以下のように設定すれば良い。

--------------------
$MAIL_FROM      = "zabbix@localhost";
$MAIL_FROMNAME  = "Zabbix 障害通知";
$MAIL_SMTP_HOST = 'ssl://smtp.gmail.com:465';
$MAIL_SMTP_USER = '<gmailユーザー名>';
$MAIL_SMTP_PASS = '<gmailユーザーのパスワード>';
--------------------

Zabbixの設定

◆「管理」→「メディアタイプ」にてスクリプトを登録。

・名前:sendmessage_smtp_php.sh
・タイプ:スクリプト
・スクリプト名:sendmessage-smtp-php/sendmessage_smtp_php.sh
 ※絶対パスではなく「AlertScriptsPath」からの相対パスで記載



◆「管理」→「ユーザー」にてメール送信先の設定を実施。

・タイプ:sendmessage_smtp_php.sh
・送信先:<送信先メールアドレス>
・有効な時間帯: 1-7,00:00-24:00
・指定した深刻度のときに使用:すべてにチェック



◆「設定」→「アクション」にてメール送信時の条件を設定。
・名前:send mail
・デフォルトの件名:{TRIGGER.STATUS}: {TRIGGER.NAME}
・デフォルトのメッセージ:
--------------------
Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}

Item values:

1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}

Original event ID: {EVENT.ID}
--------------------
・リカバリメッセージ:チェックなし



・計算のタイプ:(A) and (B) and (C)
・アクションの実行条件:
--------------------
(A) メンテナンスの状態 期間外 メンテナンス
(B) トリガーの値 = 障害
(C) トリガーの深刻度 >= 軽度の障害
--------------------



メール送信テスト

設定完了したら実際にメールが飛ぶが試してみる。例として、ESXiからSNMPのwarm startを受信した際のメールは以下の内容となる。

--------------------
【件名】
Zabbix 障害通知 <hogehoge@gmail.com>

【本文】
Trigger: SNMP Trap
Trigger status: PROBLEM
Trigger severity: Average
Trigger URL:

Item values:

1. SNMP Trap log (esx01:snmptrap[]): 06:02:10 2016/05/04 PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [192.168.33.11]:20623->[192.168.33.22]
  errorstatus                    0
  messageid                      0
  community                      public
  transactionid                  69
  errorindex                     0
  requestid                      0
VARBINDS:
  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (0) 0:00:00.00
  SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: SNMPv2-MIB::warmStart
  SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 192.168.33.11
  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "public"
  SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: SNMPv2-MIB::snmpTraps
2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*

Original event ID: 200697
--------------------

参考資料

日本語アラートメールの送信方法
http://www.zabbix.jp/node/1441