ZabbixからsSMTPを利用してエラー通知メール送信

今回はsSMTPを利用してRaspbian上のZabbix Serverからアラートメールの送信を行います。
また、合わせてサーバ監視の設定も行いたいと思います。

ただしzabbix agentは利用していません。
今のところはhttp, httpsの監視だけで充分だと考えています。

監視対象ホストの追加

まずは監視対象ホストを追加します。
ホスト設定とメール設定の順番は前後しても問題ないのであまり気になさらず。

まずはzabbixのウェブ管理画面へアクセスして[Configuration] -> [Hosts]と選択してください。
その後create hostを選択して、ホストを追加していきます。

ホスト追加設定1

今回はこのブログサーバを対象に監視しているので、ホストにはドメインを指定。
表示用の名前も同じで充分なので同様に。
グループはデフォルトで用意されていたlinux serverを指定しました。
新しく作成しても、他を指定しても構いません。自分が管理するためのグルーピングですので監視動作自体に影響はないはずです。

またzabbix-gentを利用しなくても Agent interfaces設定は必要になってしまうのでDNSにしつつそれっぽく指定しています。指定しているだけで実際には利用されていません。

ここまで設定ができたら、テンプレートタブを選択して監視する内容を設定します。

ホスト追加設定2

Link new templateのフォーム右にあるselectを押すと、テンプレート一覧が開くのでそこからhttp, httpsを選択して、Addボタンを押した後の画面です。
あとはSaveを選択して保存すれば完了です。

ホスト追加設定3

これで監視対象のホスト設定が追加されました。

sSMTPアラートメール設定

続いてメール送信の設定を行います。
Zabbixのメール送信では送信用のsmtpを設定するものがあります。
しかしsSMTPでは通信の受付を行う用のsmtpを自分自身に持っていないため、この設定が使えません。

仕方がないので他に用意されているスクリプトの設定を行い、そのスクリプトからsSMTPを利用したいと思います。

まずは[Administration] -> [Media Type] -> Create media typeを選択と画面を遷移していきます。
そうすると以下のような画面が表示されるのでタイプがscriptとなる、メディアタイプを追加します。

メール用設定1

次はメールの宛先の設定を行います。
[Administration] -> [Users]と画面を移動して、以下の画面にある Admin (Zabbix Administrator)を選択していきます。

メール用設定2

そうすると画面が遷移しますので、その画面の中からメディアタブを選択して[追加]リンクを選択して設定を行います。

ホスト追加設定3

この設定ではhogehoge@gmail.com宛に、24時間、毎日時間関係なしでメールを送信するようになります。
曜日や時間を設定したい方は時間の設定を編集してください。
個人的には24時間365日しないのであれば、なんのための監視なんだと思いますが。

以上でzabbix上の設定は完了です。

shellスクリプト作成

先ほど設定したシェルを作成します。
また、合わせてもろもろ設定の確認や権限設定をしましょう。

root@raspberrypi:~# cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath  
### Option: AlertScriptsPath  
# AlertScriptsPath=${datadir}/zabbix/alertscripts  
# 設定したシェル配置用directory  
AlertScriptsPath=/etc/zabbix/alert.d/  
  
root@raspberrypi:~# vi /etc/zabbix/alert.d/zabbix-alert-mail.sh  
root@raspberrypi:~# chown zabbix:zabbix /etc/zabbix/alert.d/zabbix-alert-mail.sh   
root@raspberrypi:~# chmod 744 /etc/zabbix/alert.d/zabbix-alert-mail.sh   
root@raspberrypi:~# ls -l /etc/zabbix/alert.d/zabbix-alert-mail.sh   
-rwxr--r-- 1 zabbix zabbix 240 111 00:57 /etc/zabbix/alert.d/zabbix-alert-mail.sh  
root@raspberrypi:~# cat /etc/zabbix/alert.d/zabbix-alert-mail.sh   
#!/bin/sh  
  
export MAIL_TO="$1"  
export SUBJECT="$2"  
export CONTENT="$3"  
  
echo "$CONTENT" > /tmp/mymailinput_$$  
  
mail -E -s "$SUBJECT" $MAIL_TO < /tmp/mymailinput_$$  
rm /tmp/mymailinput_$$  

まずはシェルを配置する場所を確認します。
次にシェルを作成して、権限の設定です。

シェルの中身自体は、先ほど設定していた値がzabbixから渡されるのでそれを利用してmailコマンドを叩いているだけです。
mailコマンドを叩けばsSMTPが利用されるので無事メールが送信されるということですね。

また動作検証を行うときにはhttp通信を落とすためfirewallを閉じるかアプリケーションサーバのデーモンを停止するなどがあります。
私はそもそも起動させてないぜんぜん関係ないサービスを監視対象にして動作検証を行いました。
そもそもhttp, httpsを止めたくはありませんので。

以上で基本的な監視設定は完了かと思います。

あとがき

基本的な設定は完了したとか言いつつ、アラート通知後何分間状態に変化がないと再通知が来るのか気になっています。
そもそもzabbixがどんなことができて、どういう設定があるのか理解していないのであとは随時使いながら覚えていこうと思います。

参考サイト

今回ウェブの管理コンソールからの設定は以下の方のものが非常に参考になりました。
Zabbixを使ってエージェント無しで単純な Webサイト監視だけを行う最短の方法