# WildFly Server by JMX ## Overview For Zabbix version: 6.2 and higher Official JMX Template for WildFly server. This template was tested on: - WildFly, version 22.6.0 ## Setup > See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/jmx) for basic instructions. Metrics are collected by JMX. This template works with standalone and domain instances. 1. Enable and configure JMX access to WildFly. See documentation for [instructions](https://docs.wildfly.org/23/Admin_Guide.html#JMX). 2. Copy jboss-client.jar from `/(wildfly,EAP,Jboss,AS)/bin/client` in to directory `/usr/share/zabbix-java-gateway/lib` 3. Restart Zabbix Java gateway 4. Set the user name and password in host macros {$WILDFLY.USER} and {$WILDFLY.PASSWORD}. Depending on your server setup, you may need to specify a custom JMX scheme in macro {$WILDFLY.JMX.PROTOCOL} (default: remote+http) ## Zabbix configuration No specific Zabbix configuration is required. ### Macros used |Name|Description|Default| |----|-----------|-------| |{$WILDFLY.CONN.USAGE.WARN.MAX} |

The maximum connection usage percent for trigger expression.

|`80` | |{$WILDFLY.CONN.WAIT.MAX.WARN} |

The maximum number of waiting connections for trigger expression.

|`300` | |{$WILDFLY.DEPLOYMENT.MATCHES} |

Filter of discoverable deployments

|`.*` | |{$WILDFLY.DEPLOYMENT.NOT_MATCHES} |

Filter to exclude discovered deployments

|`CHANGE_IF_NEEDED` | |{$WILDFLY.JMX.PROTOCOL} |

-

|`remote+http` | |{$WILDFLY.PASSWORD} |

-

|`zabbix` | |{$WILDFLY.USER} |

-

|`zabbix` | ## Template links There are no template links in this template. ## Discovery rules |Name|Description|Type|Key and additional info| |----|-----------|----|----| |Deployments discovery |

Discovery deployments metrics.

|JMX |jmx.get[beans,"jboss.as.expr:deployment=*"]

**Filter**:

AND

