I have spent whole day trying to configure this exporter running in a special docker container that would scrape metrices from my wildfly-10.1.0-Final container but with no success. I keep on having this timeout error. The 2 containers are running in the same docker network. But I just cannot successful get the scrapping to success. It keeps on throwing this error below:
> Sep 30, 2017 10:55:15 PM io.prometheus.jmx.JmxCollector collect
> webcontainer-jmx-exporter_1 | SEVERE: JMX scrape failed: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
> webcontainer-jmx-exporter_1 | java.net.SocketTimeoutException: Read timed out]
> webcontainer-jmx-exporter_1 | at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
> webcontainer-jmx-exporter_1 | at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
> webcontainer-jmx-exporter_1 | at io.prometheus.jmx.JmxScraper.doScrape(JmxScraper.java:106)
> webcontainer-jmx-exporter_1 | at io.prometheus.jmx.JmxCollector.collect(JmxCollector.java:415)
> webcontainer-jmx-exporter_1 | at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.findNextElement(CollectorRegistry.java:180)
> webcontainer-jmx-exporter_1 | at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:213)
> webcontainer-jmx-exporter_1 | at io.prometheus.client.CollectorRegistry$MetricFamilySamplesEnumeration.nextElement(CollectorRegistry.java:134)
> webcontainer-jmx-exporter_1 | at io.prometheus.client.exporter.common.TextFormat.write004(TextFormat.java:22)
> webcontainer-jmx-exporter_1 | at io.prometheus.client.exporter.HTTPServer$HTTPMetricHandler.handle(HTTPServer.java:43)
> webcontainer-jmx-exporter_1 | at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
> webcontainer-jmx-exporter_1 | at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
> webcontainer-jmx-exporter_1 | at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
> webcontainer-jmx-exporter_1 | at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
> webcontainer-jmx-exporter_1 | at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
> webcontainer-jmx-exporter_1 | at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
> webcontainer-jmx-exporter_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> webcontainer-jmx-exporter_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> webcontainer-jmx-exporter_1 | at java.lang.Thread.run(Thread.java:748)
> webcontainer-jmx-exporter_1 | Caused by: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
> webcontainer-jmx-exporter_1 | java.net.SocketTimeoutException: Read timed out]
> webcontainer-jmx-exporter_1 | at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:136)
> webcontainer-jmx-exporter_1 | at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:205)
> webcontainer-jmx-exporter_1 | at javax.naming.InitialContext.lookup(InitialContext.java:417)
> webcontainer-jmx-exporter_1 | at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1955)
> webcontainer-jmx-exporter_1 | at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1922)
> webcontainer-jmx-exporter_1 | at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287)My startup script for the container look like this:`#!/bin/sh
if [ -z "$SERVICE_PORT" ]; then
SERVICE_PORT=5556
fi
if [ -z "$JVM_OPTS" ]; then
JVM_OPTS=" -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9990"
fi
java $JVM_OPTS -jar /opt/jmx_exporter/jmx_prometheus_httpserver-$VERSION-jar-with-dependencies.jar $SERVICE_PORT /opt/jmx_exporter/config.yml`
And my config.yml file to be used look like this:`---
startDelaySeconds: 0
hostPort: webcontainer:9990 #webcontainer is name of the container running wildfly 10 which exposes port 9990 for jmx communication by default.
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
username: someuser
password: somepass
rules:
- pattern: "^
jboss.as<subsystem=messaging-activemq, server=.+, jms-(queue|topic)=(.+)><>(.+):"
attrNameSnakeCase: true
name: wildfly_messaging_$3
labels:
$1: $2
- pattern: "^
jboss.as<subsystem=datasources, (?:xa-)*data-source=(.+), statistics=(.+)><>(.+):"
attrNameSnakeCase: true
name: wildfly_datasource_$2_$3
labels:
name: $1
- pattern: "^
jboss.as<subsystem=transactions><>number_of_(.+):"
attrNameSnakeCase: true
name: wildfly_transaction_$1
- pattern: "^
jboss.as<subsystem=undertow, server=(.+), http-listener=(.+)><>(bytes_.+|error_count|processing_time|request_count):"
attrNameSnakeCase: true
name: wildfly_undertow_$3
labels:
server: $1
http_listener: $2`
Any help on the right direction on how to get metrices with this exporter from jboss-wildfly-10?