Состояние работоспособности

Microsoft.JEE.Tomcat.6.Deep.Application.AvailabilityHealth.UnitMonitor (UnitMonitor)

Отслеживание состояния работоспособности развернутых приложений для сервера веб-приложений Tomcat 6.x.

Knowledge Base article:

Краткое описание

Монитор индекса доступности приложений отслеживает состояние развернутого приложения и использует следующий запрос для поиска всех доступных приложений:

Проверяется состояние каждого MBean-компонента: "0" означает, что приложение остановлено; "1" — что приложение запущено. Это поведение не соответствует спецификации JSR-77.

Причины

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

Индикатор критического состояния означает, что отслеживаемое приложение находится в состоянии остановки или ошибки.

Решения

Состояние предупреждения означает, что приложение запускается или останавливается. Нажмите кнопку "Заново определить работоспособность", чтобы повторно вычислить состояние работоспособности.

Критическое состояние означает, что приложение остановлено или произошел сбой. Дополнительные сведения см. на вкладке "Контекст предупреждения" страницы "Свойства предупреждения". Остановленные приложения необходимо просто перезапустить, тогда как приложения в состоянии ошибки требуется проверить.

Element properties:

TargetMicrosoft.JEE.Tomcat.6.Application
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.JEE.Deep.Application.TwoState.Query.AvailabilityHealth.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Приложение не выполняется
Приложение "{3}" не выполняется. Это приложение можно определить по параметру ObjectName "{2}" на компьютере {1} для ИД сервера приложений "{0}".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.JEE.Tomcat.6.Deep.Application.AvailabilityHealth.UnitMonitor" Accessibility="Public" Enabled="true" Target="Microsoft.JEE.Tomcat.6.Application" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="JEE!Microsoft.JEE.Deep.Application.TwoState.Query.AvailabilityHealth.MonitorType" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.JEE.Tomcat.6.Deep.Application.AvailabilityHealth.UnitMonitor_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<!-- The alert description should include key properties of: -->
<!-- * the application server id -->
<!-- * the application hostname -->
<!-- * the application object name-->
<!-- * the application name -->
<AlertParameter1>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Id$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ObjectName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ApplicationName$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Healthy" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="NotHealthy" MonitorTypeStateID="NotHealthy" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$</ComputerName>
<Protocol>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$</Protocol>
<Port>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$</Port>
<BaseURL/>
<JMXQuery>Catalina:j2eeType=WebModule,*</JMXQuery>
<AdditionalArguments>&amp;MaxDepth=1</AdditionalArguments>
<RequestBody/>
<!-- This will query all of the available MBeans and -->
<!-- look for the right MBean and update the state as stated -->
<!-- in the SPEC for Tomcat: -->
<!-- * Healthy : state == 1 -->
<!-- * Critical : state == 0 -->
<HealthyExpression>
<SimpleExpression>
<ValueExpression>
<!-- The XPATH if it were applied directly against the XML in a browser should look like: -->
<!-- /MBeans/org.apache.tomcat.util.modeler.BaseModelMBean[@objectName="Catalina:j2eeType=WebModule,name=//localhost/,J2EEApplication=none,J2EEServer=none"]/Properties/state -->
<XPathQuery Type="String">MBeans/MBean[@Name='org.apache.tomcat.util.modeler.BaseModelMBean' and @objectName="$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ObjectName$"]/Properties/Property[@Name='state']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</HealthyExpression>
<NotHealthyExpression>
<SimpleExpression>
<ValueExpression>
<!-- The XPATH should look like: -->
<!-- /MBeans/org.apache.tomcat.util.modeler.BaseModelMBean[@objectName="Catalina:j2eeType=WebModule,name=//localhost/,J2EEApplication=none,J2EEServer=none"]/Properties/state -->
<XPathQuery Type="String">MBeans//MBean[@Name='org.apache.tomcat.util.modeler.BaseModelMBean' and @objectName="$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ObjectName$"]/Properties/Property[@Name='state']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</NotHealthyExpression>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>