A set of collectors that can be used to monitor Jboss Wildfly instances. This library has been tested with Wildfly 17.0.1.
NOTE: Recent Wildfly versions now come with SmallRye Metrics, and implementation of Eclipse MicroProfile Metrics. SmallRye Metrics also supports prometheus as export format. You should seriously consider migrating!
The following Wildfly related metrics are provided:
- Undertow processor metrics (request count, bytes send/received, etc.)
- Undertow session metrics
- Jboss jdbc connection pool metrics
- Infinispan cache metrics
- Wildfly version info
- Servlet metrics (response times, status codes)
To use this library you need to perform the following steps:
- add the Wildfly Prometheus Exporter module jars to Wildfly's modules directory
- configure the Wildfly Prometheus Exporter module as global module
- deploy the Wildfly Prometheus Exporter Servlet
- enable metrics for the Wildlfy components you are interested in
Details are available in the paragraphs below.
Download the latest wildfly_exporter_module from the maven repository and extract it in Wildfly's modules directory. E.g. for version 0.0.4:
cp wildfly_exporter_module-0.0.4.jar /opt/jboss/wildfly/modules/.
cd /opt/jboss/wildfly/modules
jar -xvf wildfly_exporter_module-0.0.4.jar
rm -rf META-INF
rm -f wildfly_exporter_module-0.0.4.jar
In Wildfly's config file (standalone.xml, standalone-ha.xml) add the following directly under <subsystem xmlns="urn:jboss:domain:ee:4.0">
:
<global-modules>
<module name="nl.nlighten.prometheus.wildfly" services="true" meta-inf="true"/>
</global-modules>
or using the Jboss cli:
/subsystem=ee/:write-attribute(name=global-modules,value=[\
{"name" => "nl.nlighten.prometheus.wildfly", "meta-inf" => "true", "services" => "true"}\
])
Download the latest wildfly exporter servlet from the maven repository and copy it to Wildfly's deployments directory and rename it to metrics.war
.
E.g. for version 0.0.4:
cp wildfly_exporter_servlet-0.0.4.war /opt/jboss/wildfly/standalone/deployments/metrics.war
Most Wildfly components require explicit configuration before they expose metrics. Depending on the components you are interested in you need to configure one or more of the following:
To enable undertow related metrics add statistics-enabled="true"
to Wildfly's configuration section for the undertow subsystem:
<subsystem xmlns="urn:jboss:domain:undertow:7.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="true">
or using the Jboss cli:
/subsystem=undertow:write-attribute(name=statistics-enabled, value=true)
To enable jdbc related metrics add statistics-enabled="true"
to Wildfly's datasource configuration section:
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true"
use-java-context="true" statistics-enabled="true">
or using the Jboss cli:
/subsystem=datasources/data-source=ExampleDS:write-attribute(name=statistics-enabled,value=true)
To enable infinispan related metrics add statistics-enabled="true"
to the Infinispan cache configuration section, e.g.:
<cache-container name="myCacheContainer" default-cache="myLocalCache">
<transport lock-timeout="60000"/>
<local-cache name="myLocalCache" statistics-enabled="true">
<expiration lifespan="604800"/>
<file-store path="myLocalCacheStore" passivation="false" preload="true" shared="false"/>
</local-cache>
<replicated-cache name="myReplicatedCache" statistics-enabled="true">
<transaction mode="NON_XA"/>
<locking isolation="REPEATABLE_READ"/>
<expiration lifespan="604800"/>
<file-store path="myReplicatedCacheStore" passivation="false" preload="true" shared="false"/>
</replicated-cache>
</cache-container>
or using the Jboss cli:
/subsystem=infinispan/cache-container=myCacheContainer/local-cache=myLocalCache:write-attribute(name=statistics-enabled,value=true)
/subsystem=infinispan/cache-container=myCacheContainer/replicated-cache=myLocalCache:write-attribute(name=statistics-enabled,value=true)
By default you should not need to change the configuration for the collection of system metrics, but you can configure the following system properties if needed:
Property | Default | Description |
---|---|---|
prometheus.wildfly.filter.blacklist | /metrics | Servlet context urls that should not be instrumented for metrics collection |
prometheus.wildfly.filter.buckets | .01, .05, .1, .25, .5, 1, 2.5, 5, 10, 30 | The buckets used for the histogram used for collecting response times |
There are canonical examples defined in the class definition Javadoc of the client packages.