第4回 障害発生通知 (3/5)

技術特集

1_zabbix4_tit

tit_zabbix
3)日本語メールの送信

メッセージ送信で注意が必要な点として、標準で用意されているメール送信機能(メディアのEmail)では、MIMEを利用してUnicodeでメールが送信されるため、受信するメールサーバやメールクライアントによっては文字化けが発生して読めない場合があります。

そういった場合は、Zabbixの日本のコミュニティであるZABBIX-JPが公開しているメール送信用のスクリプトを利用することで、文字コードをISO2022-JPに変換して、旧来のテキストメールとしてメール送信を行うことができます。

ご参考:ZABBIX-JPが公開している通知関連のスクリプト群

https://github.com/zabbix-jp/plugins/tree/master/notification

では、実際に公開されているスクリプトを利用して設定を行う方法を見ていきましょう。

まず、標準で用意されているメディア以外を利用してメッセージを送信する場合は、メディアとして実行するスクリプトを登録しておくことが必要になります。

新規にメディアとして登録するためには、「管理」->「メディアタイプ」から登録を行うのですが、事前に実行するスクリプトとして、githubからsendmessage_smtp_php.shとphpmailerディレクトリ以下の ファイルを取得しておき、

/usr/lib/zabbix/alertscripts

ディレクトリ以下にコピーします。
シェルスクリプトに関しては、実行権限を付与しておくことを忘れないようにしてください。

日本語メール送信を行うために必要となる各スクリプトは、以下のURLから取得できます。

https://github.com/zabbix-jp/plugins/tree/master/notification/sendmessage-smtp-php

例えば、以下のような手順でスクリプトをダウンロードしてコピーしてください。
gitコマンドががインストールされていなかったら「# yum install git」でインストールしておいてください。

最初に、

$ git clone https://github.com/zabbix-jp/plugins.git

でローカルにcloneしておいて、それらのファイルの中から以下のようにして先のディレクトリ以下にコピーします。

1
2
3
# cp plugins/notification/sendmessage-smtp-php/sendmessage_smtp_php.sh /usr/lib/zabbix/alertscripts/
# cp -r plugins/notification/sendmessage-smtp-php/phpmailer /usr/lib/zabbix/alertscripts/
# chmod +x /usr/lib/zabbix/alertscripts/sendmessage_smtp_php.sh

また、「sendmessage_smtp_php.sh」では、様々なメールサーバに対応しているのですが、それぞれの環境に合わせた設定が必要です。

例えば、メール送信前に認証が必要であるとか、利用するポート番号を指定することが必要であるメールの環境もあると思いますので、その環境に合わせた設定を行ってください。

設定例:認証が不要なSMTPサーバを利用する場合

1
2
$MAIL_SMTP_HOST = 'localhost.localdomain:25';
$mailer->SMTPAuth = false;

設定例:Gmailを利用する場合

1
2
3
4
$MAIL_SMTP_HOST = 'ssl://smtp.gmail.com:465';
$MAIL_SMTP_USER = 'xxxxxxxx';
$MAIL_SMTP_PASS = 'yyyyyyyy';
$mailer->SMTPAuth = true;

※「xxxxxxxx」には、Gmailのメールアドレスをgmail.comも含めて指定してください。

※ただし、これを利用してGmailでメール送信する場合、Googleアカウントのセキュリティ設定で「安全性の低いアプリのアクセス」に対して「有効」と設定しておくことが必要です。

あと、PHPのバージョンによっては、TimeZoneが設定されていないという警告が表示されるようですので、sendmessage_smtp_php.shの頭の方の行で、明示的にTimeZoneを設定することをお勧めしておきます。

設定例:

1
date_default_timezone_set("Asia/Tokyo");

スクリプトが配置できたら、メディアとして登録します。

メニューで「管理」->「メディアタイプ」と遷移し、「メディアタイプの作成」ボタンをクリックしてください。

名前には「日本語メール送信」などと名前をつけ、タイプとしては「スクリプト」を選択してください。
スクリプト名には、先ほどコピーしたスクリプト「sendmessage_smtp_php.sh」を指定して「保存」ボタンをクリックして保存してください。

zbx_action_japanesemail

これで、以降、メッセージ送信先のメディアとして「日本語メール送信」を選択することができるようになります。