验证 IIS 或 ISS 网站是否正常运行的最佳实践?

验证 IIS 或 ISS 网站是否正常运行的最佳实践?

我们有一个内部 IIS 服务器,它托管多个重定向到外部托管 Web 应用程序的网站。有时人们会做一些疯狂的事情,比如重启服务器、停止服务、拔掉电缆,随便什么都会发生……我想每 15 分钟验证一次我们的内部 IIS Web 服务器是否正常运行,如果没有,请尝试重启服务并给我发送电子邮件。

我编写了这个 powershell 脚本,但不确定这是否是实现此目的的最佳方法?

###################################################################
# Summary: Verify W3SVC service is running, send email if it's down
###################################################################
##############################
# Get service status
##############################
$serviceName = "W3SVC"
$serverName = hostname

$status = (Get-Service $serviceName).Status

if ($status -ne "Running"){
    sendMail "$serviceName" "$serverName"  #sendmail is a function (not shown)
    Restart-Service $ServiceName
}else{
        # Service is running, do nothing;
}

但是我不确定这是否W3SVC是检查 IIS7 是否启动的最佳服务?我是否还需要检查WASIISADMIN是否有可以完成所有任务的服务?

我也考虑过检查这些主机的 HTTP 状态代码,但即使网站已关闭而 IIS 已启动,我的返回代码也会返回200。这更像是一个头脑风暴的想法,是否有更好的“最佳实践”来完成这样的事情?

$url = "http://intranet_site"
$xHTTP = new-object -com msxml2.xmlhttp;
$xHTTP.open("GET",$url,$false);
$xHTTP.send();
$xHTTP.status # returns the status code 
    if ($xHTTP.status -ne "200"){
        sendMail "$serviceName" "$serverName"
        Restart-Service $ServiceName
    }

这更像是一个头脑风暴的想法,有没有更好的“最佳实践”来实现这样的事情?我想验证网站是否正常运行并且重定向是否正常工作。

答案1

如果您想检查某个网站是否可用,最好的方法是请求一个页面并检查其内容。除了第二个脚本中的状态代码外,还要检查$xHTTP.responseText$xHTTP.responseXML。不过,您可能希望从另一台主机运行此检查,否则尽管网站在主机本身上可用,但数据包过滤器或连接问题等因素可能会阻止访问。

相关内容