Самое старое сообщение

Microsoft.MSMQ.10.0.Monitor.Queue.OldestMessage (UnitMonitor)

Этот монитор проверяет возраст самого старого сообщения в очереди.

Knowledge Base article:

Сводка

Этот монитор проверяет возраст самого старого сообщения в очереди.

Конфигурация

Этот монитор по умолчанию отключен. Для того чтобы этот монитор работал, он должен быть включен с переопределением.

Поведение монитора можно изменить, переопределив значения следующих параметров.

IntervalSeconds

Число секунд между выполнением теста. Если это значение слишком мало, оно может вызвать чрезмерную нагрузку на службу MSMQ. Если оно слишком велико, ошибки могут не быть обнаружены вовремя. Значение по умолчанию — 120 секунд (тест выполняется каждые 2 минуты).

Пороговое значение предупреждения

Возраст самого старого сообщения в секундах, при достижении которого должно возникнуть состояние предупреждения.

Пороговое значение ошибки

Возраст самого старого сообщения в секундах, при достижении которого должно возникнуть состояние ошибки.

Причины

При нормальной работе предполагается, что приложения будут получать сообщения своевременно по мере их добавления к очереди. Если сообщение остается в очереди продолжительный период времени, это может означать проблему с получающим приложением или способностью приложения читать из очереди.

Решения

Проверьте состояние подключения очереди и приложений, которые могут получать сообщения из нее.

Element properties:

TargetMicrosoft.MSMQ.10.0.Queues
Parent MonitorSystem.Health.PerformanceState
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.MSMQ.10.0.MonitorType.QueueStatistic.ThreeState
RemotableTrue
AccessibilityPublic
Alert Message
Возраст самого старого сообщения в очереди превысил порог.
Дополнительные сведения см. в контексте оповещения.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.MSMQ.10.0.Monitor.Queue.OldestMessage" Accessibility="Public" Enabled="false" Target="Microsoft.MSMQ.10.0.Queues" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.MSMQ.10.0.MonitorType.QueueStatistic.ThreeState" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.MSMQ.10.0.Monitor.Queue.OldestMessage.AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ExceededErrorThreshold" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="ExceededWarningThreshold" MonitorTypeStateID="WarningState" HealthState="Warning"/>
<OperationalState ID="WithinThreshold" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<QueuePath>$Target/Property[Type="Microsoft.MSMQ.10.0.Queue"]/PathName$</QueuePath>
<CounterName>Oldest Message Age</CounterName>
<LogDetail>false</LogDetail>
<WarningThresholdValue>0</WarningThresholdValue>
<ErrorThresholdValue>0</ErrorThresholdValue>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>