PEARを用いたサービス監視
あるネットワーク内のサーバーを、別のネットワークからサービス監視する場合の方法のひとつとして、
PEARのHTTP_Requestを用いた方法があります。
▽インストール
# pear install HTTP_Request
▽見本
<?php
require_once("HTTP/Request.php");
define("ADMIN_EMAIL", "管理者メールアドレス");
define("WATCH_URL", "http://www.lockon.co.jp");
$objReq =& new HTTP_Request(); //オブジェクト生成
$objReq->setUrl(WATCH_URL); //監視対象のURL
$objReq->sendRequest(); //リクエスト送信
$code = $objReq->getResponseCode(); //レスポンスコード取得//接続不可
if(!$code) {
$err_subject = WATCH_URL . "からの応答を確認できません。";
} else {
//サーバーエラー
if(ereg("^5", $code)) {
$err_subject = WATCH_URL . "のサーバーエラーが発生しました。";
$err_body = "Code:" . $code;
}
//ユーザーエラー
if(ereg("^4", $code)) {
$err_subject = WATCH_URL . "が見つからない、または不正なリクエストです。";
$err_body = "Code:" . $code;
}
}if($err_subject) {
mb_send_mail(ADMIN_EMAIL, $err_subject, $err_body);
}?>
また、phpにopensslが組み込まれていない場合、httpsサイトからのレスポンスが帰ってきませんので、phpコンパイル時に、以下のコマンドでサポートさせます。
# ./configure --with-openssl=(openssl_dir)
# php -m | grep openssl
openssl
HTTP_Requestを使用することにより、ユーザーがブラウザでリクエストを送信する操作を、PHPスクリプト上からでも可能にします。
サービス監視といえば代表的なnagiosなどが挙げられますが,小規模なシステムの場合であれば、上記のような監視スクリプトを用いて、あとはcronなどで定期的に実行させるだけでも、十分事足りるかと思います。

