Zabbix のアラートメールを ssmtp で送信する

忘れがちなのでメモっておく
環境は debian 8.5 で Zabbix は 3.0.4

まずは ssmtp をインストールする。
さようなら exim4

# sudo apt-get install ssmtp -y
# sudo apt-get autoremove -y --purge

設定ファイルを適当にセットする

$ sudo vi /etc/ssmtp/ssmtp.conf
root=postmaster
mailhub=mail
hostname=zabbix
FromLineOverride=YES
mailhub=%外部 SMTP サーバー%
AuthUser=%ユーザー ID%
AuthPass=%パスワード%
AuthMethod=LOGIN
UseTLS=YES
UseSTARTTLS=YES

アラート発生時に Zabbix がスクリプトを探しに行くパスを確認しておく。

$ grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

このマシンでは /usr/lib/zabbix/alertscriptsスクリプトを置いておく必要がある。

Zabbix からアラートを受け取って ssmtp に投げるスクリプト公式のをそのまんま使う。

$ vi /usr/lib/zabbix/alertscripts/Zabbix_Alert_Mail.sh
#!/bin/bash
 
to=$1
subject=$2
body=$3
 
cat <<EOF | mail -s "$subject" "$to"
$body
EOF

良く見たら /bin/sh でなくて /bin/bash なので注意。
スクリプトのファイル名(ここでは Zabbix_Alert_Mail.sh)を覚えておく。

Zabbix フロントエンドに繋いでメディアタイプを作成する。
「管理」→「メディアタイプ」→「メディアタイプの作成」とたどってこんな感じ。
送信先」にスクリプトファイルの名称 Zabbix_Alert_Mail.sh を入れる。

f:id:k-side:20160904094000p:plain

次に管理ユーザーにスクリプトのメディアを追加する。
「管理」→「ユーザー」→任意の管理権限のあるユーザー(Admin とか)→「メディア」→「追加」とたどってこんな感じ。 スクリプトパラメータをお忘れ無く。

f:id:k-side:20160904093959p:plain

最後に「設定」→「アクション」→「Report problems to Zabbix administrators」が有効になっているかどうか確認しておく。
これ忘れてすっごい悩んだ。

f:id:k-side:20160904094001p:plain

適当にアラートの発生しそうなことをやってアラートが飛べばOK。

うまくいかなかったら /etc/zabbix/zabbix_server.conf の中の DebugLevel3 くらいにしておくと不具合の状態がログに流れてくる。