Monitor połączeń chronionej sieci szkieletowej

Microsoft.Windows.GuardedFabric.10.0.GuardedHostConnectionMonitor (UnitMonitor)

Monitor jednostkowy oparty na skryptach, który umożliwia okresowe sprawdzanie możliwości nawiązania połączenia z serwerem usługi Ochrona hosta przez chronioną sieć szkieletową.

Knowledge Base article:

Podsumowanie

Oparty na skryptach monitor jednostkowy chronionej sieci szkieletowej, który sprawdza, czy sieć szkieletowa może nawiązać połączenie z adresami URL podanymi w konfiguracji.

Przyczyny

Może to być związane z problemem z połączeniem sieciowym lub problemem z konfiguracją domeny.

Rozwiązania

Problem jest rozwiązywany automatycznie po pomyślnym wykonaniu przez chronioną sieć szkieletową testu ping dotyczącego adresów URL zaświadczania i ochrony klucza.

Element properties:

TargetMicrosoft.Windows.GuardedFabric.10.0.ComputerRole.GuardedHost
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.TimedScript.TwoStateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Błąd połączenia chronionego hosta
Chroniona sieć szkieletowa nie może pomyślnie wykonać testu ping na serwerze usługi Ochrona hosta. Zaświadczanie powiedzie się dopiero po rozwiązaniu tego problemu.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.GuardedFabric.10.0.GuardedHostConnectionMonitor" Accessibility="Public" Enabled="true" Target="HGSDL!Microsoft.Windows.GuardedFabric.10.0.ComputerRole.GuardedHost" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.TimedScript.TwoStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.GuardedFabric.10.0.GuardedHostConnectionMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>3600</IntervalSeconds>
<SyncTime/>
<ScriptName>ClientConnectionMonitor.ps1</ScriptName>
<Arguments/>
<ScriptBody><Script>param ()
$testSuccess = $true
# Get current information about HgsClient
$info = Get-HgsClientConfiguration
$api = New-Object -ComObject 'MOM.ScriptAPI'
$bag = $api.CreatePropertyBag()

if ($info.Mode -ne $null)
{
if($info.Mode.ToString() -ieq "HostGuardianService")
{
$kdsURL = $info.KeyProtectionServerUrl -replace "http://", ""
$kdsURL = $kdsURL -replace "/KeyProtection", ""
# And in the case of https
$kdsURL = $kdsURL -replace "https://", ""

#do the same for the Attestation URL
$attestationURL = $info.AttestationServerUrl -replace "http://", ""
$attestationURL = $attestationURL -replace "/KeyProtection", ""
# And in the case of https
$attestationURL = $attestationURL -replace "https://", ""

try
{
Test-Connection -ComputerName $kdsURL -ErrorAction Stop
Test-Connection -ComputerName $attestationURL -ErrorAction Stop
}
catch [Exception]
{
$testSuccess = $false
}
}
}

$bag.AddValue("Result", $testSuccess)
$bag</Script></ScriptBody>
<TimeoutSeconds>120</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Boolean">Property[@Name='Result']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Boolean">false</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Boolean">Property[@Name='Result']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Boolean">true</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>