Size of Messages

Microsoft.MSMQ.10.0.Monitor.QueueBytes.Baseline (UnitMonitor)

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

Knowledge Base article:

Summary

This monitor checks the size of messages 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 in a timely manner as they are added to the queue. The size of these messages will build up a baseline. If the application starts to receive messages above the baseline it may indicate a change in the application sending messages.

Resolutions

Check the application and queue that is sending messages that size to verify it’s an expected behavior.

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.MSMQ.10.0.Monitor.QueueBytes.Baseline" Accessibility="Public" Enabled="false" Target="Microsoft.MSMQ.10.0.Queues" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.MSMQ.10.0.Queue.TwoStateBaseliningMonitorWithoutCompression" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.MSMQ.10.0.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.10.0.Monitor.QueueBytes.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.10.0.Queue"]/PathName$</QueuePath>
<CounterName>KBytes 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>