読者です 読者をやめる 読者になる 読者になる

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);
?>