黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

Postfixとcurlで簡単webアプリメールアラート

サービスの死活監視

運用しているサーバの台数が少ない私の場合、監視のためにZabbixやらを導入するのは気が引けますので、サービスが死んでしまっている時にメールアラートが飛ぶような仕組みがあれば十分だと考えています。

ということで、Postfixcurlを使って簡単監視システム(?)を作ってみましょう。


Postfixインストール

まずはPostfixをソースからインストールします。
こちらで各versionのソースコードが公開されているので、ダウンロードします。
最新の安定版は3.0.2っぽいです。

# cd /usr/local/src
# wget http://mirror.postfix.jp/postfix-release/official/postfix-3.0.2.tar.gz
# tar zxf postfix-3.0.2.tar.gz

解凍できたらmakeしましょう。

# cd postfix-3.0.2
# make
 make -f Makefile.in MAKELEVEL= Makefiles
 (echo "# Do not edit -- this file documents how Postfix was built for your machine."; /bin/sh makedefs) >makedefs.tmp
 No <db.h> include file found.
 Install the appropriate db*-devel package first.
 make: *** [Makefiles] エラー 1
 make: *** [Makefiles] エラー 2

失敗。db.hないからdb*-devel入れろって怒られているようです。

# yum install db*-devel

諸々入るのでmake & make install。

# make
# make install
# newaliases

make installを実行すると対話モードでインストール先なんか聞かれますが、とりあえずデフォルト。

version確認と起動確認もしておきます。

# postconf | grep mail_ver
mail_version = 3.0.2
# postfix start
postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
postfix/postfix-script: starting the Postfix mail system

メールサーバは適切に設定しないと他人様に迷惑をかけることになるので、敬遠してきました。
ここをよく読んで、不正中継等を根絶しましょう。


監視

監視といっても、正常にアクセスできるかどうか(Webサイトが200返すか)がわかればそれでいいので、簡単にスクリプトを書きます。

#!/bin/bash

from='' 
to='' 
subject='service is dead'                                                                                                                                          
content=`curl -I example.com -o /dev/null -w '%{http_code}\n' -s`                                                                                                      
                                                                                                                                                           
if [ $content -ne 200 ]; then                                                                                                                                        
  echo "$content" | mail -s "$subject" "$to"                                                                                                                         
fi

あとはcronに登録してあげて動くかどうか確認。


謝辞

Postfix インストールメモ(mail.cfの基本的な設定)- heihooのITメモ -
コマンドでmail送信 - qiita -