однажды с бэк-эндом одного далёкого сервера случался кабздец, и он перестал отзываться, при этом статику сервер отдавал, а то, что обрабывает JAVA код, то видимо ломалось.
как временная мера такому безобразию был накидан примерно вот такой скрипт.
коль баш мне роднее, то пришлось немного погуглить, и нагуглилась вот эта страничка с функцией проверки сайта
Using PowerShell to Query Web Site Information
на всякий случай привожу код ниже полностью.
function Get-WebSite {
<#
.SYNOPSIS
Retrieves information about a website.
.DESCRIPTION
Retrieves information about a website.
.PARAMETER Url
URL of the website to test access to.
.PARAMETER UseDefaultCredentials
Use the currently authenticated user's credentials
.PARAMETER Proxy
Used to connect via a proxy
.PARAMETER TimeOut
Timeout to connect to site, in milliseconds
.PARAMETER Credential
Provide alternate credentials
.NOTES
Name: Get-WebSite
Author: Boe Prox
DateCreated: 08Feb2011
.EXAMPLE
Get-WebSite -url "http://www.bing.com"
Description
------------
Returns information about Bing.Com to include StatusCode and type of web server being used to host the site.
#>
[cmdletbinding(
DefaultParameterSetName = 'url',
ConfirmImpact = 'low'
)]
Param(
[Parameter(
Mandatory = $True,
Position = 0,
ParameterSetName = '',
ValueFromPipeline = $True)]
[string][ValidatePattern("^(http|https)\://*")]$Url,
[Parameter(
Position = 1,
Mandatory = $False,
ParameterSetName = 'defaultcred')]
[switch]$UseDefaultCredentials,
[Parameter(
Mandatory = $False,
ParameterSetName = '')]
[string]$Proxy,
[Parameter(
Mandatory = $False,
ParameterSetName = '')]
[Int]$Timeout,
[Parameter(
Mandatory = $False,
ParameterSetName = 'altcred')]
[switch]$Credential
)
Begin {
$psBoundParameters.GetEnumerator() | % {
Write-Verbose "Parameter: $_"
}
#Create the initial WebRequest object using the given url
Write-Verbose "Creating the web request object"
$webRequest = [net.WebRequest]::Create($url)
#Use Proxy address if specified
If ($PSBoundParameters.ContainsKey('Proxy')) {
#Create Proxy Address for Web Request
Write-Verbose "Creating proxy address and adding into Web Request"
$webRequest.Proxy = New-Object -TypeName Net.WebProxy($proxy,$True)
}
#Set timeout
If ($PSBoundParameters.ContainsKey('TimeOut')) {
#Setting the timeout on web request
Write-Verbose "Setting the timeout on web request"
$webRequest.Timeout = $timeout
}
#Determine if using Default Credentials
If ($PSBoundParameters.ContainsKey('UseDefaultCredentials')) {
#Set to True, otherwise remains False
Write-Verbose "Using Default Credentials"
$webrequest.UseDefaultCredentials = $True
}
#Determine if using Alternate Credentials
If ($PSBoundParameters.ContainsKey('Credentials')) {
#Prompt for alternate credentals
Write-Verbose "Prompt for alternate credentials"
$wc.Credential = (Get-Credential).GetNetworkCredential()
}
#Set TimeStamp prior to attempting connection
$then = get-date
}
Process {
Try {
#Make connection to gather response from site
$response = $webRequest.GetResponse()
#If successful, get the date for comparison
$now = get-date
#Generate report
Write-Verbose "Generating report from website connection and response"
$report = @{
URL = $url
StatusCode = $response.Statuscode -as [int]
StatusDescription = $response.StatusDescription
ResponseTime = "$(($now - $then).totalseconds)"
WebServer = $response.Server
Size = $response.contentlength
Date = $now
}
$report | Out-File -FilePath c:\Tools\checkServer_log.txt -Append
}
Catch {
#Get timestamp of failed attempt
$now = get-date
#Put the current error into a variable for later use
$errorstring = "$($error[0])"
Restart-Service ApacheTomCat9
#Generate report
$report = @{
URL = $url
StatusCode = ([regex]::Match($errorstring,"\b\d{3}\b")).value
StatusDescription = (($errorstring.split('\)')[2]).split('.\')[0]).Trim()
ResponseTime = "$(($now - $then).totalseconds)"
WebServer = $response.Server
Size = $response.contentlength
Date = $now
}
$report | Out-File -FilePath c:\Tools\checkServer_error_log.txt -Append;
}
}
End {
#Display Report
New-Object PSObject -property $report
}
}
for(;;) {
try {
# invoke the worker script
Get-WebSite -url "https://site.ru/Form.php" -TimeOut "15000" -Verbose
}
catch {
# do something with $_, log it, more likely
}
# wait for a minute
Start-Sleep 60
}
чуть выше в коде есть комментарий про соль нашу, это как раз если что-то пошло не так, то рестарт демона
дальше берём вызов этой функции в бесконечный цикл, с паузой 60 секунд, и проверяем…
for(;;) {
try {
# invoke the worker script
Get-WebSite -url "https://site.ru/Form.php" -TimeOut "15000" -Verbose
}
catch {
# do something with $_, log it, more likely
}
# wait for a minute
Start-Sleep 60
}
это просто черновик чтоб не забыть. дальше возможно дополню его