Check maingun status on mackerel
ghostにはmailの設定がある。mailは今のところ、パスワードをわすれた時に再設定メールを送る際に使用される。バージョン0.8からはβ機能の一つのsubscribers機能からも使う(まだメール送信機能は無いっぽいけど)。
送信元メールアドレスの設定方法はいくつかある。
このうち簡単に試せそうなmailgunで設定していた。
こんな感じ。
mail: {
fromaddress: 'lorentzca@ghost.ponpokopon.me',
transport: 'SMTP',
options: {
service: 'Mailgun',
auth: {
user: 'mailgun username', // mailgun username
pass: 'mailgun password' // mailgun password
}
}
}
最近サーバーを引越したタイミングで、DNSレコードの引っ越しミスがあって何日かmailgunが無効になっていたので、気づけるようにしたいと思いMackerelで雑に監視してみた。
監視の方法は、mailgunのapiを叩いてドメイン(mailgunに登録した自ドメイン)のステータスを確認し、active
以外だったらアラートを出すというだけのもの。ansibleで適用している。mailgunのapiを埋め込む部分はとりあえずvaultを使用。
監視スクリプト
check_mailgun.sh
#!/bin/sh
DOMAIN="ghost.ponpokopon.me"
STATUS="active"
RESULT=$( \
curl -s --user 'api:{{ lookup('vault', 'secret/mailgun_apikey') }}' \
https://api.mailgun.net/v3/domains/$DOMAIN | \
jq -r .domain.state \
)
if [ "$RESULT" != "$STATUS" ]; then
echo "mailgun/$DOMAIN is down."
exit 2
fi
echo "mailgun/$DOMAIN status is ok."
exit 0
mackerelプラグインの設定
- check_mailgun.conf
[plugin.checks.mailgun]
command = "/usr/local/sbin/check_mailgun.sh"
notification_interval = 60
max_check_attempts = 2
playbook
- main.yml
# check mailgun
- name: check mailgun script is added
template: src="check_mailgun.sh" dest="/usr/local/sbin/check_mailgun.sh" owner=root group=root mode=0755
when: stage == "prod"
tags: mackerel
- name: check mailgun status on mackerel
copy: src="check_mailgun.conf" dest="/etc/mackerel-agent/conf.d/check_mailgun.conf" owner=root group=root mode=0644
notify:
- restart mackerel-agent
when: stage == "prod"
tags: mackerel
出来た!!
感想
- 今回早く設定したかったのでとりあえずシェルを使って設定したが、golangで書き直す!
- その際もっと汎用的に使える形にする
- 自分で監視項目追加するの面白い
- せっかくmackrel有料アカウントにしたので色々試すぞ!