【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、はてなブックマークなどで、シェアしていただけると嬉しいです(^^)
このエントリーをはてなブックマークに追加
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


※管理人の承認後に、投稿したコメントが表示されます。
技術資料
[MYSQL] データベースインポートのコマンド

シェル上でエクスポートしたデータベースをインポートする場合のコマンド。 いつも忘れてしまうので、メモ …

技術資料
【PHP】続:fputcsv関数の改行コード

前回、stream_filter_registerを使った、fputcsvの改行コードをLFからCR …

技術資料
【LINUX】ロードアベレージを定期的にメール送信

サーバーのロードアベレージを、cronで定期的にメール送信してみた。下記、一時間に一回送信する例。 …