- - PR -
wwwの監視
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-04-06 14:20
お世話になります。
wwwのサービスが起動されているかをチェックする ツールを作成する必要があります。 具体的には、Cron等のジョブスケジューラで定期的にツールを実行し wwwサービスが起動していない時は、管理者にメール送付したいです。 そこで、wwwサービスが起動していない時は 一般的にどう判断すればよいかを教えて頂きたいです。 なお、ツールを設置するサーバとwwwのサービスを提供するサーバは別になります。 Telnetでもよいのかと思ったのですが シェルの中でコマンド入力待ちの状態をどうクリアするのかが不明です。 --------------- -bash-3.00# telnet xxx.xxx.xxx.xxx 8080 試行中... xxx.xxx.xxx.xxx に接続されました。 エスケープ文字は '^]' です。 --------------- ↑続けて、"GET /index.html HTTP/1.0"と入力したいが シェルでどう自動化するのかわかりません。 以上です。 |
|
投稿日時: 2006-04-06 14:51
こんにちは。
リソースが十分にあるのならツールを用いた方が理想的だと思います。 ※Nagios など。 シェルスクリプトのお話ですと、 対話的なプログラムを組むのに expect というものがあります。 http://www.linux.or.jp/JM/html/expect/man1/expect.1.html ご参考までに。 |
|
投稿日時: 2006-04-06 15:44
こんにちは。
このてのツールはタイムアウトやらしきい値やら考慮すべき点がけっこうありますので、本格的にシステムの運用に使用するのであればこういった製品を使うのも手です。 (予算が許せばですが^^;) http://wwwcsoft.kgt.co.jp/product/wsb/product_info.html |
|
投稿日時: 2006-04-06 17:20
ご回答ありがとうございます。
教えていただいた情報をもとにお客様にご提案したいと思います。 ところで、自作する事になった場合を想定して 勉強しているのですが、実行すると結果が以下の通りになります。 --------------- </body> </html> 接続がクローズされました。 ksh: パイプに書かれたデータを読み取るプロセスがありません。 # --------------- 実行したコマンドは以下になります。 #( sleep 1 ; echo GET /index.html HTTP/1.0; sleep 1 ; echo; sleep 1; echo; ) | telnet 172.30.6.112 8080 2>&1 メッセージ表示の考えられる原因を教えてください。 もしくは、もっとスマートな方法を押してください。 |
|
投稿日時: 2006-04-06 20:02
こんばんは。
telnetを使うよりも、wgetを使用したほうがよいと思います。 wget -q -O - http://foo.com | grep hogehoge とかやって特定ページ内の特定の文字列(hogehoge)にヒットしなかった場合にメールを送るようなシェルを書いてやれば実現できると思います。 あとは色々調べてみてください。 |
|
投稿日時: 2006-04-06 21:06
2004年12月号の日経Linuxに書いてありましたが、bash にはネットワーク機能があるそうです。
"--enable-net-redirections" を付けて configure すれば使えるのですが、CentOS 標準の bash では使えました。 このネットワーク機能を使うと、 $ exec 3<> /dev/tcp/localhost/80 $ echo -e "HEAD / HTTP/1.0\n\n" >&3 $ while read l <&3 ; do echo $l ; done でWebサーバのヘッダーの取得が出来ます。 Webサーバが落ちていれば、Connection refused になるので、それを判断すればチェック出来ると思います。 $ exec 3<> /dev/tcp/localhost/26 bash: connect: Connection refused bash: /dev/tcp/localhost/26: Connection refused いかがでしょう? |
|
投稿日時: 2006-04-06 23:05
モジュールインストールすれば、
perlならもうちょっと楽ですけど。 シェルじゃなきゃだめですかね? |
|
投稿日時: 2006-04-07 16:52
お世話になります。
シェル(しかもsh)でないとダメらしく また、追加モジュールは不可との事。 純粋にtelnetでやりたいとの事。 エラーメッセージを解析するしかなさそうですが どなたか、教えていただけませんか? --------------- # ./chk_www.sh ( sleep 1 ; echo GET /index.html HTTP/1.0; sleep 1 ; echo; sleep 1 ; echo ) | te lnet 172.30.6.112 8080 > /tmp/chk_www.tmp.28974 2>&1 # ./chk_www.sh: パイプに書かれたデータを読み取るプロセスがありません。 |