作業佇列長度

Microsoft.SystemCenter.ServiceManagementAutomation.2012R2.Monitor.MessageQueueLength (UnitMonitor)

檢查 Runbook Worker 佇列中的作業數目。

Knowledge Base article:

摘要

判斷作業佇列長度是否超過指定的閾值。此佇列儲存在 Service Management Automation 資料庫中,因此必須設定監視才能存取資料庫。如需詳細資訊,請參閱<設定>一節。

原因

如果作業佇列長度達到重大限制,則 Worker 無法正確處理作業負載。作業提交速率會高於作業處理速率。

解決方式

增加 Worker 角色的數目。

設定

要讓此監視正確運作,它必須有讀取 Service Management Automation 資料庫的權限。請建立具有資料庫讀取權限的執行身分帳戶,然後將它新增到名為 Microsoft Service Management Automation 資料庫帳戶的執行身分設定檔。

您可以在此監視上設定下列選項:

選項

定義

預設值

警示開啟狀態

產生警示之監視的健全狀況狀態。

監視處於重大的健全狀況狀態

警示優先順序

此監視所產生之警示的優先順序。

警示嚴重性

此監視所產生之警示的優先順序。

重大

自動解決警示

指定當監視恢復狀況良好狀態時,是否應自動解除警示。

True

已啟用

指定監視是否應執行。

True

ErrorThreshold

產生重大健全狀況狀態之佇列中的訊息數目。

20

產生警示

指定當變更為警告或重大狀態時,監視是否應產生警示。

True

間隔

執行監視的間隔秒數。

300

WarningThreshold

產生警告健全狀況狀態之佇列中的訊息數目。

10

Element properties:

TargetMicrosoft.SystemCenter.ServiceManagementAutomation.2012R2.Server.Worker
Parent MonitorSystem.Health.PerformanceState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.ServiceManagementAutomation.2012R2.MonitorType.MessageQueueLength
RemotableTrue
AccessibilityPublic
Alert Message
作業佇列長度已超過閾值。
作業佇列長度已超過閾值。上次測量的值是 {0}。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.ServiceManagementAutomation.2012R2.Monitor.MessageQueueLength" Accessibility="Public" Enabled="true" Target="Microsoft.SystemCenter.ServiceManagementAutomation.2012R2.Server.Worker" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.ServiceManagementAutomation.2012R2.MonitorType.MessageQueueLength" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.ServiceManagementAutomation.2012R2.Monitor.MessageQueueLength.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="OverWarningThreshold" MonitorTypeStateID="OverWarningThreshold" HealthState="Warning"/>
<OperationalState ID="OverErrorThreshold" MonitorTypeStateID="OverErrorThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<Interval>300</Interval>
<DatabaseServer>$Target/Property[Type="SMA!Microsoft.SystemCenter.ServiceManagementAutomation.Server"]/DatabaseServerName$</DatabaseServer>
<DatabaseInstance>$Target/Property[Type="SMA!Microsoft.SystemCenter.ServiceManagementAutomation.Server"]/DatabaseServerInstance$</DatabaseInstance>
<DatabaseName>$Target/Property[Type="SMA!Microsoft.SystemCenter.ServiceManagementAutomation.Server"]/DatabaseName$</DatabaseName>
<WarningThreshold>10</WarningThreshold>
<ErrorThreshold>20</ErrorThreshold>
</Configuration>
</UnitMonitor>