我通常每周处理至少二十几台服务器。我认为创建一个查询每个脚本并确定它们是否“正常”的脚本是个好主意。
我在想,最好的方法是确定他们是不是只是从每个服务器上取一个站点并发出http HEAD请求以确保服务器的响应是200 OK?显然,如果出现以下情况,这将容易出现“误报”:
<VirtualHost>
)的配置,或者该站点已移至其他服务器。但是在大多数情况下,HEAD请求并且依赖200 OK应该是可靠的,对吗?同时确保域的A记录与列出的站点移动匹配。< / p>
伪代码:
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编写脚本,但这个问题只是讨论逻辑。
答案 0 :(得分:3)
逻辑对我来说似乎很合理。我建议将其扩展为在apache服务器上使用mod_status模块。在进行头部检查后,还尝试获取/服务器状态并使用它来仔细检查您的服务器是否健康。我在想这样的事情:
statusRequest = http.get('/server-status')
if(statusRequest == 200) {
// Make sure you don't have insane load averages, etc
}
else { /* Check something IIS specific, or just be happy the head check worked */ }
我过去使用的另一种技术是检查我知道应该给404的东西。这样你就有更好的机会知道服务器是否只是将200分发给任何要求的人。 (由于配置错误,我看过一次)