MSMQ Messages In Queue Threshold Monitor

MSMQ.Queue.MessagesInQueue.Monitor (UnitMonitor)

Element properties:

TargetMSMQ.Queue
Parent MonitorSystem.Health.PerformanceState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMSMQ.QueuePerformance.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
MSMQ Messages In Queue exceeds threshold
The current Messages In Queue is above the threshold.
Queue Name: {0}
Messages In Queue: {1}

Additional Information:
Server: {2}
KBytes In Queue: {4}
Queue Percent Used: {5}
Messages In Journal Queue: {6}
KBytes In Journal Queue: {7}
Journal Percent Used: {8}
RunAsDefault

Source Code:

<UnitMonitor ID="MSMQ.Queue.MessagesInQueue.Monitor" Accessibility="Public" Enabled="true" Target="MSMQ.Queue" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="MSMQ.QueuePerformance.MonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="MSMQ.Queue.MessagesInQueue.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name="QueueName"]$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name="Messages In Queue"]$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name="NetBIOSName"]$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name="Messages In Queue"]$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name="KBytes In Queue"]$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name="Queue Percent Used"]$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name="Messages In Journal Queue"]$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name="KBytes In Journal Queue"]$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name="Journal Percent Used"]$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>903</IntervalSeconds>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<DebugLogging>false</DebugLogging>
<TimeoutSeconds>300</TimeoutSeconds>
<QueueName>$Target/Property[Type="MSMQ.Queue"]/QueueName$</QueueName>
<CounterName>Messages In Queue</CounterName>
<WarningThreshold>500</WarningThreshold>
<CriticalThreshold>1000</CriticalThreshold>
</Configuration>
</UnitMonitor>