- {#DEPLOYMENT} MATCHES_REGEX `{$WILDFLY.DEPLOYMENT.MATCHES}`

- {#DEPLOYMENT} NOT_MATCHES_REGEX `{$WILDFLY.DEPLOYMENT.NOT_MATCHES}`

| |JDBC metrics discovery |

-

|JMX |jmx.get[beans,"jboss.as:subsystem=datasources,data-source=*,statistics=jdbc"] | |Pools metrics discovery |

-

|JMX |jmx.get[beans,"jboss.as:subsystem=datasources,data-source=*,statistics=pool"] | |Undertow metrics discovery |

-

|JMX |jmx.get[beans,"jboss.as:subsystem=undertow,server=*,http-listener=*"] | ## Items collected |Group|Name|Description|Type|Key and additional info| |-----|----|-----------|----|---------------------| |WildFly |WildFly: Launch type |

The manner in which the server process was launched. Either "DOMAIN" for a domain mode server launched by a Host Controller, "STANDALONE" for a standalone server launched from the command line, or "EMBEDDED" for a standalone server launched as an embedded part of an application running in the same virtual machine.

|JMX |jmx["jboss.as:management-root=server","launchType"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Name |

For standalone mode: The name of this server. If not set, defaults to the runtime value of InetAddress.getLocalHost().getHostName().

For domain mode: The name given to this domain

|JMX |jmx["jboss.as:management-root=server","name"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Process type |

The type of process represented by this root resource.

|JMX |jmx["jboss.as:management-root=server","processType"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Runtime configuration state |

The current persistent configuration state, one of starting, ok, reload-required, restart-required, stopping or stopped.

|JMX |jmx["jboss.as:management-root=server","runtimeConfigurationState"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Server controller state |

The current state of the server controller; either STARTING, RUNNING, RESTART_REQUIRED, RELOAD_REQUIRED or STOPPING.

|JMX |jmx["jboss.as:management-root=server","serverState"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Version |

The version of the WildFly Core based product release

|JMX |jmx["jboss.as:management-root=server","productVersion"]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly: Uptime |

WildFly server uptime.

|JMX |jmx["java.lang:type=Runtime","Uptime"]

**Preprocessing**:

- MULTIPLIER: `0.001`

| |WildFly |WildFly: Transactions: Total, rate |

The total number of transactions (top-level and nested) created per second.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfTransactions"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Aborted, rate |

The number of aborted (i.e. rolledback) transactions per second.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfAbortedTransactions"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Application rollbacks, rate |

The number of transactions that have been rolled back by application request. This includes those that timeout, since the timeout behavior is considered an attribute of the application configuration.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfApplicationRollbacks"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Committed, rate |

The number of committed transactions

|JMX |jmx["jboss.as:subsystem=transactions","numberOfCommittedTransactions"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Heuristics, rate |

The number of transactions which have terminated with heuristic outcomes.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfHeuristics"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Current |

The number of transactions that have begun but not yet terminated.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfInflightTransactions"] | |WildFly |WildFly: Transactions: Nested, rate |

The total number of nested (sub) transactions created.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfNestedTransactions"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: ResourceRollbacks, rate |

The number of transactions that rolled back due to resource (participant) failure.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfResourceRollbacks"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: System rollbacks, rate |

The number of transactions that have been rolled back due to internal system errors.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfSystemRollbacks"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly: Transactions: Timed out, rate |

The number of transactions that have rolled back due to timeout.

|JMX |jmx["jboss.as:subsystem=transactions","numberOfTimedOutTransactions"]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly deployment [{#DEPLOYMENT}]: Status |

The current runtime status of a deployment.

Possible status modes are OK, FAILED, and STOPPED.

FAILED indicates a dependency is missing or a service could not start.

STOPPED indicates that the deployment was not enabled or was manually stopped.

|JMX |jmx["{#JMXOBJ}",status]

**Preprocessing**:

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly deployment [{#DEPLOYMENT}]: Enabled |

Boolean indicating whether the deployment content is currently deployed in the runtime (or should be deployed in the runtime the next time the server starts.)

|JMX |jmx["{#JMXOBJ}",enabled]

**Preprocessing**:

- BOOL_TO_DECIMAL

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly deployment [{#DEPLOYMENT}]: Managed |

Indicates if the deployment is managed (aka uses the ContentRepository).

|JMX |jmx["{#JMXOBJ}",managed]

**Preprocessing**:

- BOOL_TO_DECIMAL

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly deployment [{#DEPLOYMENT}]: Persistent |

Indicates if the deployment is managed (aka uses the ContentRepository).

|JMX |jmx["{#JMXOBJ}",persistent]

**Preprocessing**:

- BOOL_TO_DECIMAL

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly deployment [{#DEPLOYMENT}]: Enabled time |

Indicates if the deployment is managed (aka uses the ContentRepository).

|JMX |jmx["{#JMXOBJ}",enabledTime]

**Preprocessing**:

- MULTIPLIER: `0.001`

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache access, rate |

The number of times that the statement cache was accessed per second.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheAccessCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache add, rate |

The number of statements added to the statement cache per second.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheAddCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache current size |

The number of prepared and callable statements currently cached in the statement cache.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheCurrentSize] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache delete, rate |

The number of statements discarded from the cache per second.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheDeleteCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache hit, rate |

The number of times that statements from the cache were used per second.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheHitCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Cache miss, rate |

The number of times that a statement request could not be satisfied with a statement from the cache per second.

|JMX |jmx["{#JMXOBJ}",PreparedStatementCacheMissCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |

Define whether runtime statistics are enabled or not.

|JMX |jmx["{#JMXOBJ}",statisticsEnabled]

**Preprocessing**:

- BOOL_TO_DECIMAL

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Active |

The number of open connections.

|JMX |jmx["{#JMXOBJ}",ActiveCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Available |

The available count.

|JMX |jmx["{#JMXOBJ}",AvailableCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Blocking time, avg |

Average Blocking Time for pool.

|JMX |jmx["{#JMXOBJ}",AverageBlockingTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Creating time, avg |

The average time spent creating a physical connection.

|JMX |jmx["{#JMXOBJ}",AverageCreationTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Get time, avg |

The average time spent obtaining a physical connection.

|JMX |jmx["{#JMXOBJ}",AverageGetTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Pool time, avg |

The average time for a physical connection spent in the pool.

|JMX |jmx["{#JMXOBJ}",AveragePoolTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Usage time, avg |

The average time spent using a physical connection

|JMX |jmx["{#JMXOBJ}",AverageUsageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Blocking failure, rate |

The number of failures trying to obtain a physical connection per second.

|JMX |jmx["{#JMXOBJ}",BlockingFailureCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Created, rate |

The created per second

|JMX |jmx["{#JMXOBJ}",CreatedCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Destroyed, rate |

The destroyed count.

|JMX |jmx["{#JMXOBJ}",DestroyedCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Idle |

The number of physical connections currently idle.

|JMX |jmx["{#JMXOBJ}",IdleCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: In use |

The number of physical connections currently in use.

|JMX |jmx["{#JMXOBJ}",InUseCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Used, max |

The maximum number of connections used.

|JMX |jmx["{#JMXOBJ}",MaxUsedCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |

Define whether runtime statistics are enabled or not.

|JMX |jmx["{#JMXOBJ}",statisticsEnabled]

**Preprocessing**:

- BOOL_TO_DECIMAL

- DISCARD_UNCHANGED_HEARTBEAT: `3h`

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Timed out, rate |

The timed out connections per second.

|JMX |jmx["{#JMXOBJ}",TimedOut]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Wait |

The number of requests that had to wait to obtain a physical connection.

|JMX |jmx["{#JMXOBJ}",WaitCount] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Commit time, avg |

The average time for a XAResource commit invocation.

|JMX |jmx["{#JMXOBJ}",XACommitAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Commit, rate |

The number of XAResource commit invocations per second.

|JMX |jmx["{#JMXOBJ}",XACommitCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: End time, avg |

The average time for a XAResource end invocation.

|JMX |jmx["{#JMXOBJ}",XAEndAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: End, rate |

The number of XAResource end invocations per second.

|JMX |jmx["{#JMXOBJ}",XAEndCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Forget time, avg |

The average time for a XAResource forget invocation.

|JMX |jmx["{#JMXOBJ}",XAForgetAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Forget, rate |

The number of XAResource forget invocations per second.

|JMX |jmx["{#JMXOBJ}",XAForgetCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Prepare time, avg |

The average time for a XAResource prepare invocation.

|JMX |jmx["{#JMXOBJ}",XAPrepareAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Prepare, rate |

The number of XAResource prepare invocations per second.

|JMX |jmx["{#JMXOBJ}",XAPrepareCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Recover time, avg |

The average time for a XAResource recover invocation.

|JMX |jmx["{#JMXOBJ}",XARecoverAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Recover, rate |

The number of XAResource recover invocations per second.

|JMX |jmx["{#JMXOBJ}",XARecoverCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Rollback time, avg |

The average time for a XAResource rollback invocation.

|JMX |jmx["{#JMXOBJ}",XARollbackAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Rollback, rate |

The number of XAResource rollback invocations per second.

|JMX |jmx["{#JMXOBJ}",XARollbackCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Start time, avg |

The average time for a XAResource start invocation.

|JMX |jmx["{#JMXOBJ}",XAStartAverageTime] | |WildFly |WildFly {#JMX_DATA_SOURCE}: XA: Start rate |

The number of XAResource start invocations per second.

|JMX |jmx["{#JMXOBJ}",XAStartCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly listener {#HTTP_LISTENER}: Errors, rate |

The number of 500 responses that have been sent by this listener per second.

|JMX |jmx["{#JMXOBJ}",errorCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly listener {#HTTP_LISTENER}: Requests, rate |

The number of requests this listener has served per second.

|JMX |jmx["{#JMXOBJ}",requestCount]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly listener {#HTTP_LISTENER}: Bytes sent, rate |

The number of bytes that have been sent out on this listener per second.

|JMX |jmx["{#JMXOBJ}",bytesSent]

**Preprocessing**:

- CHANGE_PER_SECOND

| |WildFly |WildFly listener {#HTTP_LISTENER}: Bytes received, rate |

The number of bytes that have been received by this listener per second.

|JMX |jmx["{#JMXOBJ}",bytesReceived]

**Preprocessing**:

- CHANGE_PER_SECOND

| ## Triggers |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----|----|----| |WildFly: Server needs to restart for configuration change. |

-

|`find(/WildFly Server by JMX/jmx["jboss.as:management-root=server","runtimeConfigurationState"],,"like","ok")=0` |WARNING | | |WildFly: Server controller is not in RUNNING state |

-

|`find(/WildFly Server by JMX/jmx["jboss.as:management-root=server","serverState"],,"like","running")=0` |WARNING |

**Depends on**:

- WildFly: Server needs to restart for configuration change.

| |WildFly: Version has changed |

WildFly version has changed. Ack to close.

|`last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#1)<>last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#2) and length(last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"]))>0` |INFO |

Manual close: YES

| |WildFly: has been restarted |

Uptime is less than 10 minutes

|`last(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"])<10m` |INFO |

Manual close: YES

| |WildFly: Failed to fetch info data |

Zabbix has not received data for items for the last 15 minutes

|`nodata(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"],15m)=1` |WARNING | | |WildFly deployment [{#DEPLOYMENT}]: Deployment status has changed |

Deployment status has changed. Ack to close.

|`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status],#1)<>last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status],#2) and length(last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status]))>0` |WARNING |

Manual close: YES

| |WildFly {#JMX_DATA_SOURCE}: JDBC monitoring statistic is not enabled |

-

|`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0` |INFO | | |WildFly {#JMX_DATA_SOURCE}: There are no active connections for 5m |

-

|`max(/WildFly Server by JMX/jmx["{#JMXOBJ}",ActiveCount],5m)=0` |WARNING | | |WildFly {#JMX_DATA_SOURCE}: Connection usage is too high |

-

|`min(/WildFly Server by JMX/jmx["{#JMXOBJ}",InUseCount],5m)/last(/WildFly Server by JMX/jmx["{#JMXOBJ}",AvailableCount])*100>{$WILDFLY.CONN.USAGE.WARN.MAX}` |HIGH | | |WildFly {#JMX_DATA_SOURCE}: Pools monitoring statistic is not enabled |

Zabbix has not received data for items for the last 15 minutes

|`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0` |INFO | | |WildFly {#JMX_DATA_SOURCE}: There are timeout connections |

-

|`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",TimedOut])>0` |WARNING | | |WildFly {#JMX_DATA_SOURCE}: Too many waiting connections |

-

|`min(/WildFly Server by JMX/jmx["{#JMXOBJ}",WaitCount],5m)>{$WILDFLY.CONN.WAIT.MAX.WARN}` |WARNING | | |WildFly listener {#HTTP_LISTENER}: There are 500 responses by this listener. |

-

|`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",errorCount])>0` |WARNING | | ## Feedback Please report any issues with the template at https://support.zabbix.com You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).