【PHP】死活監視をPHPの標準関数だけ実現したった

このエントリーをはてなブックマークに追加
サーバー運用

ボーカル講座が連載されているかと思いきや、突如話題が変わった、サーバーの死活監視について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は、死活監視スクリプトまでのパスになります。

この記事をシェアする

この記事が役に立ったら、Facebook、Twitter、はてなブックマークなどで、シェアしていただけると嬉しいです(^^)
このエントリーをはてなブックマークに追加
サーバー運用
WordPressのバックアップで、最も手軽で安全な方法【torocca】

アフィリエイターの方にとっても、企業の方にとっても、 今やWordpressは主流なホームページ・ブ …

xserver
レンタルサーバーはxserverがお薦め!7つのよくある質問。

サーバーを借りたいけど、さくら、ロリポップ、ヘテムルなど、どのレンタルサーバーが一番良いのか、悩みま …

さくら
VPSならさくらが断然おすすめな10個の理由

かごやのVPSをはじめ、ConoHa、お名前.com、さくらのVPSなど、たくさんのレンタルサーバー …