Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 【PHP】死活監視をPHPの標準関数だけ実現したった

【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は、死活監視スクリプトまでのパスになります。


この記事の最終更新日:2017/10/24
最初に記事を書いた日:2017/10/24

この記事をシェアする

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

関連記事

資料室のトップに戻る

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 【PHP】死活監視をPHPの標準関数だけ実現したった
▲Top