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
を入れる。
次に管理ユーザーにスクリプトのメディアを追加する。
「管理」→「ユーザー」→任意の管理権限のあるユーザー(Admin とか)→「メディア」→「追加」とたどってこんな感じ。
スクリプトパラメータをお忘れ無く。
最後に「設定」→「アクション」→「Report problems to Zabbix administrators」が有効になっているかどうか確認しておく。
これ忘れてすっごい悩んだ。
適当にアラートの発生しそうなことをやってアラートが飛べばOK。
うまくいかなかったら /etc/zabbix/zabbix_server.conf
の中の DebugLevel
を 3
くらいにしておくと不具合の状態がログに流れてくる。