Here's the JMX Exporter configuration I've tentatively come up with. Let me know in the comments if I've forgotten something or did something wrong.
In short, this JMX Exporter config should collect the metrics for:
* Deployment (EARs)
* Subdeployment (WARs inside of EARs)
* JMS Topics and Queues
* Datasources
* Transactions
* Web Subsystem (i.e. Undertow)
* Servlets
* EJBs (Stateless, Stateful, Singleton, and Message Driven)
It will also store server paths under the "wildfly_config" metric family with the label name identifying the path such as "jboss_home_dir" or "jboss_server_config_dir" and the label value being the path itself.
And of course the default behavior of the JMX Exporter is to also emit metrics for the JVM statistics as well (such as heap and non-heap memory usage) so we get those "for free".
The config is as follows:
--- lowercaseOutputName: true lowercaseOutputLabelNames: true rules: # CONFIG - pattern: "^jboss.as<path=(.+)><>path:(.+)" attrNameSnakeCase: true name: wildfly_config labels: $1: $2 value: 1 # DEPLOYMENTS - pattern: "^jboss.as<deployment=(.+), subdeployment=(.+), subsystem=undertow><>(.+_sessions|session_.+):" attrNameSnakeCase: true name: wildfly_deployment_$3 type: GAUGE labels: name: $1 subdeployment: $2 - pattern: "^jboss.as<deployment=(.+), subsystem=undertow><>(.+_sessions|session_.+):" attrNameSnakeCase: true name: wildfly_deployment_$2 type: GAUGE labels: name: $1 # MESSAGING - pattern: "^jboss.as<subsystem=messaging-activemq, server=(.+), jms-(queue|topic)=(.+)><>(.+):" attrNameSnakeCase: true name: wildfly_messaging_$4 type: GAUGE labels: server: $1 $2: $3 # DATASOURCES - pattern: "^jboss.as<subsystem=datasources, (?:xa-)*data-source=(.+), statistics=(.+)><>(.+):" attrNameSnakeCase: true name: wildfly_datasource_$2_$3 type: GAUGE labels: name: $1 # TRANSACTIONS - pattern: "^jboss.as<subsystem=transactions><>number_of_(.+):" attrNameSnakeCase: true name: wildfly_transactions_$1 type: GAUGE # WEB SUBSYSTEM - pattern: "^jboss.as<subsystem=undertow, server=(.+), (https?)-listener=(.+)><>(bytes_.+|error_count|processing_time|request_count):" attrNameSnakeCase: true name: wildfly_undertow_$4 type: GAUGE labels: server: $1 listener: $3 protocol: $2 # SERVLET - pattern: "^jboss.as<deployment=(.+), subdeployment=(.+), subsystem=undertow, servlet=(.+)><>(.+_time|.+_count):" attrNameSnakeCase: true name: wildfly_servlet_$4 type: GAUGE labels: name: $3 deployment: $1 subdeployment: $2 - pattern: "^jboss.as<deployment=(.+), subsystem=undertow, servlet=(.+)><>(.+_time|.+_count):" attrNameSnakeCase: true name: wildfly_servlet_$3 type: GAUGE labels: name: $2 deployment: $1 # EJB - pattern: "^jboss.as<deployment=(.+), subdeployment=(.+), subsystem=ejb3, (stateless-session|stateful-session|message-driven|singleton)-bean=(.+)><>(.+):" attrNameSnakeCase: true name: wildfly_ejb_$5 type: GAUGE labels: name: $4 type: $3 deployment: $1 subdeployment: $2 - pattern: "^jboss.as<deployment=(.+), subsystem=ejb3, (stateless-session|stateful-session|message-driven|singleton)-bean=(.+)><>(.+):" attrNameSnakeCase: true name: wildfly_ejb_$4 type: GAUGE labels: name: $3 type: $2 deployment: $1