WF 워크플로

Microsoft.SystemCenter.ServiceManager.WWFWorkflows.Monitor (UnitMonitor)

워크플로 모니터

Knowledge Base article:

요약

일반적으로 Windows 워크플로 오류는 다음 이유 중 하나로 인해 발생할 수 있습니다. 활성 경고 보기에 이 오류와 연결된 경고가 있습니다. 경고 정보는 오류의 자세한 원인을 나타냅니다. 관리 팩을 가져온 이후 이 모니터가 빨간색이 되었는데 경고 보기에 경고가 없으면 관리 팩을 가져오기 전에도 시스템에 워크플로 오류가 있었을 수 있습니다. 이 모니터를 녹색으로 전환하려면 Service Manager 콘솔에서 이전 워크플로 오류를 모두 무시하세요.

원인

1. WF 워크플로 실패: 워크플로 오류는 워크플로에서 작동이 중지되도록 한 문제가 발생했음을 나타냅니다. 실패한 워크플로는 일반적으로 알려진 문제가 있음을 의미합니다. 워크플로 계정에 작업을 완료하는 데 필요한 수준의 사용 권한이 없음, 리소스를 사용할 수 없음, 연결 문제 등 여러 이유로 워크플로가 실패할 수 있습니다.

2. WF 워크플로 제출 실패: 이 워크플로가 모니터링 호스트에서 실행하도록 제출되지 않았습니다.

3. WF 워크플로 예외: 워크플로 상태에는 "성공"으로 표시되지만 예외가 발생했습니다. 예상된 결과를 얻었는지 확인해야 하며, 그렇지 않을 경우 워크플로를 시작하기 위해 수행한 작업을 반복해야 할 수 있습니다. 워크플로 코드의 소프트웨어 오류로 인해 실패하고 예외가 발생할 수 있습니다.

4. WF 워크플로 시간 제한: 워크플로가 25분 내에 작업을 완료하지 못하면 시간이 초과됩니다. 워크플로가 시작됨 또는 예약됨 단계에 멈춰 있을 수 있으며, Service Manager 콘솔에서 특정 유형의 워크플로에 대한 관리/워크플로/상태 보기에 있는 "주의 필요" 탭에 나타납니다. 서비스가 다시 시작될 때 실행, 긴 큐, 반환하는 데 시간이 오래 걸리는 API 등 워크플로 시간 초과에는 여러 가지 원인이 있습니다.

해결 방법

WF 워크플로 실패의 경우:

WF 워크플로 제출 실패의 경우:

WF 워크플로 예외의 경우:

WF 워크플로 시간 제한의 경우:

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
Parent MonitorMicrosoft.ServiceManager.Workflows.AvailabilityHealthRollup
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.ServiceManager.WWFWorkflows.Monitor" Accessibility="Public" Enabled="true" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ParentMonitorID="Microsoft.ServiceManager.Workflows.AvailabilityHealthRollup" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="ComponentUnhealthy" MonitorTypeStateID="State1" HealthState="Warning"/>
<OperationalState ID="ComponentHealthy" MonitorTypeStateID="State2" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>60</IntervalSeconds>
<SyncTime/>
<ConnectionString>Provider=SQLOLEDB;Server=$Target/Property[Type='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SmDbHostName$;Database=$Target/Property[Type='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SMDbName$;Integrated Security=SSPI</ConnectionString>
<Query>
SELECT CONVERT(nvarchar,COUNT(*))
FROM dbo.WindowsWorkflowTaskJobStatus
LEFT OUTER JOIN dbo.JobStatusView
ON dbo.[JobStatusView].[BatchId] = dbo.[WindowsWorkflowTaskJobStatus].[BatchId]
LEFT OUTER JOIN dbo.MySubscriptions
ON dbo.[WindowsWorkflowTaskJobStatus].[RuleId] = dbo.[MySubscriptions].[RuleEntityId]
WHERE ((
dbo.[WindowsWorkflowTaskJobStatus].[Processed] IS NULL
AND
( (dbo.[WindowsWorkflowTaskJobStatus].[ErrorMessage] IS NOT NULL)
OR (dbo.[JobStatusView].Status = 3)
OR ((dbo.[JobStatusView].Status = 0 OR dbo.[JobStatusView].Status = 1)
AND
(DATEDIFF(MINUTE, dbo.[JobStatusView].TimeScheduled, GETUTCDATE()) &gt;= 25)
)
OR( dbo.[JobStatusView].Status = 2)
OR( dbo.[JobStatusView].Status is NULL)
)
))
</Query>
<State1Filter>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[1]</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</State1Filter>
<State2Filter>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</State2Filter>
</Configuration>
</UnitMonitor>