Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-20819

Micrometer metrics cause IllegalArgumentException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 36.0.0.Final
    • Micrometer
    • None
    • ---
    • ---

      User Boris Pran (https://github.com/borispran) reported the following in a wildfly.org github issue ( https://github.com/wildfly/wildfly.org/issues/796 ):

      On Wildfly 36, enable micrometer extension and configure context

      /extension=org.wildfly.extension.micrometer:add
      /subsystem=micrometer:add()
      /subsystem=micrometer/registry=prometheus:add(context=/prometheus)
      

      than try to get metrics i.e. http://localhost:9990/prometheus and you'll get Internal Server Error!

      09:30:37,817 ERROR [io.undertow.request] (management task-6) UT005071: Undertow request failed HttpServerExchange{ GET /prometheus}: java.lang.IllegalArgumentException: -1.0: counters cannot have a negative value
      	at io.prometheus//io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot.validate(CounterSnapshot.java:74)
      	at io.prometheus//io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot.<init>(CounterSnapshot.java:58)
      	at io.prometheus//io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot.<init>(CounterSnapshot.java:46)
      	at io.micrometer@1.14.5//io.micrometer.prometheusmetrics.PrometheusMeterRegistry.lambda$newFunctionCounter$20(PrometheusMeterRegistry.java:380)
      	at io.micrometer@1.14.5//io.micrometer.prometheusmetrics.MicrometerCollector.collect(MicrometerCollector.java:77)
      	at io.prometheus//io.prometheus.metrics.model.registry.PrometheusRegistry.scrape(PrometheusRegistry.java:72)
      	at io.prometheus//io.prometheus.metrics.model.registry.PrometheusRegistry.scrape(PrometheusRegistry.java:57)
      	at io.micrometer@1.14.5//io.micrometer.prometheusmetrics.PrometheusMeterRegistry.scrape(PrometheusMeterRegistry.java:166)
      	at io.micrometer@1.14.5//io.micrometer.prometheusmetrics.PrometheusMeterRegistry.scrape(PrometheusMeterRegistry.java:139)
      	at io.micrometer@1.14.5//io.micrometer.prometheusmetrics.PrometheusMeterRegistry.scrape(PrometheusMeterRegistry.java:127)
      	at org.wildfly.extension.micrometer@36.0.1.Final//org.wildfly.extension.micrometer.prometheus.PrometheusRegistryDefinitionRegistrar.lambda$configure$0(PrometheusRegistryDefinitionRegistrar.java:101)
      	at org.jboss.as.domain-http-interface@28.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.lambda$handleRequest$0(ElytronIdentityHandler.java:45)
      	at org.wildfly.security.elytron-base@2.6.4.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:328)
      	at org.wildfly.security.elytron-base@2.6.4.Final//org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:285)
      	at org.jboss.as.controller@28.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:237)
      	at org.jboss.as.controller@28.0.1.Final//org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:208)
      	at org.jboss.as.domain-http-interface@28.0.1.Final//org.jboss.as.domain.http.server.security.ElytronIdentityHandler.handleRequest(ElytronIdentityHandler.java:44)
      	at io.undertow.core@2.3.18.Final//io.undertow.server.handlers.BlockingHandler.handleRequest(BlockingHandler.java:56)
      	at io.undertow.core@2.3.18.Final//io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
      	at io.undertow.core@2.3.18.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:395)
      	at io.undertow.core@2.3.18.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:861)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
      	at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
      	at org.jboss.xnio@3.8.16.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
      	at java.base/java.lang.Thread.run(Thread.java:1583)
      

      When I get metrics from {}/metrics{} I can see that there is more than one counter with -1.0 value

              jaslee@redhat.com Jason Lee
              bstansbe@redhat.com Brian Stansberry
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: