AWS上での監視サーバー(Zabbix)構築【10.メール通知(SES)】

AWS上での監視サーバー(Zabbix)構築【10.メール通知(SES)】

監視サーバーをAWS上で構築し、CML上のネットワーク機器/サーバーを監視します。監視ソフトウェアはZabbixを利用します。

【前回】AWS上での監視サーバー(Zabbix)構築【9.メール通知(SNS)】

目次

ネットワーク構成

下記のネットワーク環境を構築し、AWS上のEC2(Zabbixサーバー)から、CML上のネットワーク機器/サーバーを監視できるようにしていきます。

【参考】AWSサイト間VPNの構築(1.AWSの基本設定)

ネットワーク構成

Zabbixからのメール通知(AWSのSESを利用)

AWS上のZabbixからメールを送信する場合、SNSやSES等のAWSのサービスを利用する方法があります。今回は、SESを利用したメール送信方法を説明します。

【AWS】SESでメールアドレス確認

ここでは、送信元・送信先の両方が、自身が確認できるメールアドレスということを前提としています。

SESの「Email Addresses」から「Verify a New Email Address」をクリックします。

SESのメールアドレス確認開始

「Email Address」に送信元となるメールアドレスを入力し、「Verify This Email Address」をクリックします。

SESのメールアドレス確認

下記の画面が表示され、入力したメールアドレスに確認のメールが送信されます。

SESのメールアドレス確認

登録した直後は、「Verification Status」が「pending verification」となっています。

SESのメールアドレス登録直後

入力したメールアドレスに下記のメールが送信されるので、確認用のURLをクリックします。

SESのメールアドレス登録確認メール

確認が完了すると、「Verification Status」が「verified」に変わります。

SESのメールアドレス確認後の登録状況

一度、この状態でメール送信のテストを行ってみます。

登録したメールアドレスにチェックを入れ、「Send a Test Email」をクリックします。

SESのメール送信テスト

下記の通り入力し、「Send Test Email」をクリックします。

To:送信先のメールアドレス
Subject:TEST - SES ※任意のメール件名
Body:test - SES ※任意のメール本文
SESのメール送信テスト

下記のようなメッセージが表示され、送信エラーとなります。これは、SESのデフォルト状態では、送信先メールアドレスの確認も必要なためです。

Email address is not verified. The following identities failed the check in region AP-NORTHEAST-1: XXXXXXXXXX@XXXXX.XX.XX (Request ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)

SESのメール送信テストNG

送信先のメールアドレスも、送信元と同様に登録します。

SESのメールアドレス確認

この状態で再度テストを行い、下記のようなメールが送信されることを確認します。

SESのメール送信テストOK

【Zabbix】メディアタイプの作成

Zabbixの「管理」→「メディアタイプ」から、「メディアタイプの作成」をクリックします。

Zabbixのメディアタイプの作成開始

下記の通り入力し、「追加」をクリックします。

名前:SES-Alert-Notification ※任意の名前
タイプ:スクリプトを選択
スクリプト名:ses_notification.sh ※任意の名前
スクリプトパラメータ:下記の4つを追加
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
送信元メールアドレス ※変数としてではなく、メールアドレスを直接入力します。

Zabbixのメディアタイプの作成

メディアタイプが追加されたことを確認します。

Zabbixのメディアタイプの作成確認

【Zabbix】スクリプトの作成

メディアタイプから実行するスクリプトを作成します。

ZabbixをインストールしたEC2にSSHログインし、下記を実行します。

cd /usr/lib/zabbix/alertscripts/
sudo vi ses_notification.sh

下記を記述します。

#!/bin/bash

TO=$1
SUBJECT=$2
MESSAGE=$3
FROM=$4

echo "`date` $TO $SUBJECT" >> /tmp/zabbix-ses.log

if [ "$SUBJECT" = "" -o "$TO" = "" ]; then
  echo "usage: $0 {TO SUBJECT MESSAGE FROM}"
  exit 1
fi

if [ "$MESSAGE" = "" ]; then
  MESSAGE=$SUBJECT
fi

aws ses send-email --from $FROM --to $TO --subject "$SUBJECT" --text "$MESSAGE"

作成したスクリプトに実行権限を付与します。

sudo chmod +x ses_notification.sh

ログ保存用のファイルを作成し書き込み権限を付与します。

touch /tmp/zabbix-ses.log
sudo chmod 666 /tmp/zabbix-ses.log

【Zabbix】スクリプトのテスト

作成したスクリプトが問題なく動作することを確認します。

