Amazon Linux に monit を導入するにあたり、若干はまりポイントがあったのでメモ
メールサーバ環境が SMTP 認証/STARTTLS/port 587の場合、monit のバージョン問題が発生した。
該当する修正は下記。
Fixed: Issue #549: Mailserver on port 587 didn't work with STARTTLS.
changelog
https://mmonit.com/monit/changes/
より
環境前提
- Amazon Linux: AMI 2018.03
- メールサーバ: microsoft exchange サーバ / office365サーバ
インストール
デフォルトの Amazon Linux では monit のバージョンが古い(5.2.5)ため、
EPEL を導入して monit (5.25.1) を導入する。
# yum install epel-release
続いて monit のインストール
# yum install monit --enablerepo=rpel --disablerepo=amzn-main
初期設定
設定ファイル: /etc/monitrc
# vi /etc/monitrc
メールサーバ設定として、下記を登録する。tlsv1 では動作しなかったため、tlsv11で実施。
set mailserver smtp.office365.com port 587 username "someone@nci.co.jp" password "xxxxxxxx" using tlsv11
メール本文の設定。
set mail-format {
from: Monit <someone@nci.co.jp>
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
}
フォーマットはサンプルをそのままコピー
office365.com の場合メール送信時に fromアドレスもチェックされる(ログインユーザと違うと送信不可)ので、
smtpログインユーザと同じアドレスを設定する。(someone@nci.co.jpの部分)
送信者名 Monit 部分は自由につけて良い。
続いて送信先を設定
set alert someone@nci.co.jp # receive all alerts
ログファイル監視設定
設定ファイル:任意
試しにapache log を設定した。
# vi /etc/monit.d/apache_error_log.conf
check file apache_error_log with path /var/log/httpd/error_log
if match "shutting" then alert
送信テスト
monit サービスを起動する。
# service monit start
正しく動作すれば、/var/log/monit にログが書き込まれる。
[JST Dec 11 21:12:35] info : Monit daemon with pid [6711] stopped
[JST Dec 11 21:12:35] info : 'localhost.localdomain' Monit 5.25.1 stopped
[JST Dec 11 21:12:36] info : Starting Monit 5.25.1 daemon with http interface at [localhost]:2812
[JST Dec 11 21:12:36] info : 'localhost.localdomain' Monit 5.25.1 started