ワークフロー モニター
一般に、Windows ワークフローの失敗は、以下のいずれかの理由により発生します。アクティブなアラート ビューに、この失敗に関連付けられているアラートが表示されます。アラートの情報が、失敗の具体的な原因を示します。管理パックがインポートされてアラート ビューにアラートが表示されていない状態のときから、このモニターが赤色になっている場合、管理パックをインポートする前からシステムに失敗した既存のワークフローがあった可能性があります。このモニターを緑色にするには、Service Manager コンソールの古いワークフロー失敗のすべてを無視してください。
1. WF ワークフロー失敗: ワークフローの失敗は、ワークフローで問題が発生したためにワークフローの動作が停止したことを意味します。通常は、失敗したワークフローにより、問題が既知であることが示されます。ワークフローが失敗する理由は、ワークフロー アカウントにアクティビティを完了するために必要なレベルのアクセス許可がない、リソースが利用できない、接続問題があるなど、いくつもあります。
2. WF ワークフロー送信失敗: このワークフローは、監視ホストから実行対象として送信されませんでした。
3. WF ワークフロー例外: ワークフローの状態は “成功” として表示されている一方、例外が発生しています。期待される結果が得られたことを確認します。そうでない場合は、ワークフローを開始するために実行したアクションをもう一度繰り返す必要があります。ワークフロー コードにソフトウェア エラーがあると、ワークフローが失敗して例外がスローされます。
4. WF ワークフロー タイムアウト: ワークフローは、25 分以内にアクティビティを完了しないとタイムアウトになります。タイムアウトになったワークフローは開始フェーズまたはスケジュールされたフェーズで停止している可能性があります。この場合、Service Manager コンソールの特定の種類のワークフローを対象とした [管理/ワークフロー/状態] ビューの [対処が必要] タブに、そのワークフローが表示されます。ワークフローがタイムアウトになる理由は、実行中のサービス再開、長いキュー、戻るまでに長い時間がかかる API など、いくつもあります。
WF ワークフロー失敗の場合
Service Manager コンソールでは、特定の種類のワークフローを対象とした [管理/ワークフロー/状態] ビューの [対処が必要] タブに、失敗した WF ワークフローが表示されます。
[ログの表示] を押してログを開き、ワークフローが失敗した理由に関する情報を入手します。
問題の解決を試みてから、[再試行] を押してワークフローを再実行します。
問題が解決されていなければ、Service Manager 管理サーバー上でヘルス サービスを再開してみてください。
手動で問題が解決された場合は、[無視] ボタンを押して [対処が必要] ビューからワークフローを削除します。
WF ワークフロー送信失敗の場合
Service Manager 管理サーバー上でヘルス サービスを再開します。
WF ワークフロー例外の場合
ワークフローが “成功” として完了しても、意図されたタスクを完了していない場合にワークフローを開始する条件を、手動による手順で再作成します。
ワークフローは、Service Manager コンソールの [管理] ウィンドウにある [ワークフローの状態] ビューに表示されます。
WF ワークフロー タイムアウトの場合
Service Manager コンソールでは、特定の種類のワークフローを対象とした [管理/ワークフロー/状態] ビューの [対処が必要] タブに、タイムアウトになった WF ワークフローが表示されます。ワークフローを再試行して、もう一度実行してみます。問題が手動で解決された場合は [無視] を押します。
ワークフローが実行されていない状態のままになった場合、キューに入れられているすべてのワークフローが再開されるよう、管理サーバー上でヘルス サービスを再開します。
Target | Microsoft.SystemCenter.ServiceManager.SmManagementServer |
Parent Monitor | Microsoft.ServiceManager.Workflows.AvailabilityHealthRollup |
Category | AvailabilityHealth |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | True |
Monitor Type | Microsoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType |
Remotable | True |
Accessibility | Public |
RunAs | Default |
<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()) >= 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>