./ses_notification.sh 送信先メールアドレス "TEST - SES - scripts" "test - SES - scripts" 送信元メールアドレス
[ec2-user@ip-10-0-0-100 alertscripts]$ ./ses_notification.sh 送信先メールアドレス "TEST - SES - scripts" "test - SES - scripts" 送信元メールアドレス
{
    "MessageId": "0106017c64c3377c-fcbe9ec5-aaf3-4046-9376-8edda67e42b6-000000"
}
[ec2-user@ip-10-0-0-100 alertscripts]$ 

下記のようなメールが送信されることを確認します。

Zabbixのスクリプト確認メール

ログに出力されていることを確認します。

cat /tmp/zabbix-ses.log
[ec2-user@ip-10-0-0-100 alertscripts]$ cat /tmp/zabbix-ses.log 
XXXX年 XX月  X日 X曜日 XX:XX:XX JST XXXXX@XXXXX TEST - SES - scripts

【Zabbix】メディアタイプのテスト

作成したメディアタイプの「テスト」をクリックします。

Zabbixのメディアタイプのテスト開始

下記の通り入力し、「テスト」をクリックします。

送信先:送信先のメールアドレス
件名:TEST – SES – メディアタイプのテスト ※任意のメール件名
メッセージ:test – SES – メディアタイプのテスト ※任意のメール本文

Zabbixのメディアタイプのテスト

「メディアタイプのテストに成功しました。」と表示されれば、テストは成功です。

ZabbixのメディアタイプのテストOK

下記のようなメールが送信されることを確認します。

Zabbixのメディアタイプのテストメール

「メディアタイプのテストに失敗しました。」と表示される場合は、下記を参照してください。

メディアタイプのテストに失敗しました。
– You must specify a region. You can also configure your region by running “aws configure”.

【Zabbix】ユーザーのメディアに登録

「管理」→「ユーザー」から、「Admin」をクリックします。

Zabbixのユーザのメディア登録開始

「メディア」をクリックします。

Zabbixのユーザのメディア登録

「追加」をクリックします。

Zabbixのユーザのメディア登録

下記の通り入力し、「追加」をクリックします。

タイプ:作成したメディアタイプを選択
送信先:送信先のメールアドレス
有効な時間帯:任意入力
指定した深刻度の時に利用:任意でチェック
有効:チェックを入れる

Zabbixのユーザのメディア登録

メディアに追加されていることを確認し、「更新」をクリックします。

Zabbixのユーザのメディア登録確認

【Zabbix】アクションの作成

ここでは、ServerへのICMPノード監視で障害を検知した場合に、メールが送信されるようにします。

「設定」→「アクション」から、イベントソースで「トリガー」を選択し、「アクションの作成」をクリックします。

Zabbixのアクション作成開始

任意の名前を入力します。ここでは、「SES-Alert-Action」としています。

Zabbixのアクション作成

新規条件で「トリガー」を選択し、”unavailable by icmp ping”と入力し、「Server: Unavailable by ICMP ping」を選択します。

Zabbixのアクション作成

対象のトリガーが選択されたことを確認し、「追加」をクリックします。

Zabbixのアクション作成

実行条件に追加されたことを確認します。

Zabbixのアクション作成

「実行内容」を選択し、「新規」をクリックします。

Zabbixのアクション作成

「ユーザーに送信」の「追加」をクリックします。

Zabbixのアクション作成

「Admin」にチェックを入れ、「選択」をクリックします。

Zabbixのアクション作成

「次のメディアのみ使用」で、作成したメディアタイプを選択します。

Zabbixのアクション作成

選択した「ユーザーに送信」と「次のメディアのみ使用」を確認し、「追加」をクリックします。

Zabbixのアクション作成

実行内容に追加されたことを確認し、「追加」をクリックします。

Zabbixのアクション作成

アクションが追加されたことを確認します。

Zabbixのアクション作成確認

障害検知の確認

ICMPノード監視の登録方法は下記を参照してください。
AWS上での監視サーバー(Zabbix)構築【6.監視登録(ICMPノード監視)】

Router1のGi0/1をshutdownし、Serverへの疎通が通らないようにします。

Router1
int Gi0/1
shut

Zabbix上で、Serverの障害が検知されることを確認します。

Zabbixの障害検知

アクションにマウスカーソルを当てると、アクションが実行されていることが分かります。

Zabbixの障害検知のアクション確認

下記のようなメールが送信されることを確認します。メール本文に対象のホスト名等が表記されます。

Zabbixの障害検知メール

以上で、AWS上での監視サーバー(Zabbix)構築【10.メール通知(SES)】の説明は完了です!

【前回】AWS上での監視サーバー(Zabbix)構築【9.メール通知(SNS)】

  • URLをコピーしました!
  • URLをコピーしました!
目次