Monitor da ligação à base de dados do Service Provider Foundation

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

Monitoriza a ligação entre o ponto final Web do SPF e a base de dados do SPF.

Knowledge Base article:

Resumo

Monitoriza a conectividade das bases de dados dos servidores Web do SPF. Isto é efetuado periodicamente através de uma ligação de teste à base de dados do Service Provider Foundation.

Causas

Se ocorrer um erro neste monitor, a base de dados não está disponível no servidor ou a segurança do monitor não está corretamente configurada. Consulte detalhes sobre a configuração do monitor na secção Configuração.

Se o monitor estiver corretamente configurado mas ocorrer um erro no monitor, a base de dados está offline ou o servidor de bases de dados está inacessível ao servidor do Service Provider Foundation.

Resolução

Verifique o estado da base de dados do Service Provider Foundation e do servidor de bases de dados.

Configuração

Para que este monitor funcione corretamente, tem de ter permissão para ler a base de dados do Service Management Automation. Crie uma Conta Run As que tenha permissões de leitura para a base de dados e adicione-a ao Perfil Run As denominado Conta de Base de Dados do Microsoft Service Provider Foundation.

As seguintes opções podem ser configuradas neste monitor:

Opção

Definição

Predefinição

Alerta do Estado

Estado de funcionamento do monitor que gera um alerta.

O monitor encontra-se num estado de funcionamento crítico

Prioridade dos Alertas

Prioridade do alerta gerado para este monitor.

Alto

Gravidade do Alerta

Prioridade do alerta gerado para este monitor.

Crítica

Alerta de Resolução Automática

Especifica se o alerta deverá ser automaticamente resolvido quando o monitor regressar a um bom estado de funcionamento.

Verdadeiro

Ativado

Especifica se o monitor deverá ser executado.

Verdadeiro

Gera Alerta

Especifica se o monitor deverá gerar um alerta ao passar para um estado crítico ou de aviso.

Verdadeiro

Intervalo

Número de segundos entre execuções do monitor.

300

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
AccessibilityInternal
Alert Message
AlertIfCantConnectToSpfDatabase
A ligação à base de dados do SPF não teve êxito.
RunAsMicrosoft.SystemCenter.SPF.DatabaseAccount

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.SPF.Monitor.SpfDatabaseScriptMonitor" Accessibility="Internal" 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.SpfDatabaseScriptMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ScriptName>HealthOfSqlServer.ps1</ScriptName>
<ScriptBody><Script>$oAPI = new-object -comObject "MOM.ScriptAPI"
$propertyBag = $oAPI.CreatePropertyBag()

$errorActionSetting = $ErrorActionPreference
try
{
$ErrorActionPreference = "Stop"
Import-Module "$env:COMMONPROGRAMFILES\Microsoft System Center 2012 R2\Service Provider Foundation\Microsoft.SystemCenter.Foundation.Cmdlet.dll"
$stamps = Get-SCSPFStamp
$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>