Number of Messages

Microsoft.MSMQ.6.3.Monitor.QueueMessageCount.Baseline (UnitMonitor)

Monitors the number of messages in a Queue for baseline learning.

Knowledge Base article:

Summary

This monitor checks the message count in a queue.

Configuration

This monitor is disabled by default. For it to operate, it must be enabled with an override.

The behavior of this monitor may be modified with an override setting of the following parameters.

Alert On State

State in which the Alert is generated.

Alert Priority

Priority of the Alert.

Alert severity

Severity of the Alert.

Auto-Resolve Alert

If the threshold goes below the threshold then Auto-Resolve the alert.

Enabled

Is this monitor enabled or not.

Generates Alert

Will this monitor generate an Alert when the threshold is reached.

Inner Sensitivity

Inner Sensitivity setting for the self tuning threshold.

Interval Seconds

The number of seconds between execution of the test. If this value is set too low, it could result in excessive overhead against the MSMQ service. If it is set to high, an error condition may not be detected within a suitable time. Default setting is 120 seconds (execute the test every 2 minutes).

Outer Sensitivity

Outer sensitivity setting for the self tuning threshold.

Timeout Seconds

The number of seconds the operation has before it is aborted before completing execution.

Causes

Under normal operations, it is expected that the application will receive messages and the queues will be populated up to a certain amount of messages. If the message count grows too much, it can indicate a problem with the receiving application, that application’s ability to read from the queue, or a peak in the usage by the sending application.

Resolutions

Check the connection status of the queue and the applications that may be sending messages to it or the applications that may be receiving messages from it.

Element properties:

TargetMicrosoft.MSMQ.6.3.Queues
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.MSMQ.6.3.Queue.TwoStateBaseliningMonitorWithoutCompression
RemotableTrue
AccessibilityPublic
Alert Message
Queue Message Count Alert
Please see the alert context for details.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.MSMQ.6.3.Monitor.QueueMessageCount.Baseline" Accessibility="Public" Enabled="false" Target="Microsoft.MSMQ.6.3.Queues" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.MSMQ.6.3.Queue.TwoStateBaseliningMonitorWithoutCompression" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.MSMQ.6.3.Monitor.QueueMessageCount.Baseline.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="BelowNormal" MonitorTypeStateID="Below" HealthState="Success"/>
<OperationalState ID="AboveNormal" MonitorTypeStateID="Above" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SignatureID>Microsoft.MSMQ.6.3.Monitor.QueueMessageCount.Baseline.Signature</SignatureID>
<DataSourceSettings>
<IntervalSeconds>600</IntervalSeconds>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<QueuePath>$Target/Property[Type="Microsoft.MSMQ.6.3.Queue"]/PathName$</QueuePath>
<CounterName>Messages In Queue</CounterName>
<LogDetail>false</LogDetail>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSourceSettings>
<LearningAndBaseliningSettings>
<BusinessCycleLengthUnit>Day</BusinessCycleLengthUnit>
<BusinessCycleLengthInGivenUnit>1</BusinessCycleLengthInGivenUnit>
<LearningType>Continuous</LearningType>
<Offset1>3</Offset1>
<Offset2>3</Offset2>
<Offset3>3</Offset3>
<LearningRate>2</LearningRate>
<InitialNoAlertPeriodInBizCycles>1</InitialNoAlertPeriodInBizCycles>
<OuterSensitivity>3.31</OuterSensitivity>
<InnerSensitivity>2.81</InnerSensitivity>
</LearningAndBaseliningSettings>
<SignatureCollectionSettings>
<DBUpdatePeriodInSeconds>900</DBUpdatePeriodInSeconds>
</SignatureCollectionSettings>
</Configuration>
</UnitMonitor>