Service Provider Foundation VMM 서버 모니터

Microsoft.SystemCenter.SPF.Monitor.VMMServerConnection (UnitMonitor)

등록된 모든 VMM 서버에 대한 연결을 모니터링합니다.

Knowledge Base article:

요약

SPF 웹 서버에서 VMM 관리 서버 연결을 모니터링합니다. 이 작업은 각각의 등록된 VMM 관리 서버에 대한 테스트 연결을 주기적으로 만들어 수행됩니다.

구성

이 모니터가 올바르게 작동하려면 SPF PowerShell Cmdlet을 실행할 수 있는 권한과 VMM 서버에 대한 연결이 있어야 합니다. VMM 웹 끝점에 대해 지정된 앱 풀 계정과 동일한 권한을 사용하거나 보유한 실행 계정을 만들어 Microsoft Service Provider Foundation VMM 계정이라는 실행 프로필에 추가합니다.

옵션

정의

기본값

경고 상태

경고를 생성하는 모니터의 성능 상태입니다.

모니터가 위험 성능 상태입니다.

경고 우선 순위

이 모니터에 대해 생성된 경고의 우선 순위입니다.

높음

경고 심각도

이 모니터에 대해 생성된 경고의 우선 순위입니다.

위험

경고 자동 해결

모니터가 정상 상태로 돌아갈 때 경고를 자동으로 해결할지 여부를 지정합니다.

True

사용

모니터를 실행할지 여부를 지정합니다.

True

경고 생성

모니터가 경고 또는 위험 상태로 바뀔 때 경고를 생성할지 여부를 지정합니다.

True

간격

모니터가 실행되는 시간 사이의 간격(초)입니다.

300

원인

이 모니터가 오류 상태이면 서버에서 VMM 관리 서버를 사용할 수 없거나, VMM 관리 서버 구성이 변경되었거나, 모니터 보안이 올바르게 구성되지 않은 것입니다. 모니터 구성에 대한 자세한 내용은 구성 섹션을 참조하세요.

모니터가 올바르게 구성되었는데 오류 상태이면 VMM 관리 서버가 오프라인 상태이거나, Service Provider Foundation 서버에 액세스할 수 없는 것입니다.

해결 방법

VMM 모니터링 관리 팩을 사용하여 포트 번호, 계정 권한 및 작업 상태에 대한 VMM 관리 서버 구성을 확인하세요. VMM 작업 상태가 오류 없음을 나타내면 SPF 데이터베이스에 등록된 VMM 서버를 확인해 연결 정보가 올바른지 알아보세요. SPF 서버의 VMM 웹 끝점에 대한 응용 프로그램 풀 계정이 VMM 서버에 대한 액세스 권한으로 프로비전되었는지 확인하세요. 앱 풀 계정 암호의 만료 여부를 확인하세요.

Element properties:

TargetMicrosoft.SystemCenter.SPF.SpfServer
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.ServiceProviderFoundation.PowerShellModule.TwoStateMonitorType.PropertyBag
RemotableTrue
AccessibilityPublic
Alert Message
VMM에 연결할 수 없음
등록된 VMM 서버에 연결하지 못했습니다.
RunAsMicrosoft.SystemCenter.SPF.DatabaseAccount

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.SPF.Monitor.VMMServerConnection" Accessibility="Public" Enabled="true" Target="Microsoft.SystemCenter.SPF.SpfServer" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.ServiceProviderFoundation.PowerShellModule.TwoStateMonitorType.PropertyBag" ConfirmDelivery="false" RunAs="Microsoft.SystemCenter.SPF.DatabaseAccount">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.SPF.Monitor.VMMServerConnection.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='DownVmmServers']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ScriptName>HealthOfVmmServers.ps1</ScriptName>
<ScriptBody><Script>$oAPI = new-object -comObject "MOM.ScriptAPI"
$propertyBag = $oAPI.CreatePropertyBag()

$errorActionSetting = $ErrorActionPreference

$downVmmServers = ""

try
{
$ErrorActionPreference = "Stop"
Import-Module "$env:COMMONPROGRAMFILES\Microsoft System Center 2012 R2\Service Provider Foundation\Microsoft.SystemCenter.Foundation.Cmdlet.dll"
$vmmInstallPath = get-itemproperty "hklm:\software\microsoft\microsoft system center virtual machine manager administrator console\setup" | select-object -ExpandProperty installpath
Import-Module "$vmmInstallPath\bin\Microsoft.SystemCenter.VirtualMachineManager.dll"
$servers = Get-SCSPFServer -ServerType 0
foreach($server in $servers)
{
try
{
$vmmServer = Get-SCVmmServer -ComputerName $server
$vmmServer.Disconnect()
$vmmServer = $null
}
catch
{
$downVmmServers = $downVmmServers + "$server;"
}
}

if($downVmmServers.Length -gt 0)
{
$propertyBag.AddValue("Result", "Error")
$propertyBag.AddValue("DownVmmServers", $downVmmServers)
}
else
{
$propertyBag.AddValue("Result", "Success")
}
}
catch
{
$propertyBag.AddValue("Result", "Error")
}
finally
{
$ErrorActionPreference = $errorActionSetting
$propertyBag
}
</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Result']</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Success</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Result']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Success</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>