У нас есть внутренний сервер IIS, на котором размещено несколько веб-сайтов, которые перенаправляются на внешние размещенные веб-приложения. Иногда люди будут делать сумасшедшие вещи, такие как перезапуск серверов, остановка служб, отключение кабелей, что угодно, это случается ... Я хочу убедиться, что наш внутренний веб-сервер IIS запущен и работает каждые 15 минут, и если нет, попробуйте перезапустить службу и отправьте мне электронное письмо.
Я написал этот сценарий 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? Мне нужно проверить WAS
и IISADMIN
также? Есть ли тот, кто достигнет всего?
Я также думал о проверке кода состояния 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
}
Это была скорее идея мозгового штурма, есть ли лучшие «лучшие практики» для достижения чего-то вроде этого? Я хочу убедиться, что сайт работает и перенаправления работают.
Если вы хотите проверить, доступен ли сайт, лучший способ - запросить страницу и проверить ее содержимое. Проверьте $xHTTP.responseText
или $xHTTP.responseXML
в дополнение к коду состояния во втором скрипте. Однако вы можете захотеть запустить эту проверку с другого хоста, иначе такие вещи, как фильтры пакетов или проблемы с подключением, могут помешать доступу, несмотря на то, что веб-сайт доступен на самом хосте.