ボーカル講座が連載されているかと思いきや、突如話題が変わった、サーバーの死活監視についてwww
簡易的な死活監視を、PHPの標準関数で実現してみます。
cronに登録して、定期的にping送信し、pingが返ってこなければアラートメールを送信する、という仕組みで動かします。
ソースコードは以下の通りです。
<?
// メール送信先と、送信元を設定
$to = “email@yourdomain.com”;
$from = serverdown@yourdomain.com;
// Ping送信先の設定
$vars = Array(
// ここに一行ずつ、IPアドレスを記述。
// “Example”の部分は任意の名前。
“Example” => Array( “ip” => “123.45.67.89”, ),
);
$msg = “”;
foreach($vars as $var){
// pingを送信
if(!pingcheck($var)){
$msg .= “ping NG: “.$var[‘ip’].”n”;
}
}
if($msg){
echo $msg;
// メールで通知
mail($to, “Server Down.”, $msg, “From:”.$from);
}
else{
// 正常の場合はメールで通知しない
echo “Status OK.”;
}
// ping送信用関数
function pingcheck($var){
$ip = $var[“ip”];
// -c 3は、3回pingを送信する
// -W 5は、5秒間隔
$cmd = “ping -c 3 -W 5 $ip”;
$tmp = `$cmd`;
// サーバーによっては、「100.0% packet loss」のケースもありますので、
// あらかじめ念入りにテストしておいて下さい。
if (strpos($tmp, ‘100% packet loss’) !== FALSE) {
return false;
} else {
return true;
}
}
?>
上記ソースを、監視元サーバーに設置し、cronで、以下のように設定します。
*/15 * * * * /usr/bin/php /var/www/html/checkdead.php
上記例では、15分おきの死活監視です。
/usr/bin/phpは、PHPまでのパスのため、サーバーによっては若干違うかも。
/var/www/html/checkdead.phpは、死活監視スクリプトまでのパスになります。
コメントはまだありません