私は通常、週に少なくとも20台のサーバーを扱っています。それぞれにクエリを実行し、「稼働中」かどうかを判断するスクリプトを作成することをお勧めします。
- サーバーはApache2またはIIS7のいずれかを実行します。
- ホスティングプロバイダーはさまざまです
- 通常、各サーバーには複数のサイトがあります
- 設定に一貫性がなく、IPに直接アクセスしたときにデフォルトのapache「helloworld」ページが常に存在するとは限りません。
- サイトはすべて仮想ホストです
私が考えていたのは、サーバーからの応答が200 OKであることを確認するために、各サーバーから1つのサイトを取得し、http HEAD要求を行うだけで、それらが稼働しているかどうかを判断する最良の方法でしょうか。明らかに、次の場合、これは「誤検知」の傾向があります。
- サイトの構成/セットアップは、4xxエラーコードを返す必要があるときに200OKを不適切に返します
- 個々のサイト(
<VirtualHost>
)の構成が無効になっている場合、またはサイトが別のサーバーに移動した場合。
しかし、ほとんどの場合、HEADリクエストと200 OKに依存することは、信頼できるはずですよね?ドメインのAレコードが、サイト移動の場合にリストされているものと一致することを確認するだけでなく。
擬似コード:
import http
list = {
'72.0.0.0' : 'domain.com',
'71.0.0.0' : 'blah.com',
}
serverNames = {
'jetty' : '72.0.0.0',
'bob' : '71.0.0.0'
}
for each ( list as server => domain ) {
headRequest = http.head( domain )
if ( headRequest.response == 200 && http.arecord(domain) == server ) {
print serverNames[server] + ' is up ';
} else {
print 'Server is either down or the site attached to the server lookup has moved.';
}
}
おそらくPythonまたはPHPでスクリプトを作成しますが、この質問はロジックについてのみ説明します。