12
1月
0

サーバー監視スクリプト(HttpdChk.pl)


プロバイダから貸してもらえるWEBスペースはperlが使えてtelnet、sshでのログインも可能でcronまで使えるのです。

そこで以前から自宅サーバーを監視するのにhttp接続を行うperlスクリプトを書いて(wgetもインストールして)ずっと監視してきていたのですが、結構適当に作ったスクリプトだったのでちゃんと作り直そうと思ったのです。

今回はwgetや余計なライブラリ、モジュール等をできるだけ使わないように書き直しました。

■主な機能
・Socketを使用したhttp接続のチェック(SSL非対応です)
・http接続時にGETしたソースの1行目の文字列の判定
・スクリプトの二重起動を防ぐ排他処理
・監視対象を複数設定可能
・エラー通知の宛先を複数設定可能

■設置方法

1.HttpdChkのダウンロード

ダウンロード

2.HttpdChk.plの設定

————————————————————————
01:#!/usr/bin/perl -w



26:my $ScriptDir = ‘/PathTo/HttpdChk’;
28:my $SendMail = ‘/usr/lib/sendmail’;
30:my $MailFrom = ‘from@example.jp’;
32:my $Subject = ‘httpd alert’;
34:my $MaxCount = 3;
36:my $LockTimeout = 20;
38:my $ConnTimeout = 10;
————————————————————————

01行目:perlのパス
26行目:作業ディレクトリ(HttdpChkディレクトリまでのフルパス)
28行目:sendmailまでのパス
30行目:エラー通知の送信者メールアドレス
32行目:エラー通知の件名
34行目:何回エラーが出たらエラー通知を送信するか
36行目:前回の処理が終わっていない場合の待機時間(秒)
38行目:http接続が成功するまでの待機時間(秒)

3.HttpdChk.confの設定

以下のフォーマットに基づいて記述します。
[Host][:Port][/Path] [Space|Tab] [SendEmail1,2,3…] [Space|Tab] [SuccessfulMessage]

[Host]
監視対象ホスト。
[:Port]
監視対象ホストのポート(指定が無い場合は80で接続)。
[/Path]
監視対象ホストのファイル、ディレクトリ。
[Space|Tab]
設定の区切り(半角スペース若しくはタブ)。
[SendEmail1,2,3…]
エラー通知の送信先メールアドレス(複数指定する場合は「,」で区切る)。
[Space|Tab]
設定の区切り(半角スペース若しくはタブ)。
[SuccessfulMessage]
httpd接続に成功した場合にGETしたソースの1行目の文字列。
主に監視対象ホストのhttp接続以外のチェックに使用します。

例)
監視対象ホストにデータベース接続が正しくできるかチェックするスクリプト(dbcheck.cgi)を設置して
www.example.jp/dbcheck.cgi to@example.jp Database connection successful
と設定。

dbcheck.cgiは接続に成功した場合は
print “Content-Type:text/plain\n\n”;
print “Database connection successful\n”;
を出力
dbcheck.cgiは接続に失敗した場合は
print “Content-Type:text/plain\n\n”;
print “エラーメッセージ\n”;
を出力

※詳しくはHttpdChk.conf記載のサンプルをご覧ください。

4.サーバーに設置
HttpdChk.pl[700]/HttpdChk.conf[644]/HttpdChk.res[644]の入ったHttpdChkディレクトをサーバーに設置します。(※[ ]の数字はパーミッション)

最後にHttpdChk.plをcronに追加して完了です。

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.
Post your comment