HOME >> 鯖缶 >> サーバーの生存確認をする

2007年02月18日

サーバーの生存確認をする

常時稼動するサーバーの生存確認をしたい場合、ping などを使用し、cronで実行させます。

※サービスの生存確認を行うことも出来ますが、ここでは単純にpingでのチェックの方法を紹介します。

# vi /root/checkalive.pl
#!/usr/bin/perl
# サーバーの生存チェック
use Net::Ping;

## 送信先メールアドレス
$to = 'あなたのメールアドレス';
## sendmailのパス
$sendmail = '/usr/sbin/sendmail';
## チェックするホスト一覧
@host = (
    "192.168.1.1",  # チェックしたいサーバーのIPアドレスのリスト
    "192.168.1.2",  # 
    );
## timeout
$timeout = 0.1;
## ホストネーム取得
($hostname) = gethostbyaddr(pack('C4', 127,0,0,1), 2);
## subject
$subject = "[$hostname] alive checker.";
## from
$from = "$ENV{'USER'}\@$hostname";

## routine
@notalive = ();
$pObj = Net::Ping->new("icmp");

## 生存チェック
foreach $host (@host) {
    if(! $pObj->ping($host, $timeout)) {
        push @noalive, $host;
    }
}
$pObj->close();
## リストが無ければ終了
exit if (! @noalive);
# メッセージ作成
$noalive = join "\n", @noalive;
$msg = << "___EOM"; # メールの本文(ヒアドキュメントで変数に代入)
### dead list
$noalive
___EOM

# sendmail コマンド起動
open (MAIL, "| $sendmail -t -i") || die 'sendmail error';
# メールヘッダ出力
print MAIL "From: $from\n";
print MAIL "To: $to\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-Type: text/plain;\n\n";
# メール本文出力
print MAIL "$msg";
# sendmail コマンド閉じる
close (MAIL);

exit;
# chmod +x checkalive.pl

以上のファイルを作成、修正したら実行属性をつけてテストしてください。最初は存在しないリストを追加し、コマンドラインでチェック、動作確認後再度修正して crontab に追加してください。

5分毎にチェックする場合

# crontab -e
*/5 * * * * /root/checkalive.pl

サーバーが停止してしまっている場合、5分毎にエラーメールが送信されてきます。また、実行するサーバーが落ちていると意味が無いので、同じ設定で複数台設定することが望まれます。

※経路が落ちていると結局メールが届かないですが、分からないよりは…

« 一つ前のエントリーへ | HOMEへ | 次のエントリーへ »

【鯖缶カテゴリーの関連記事】

投稿者 on 2007年02月18日 23:00

サーバーの生存確認をするを最後までお読下さいましてありがとうございます。
に関するトラックバックやコメントを受け付けています。
に関する記事をお持ちの方や関連のブログをご紹介ください。
必ず訪問させて頂きます。

このエントリーを友達に紹介する!

友達のメールアドレス:

あなたのメールアドレス:

メッセージ(オプション):

トラックバック

このエントリーのトラックバックURL:
http://www.eitaro-saba.com/mt-tb.cgi/54

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)