PHPとcronでサーバの障害検知メール
サーバの障害検知メール
自宅サーバがたまに落ちて、しばらく気づかなかったりする。
障害検知メールをphpで書いて、運用することにしました。
メインでwebサーバにしている自宅サーバ以外に、cronが使えるレンタル・サーバを持っているので、そっちにcron設定。
ちなみに、レンタルサーバはinetdを使ってます。低価格のレン鯖だと、さくらとかロリポップとか名前が挙がりますが、個人的にはココが無敵。
月額315円で言語はPython,Perl,PHP,Ruby,C言語、DBはMySQL,PostgreSQL,Berkeley DB,gdbm、更にcron,telnet,sshが使える。
ちなみに、運営もちゃんとした法人なのでしっかりしている。
<?php
/**
* webサーバが落ちたらメールする
*
* cronに毎時00分でチェック設定
* [crontab -e]
* 00 * * * * [/usr/local/bin/php(phpのパス)] [check.php(このスクリプトのパス)]
*/
// 対象サーバ
$addr = "www.○○.com";
$port = "80";
// メール宛先
$to = "○○○@docomo.ne.jp";
$subject = "[server-status]{$addr}:{$port} is dead ?";
$body = "this is [" . __FILE__ . "].\n[{$addr}:{$port}] is dead.\n";
// 実行
$fp = fsockopen($addr, $port, $errno, $errstr, 20);
if (!$fp){
$body .= "date:" . date("Y/m/d H:i:s") . "\nerrno:{$errno}\nerrstr:{$errstr}\n";
mb_send_mail($to,$subject,$body);
print $body;
} else {
// success
}
fclose($fp);
?>



