[jboss-jira] [JBoss JIRA] (WFCORE-4238) Distinguish type of WildFly metrics

Jeff Mesnil (Jira) issues at jboss.org
Wed Nov 28 08:43:01 EST 2018


Jeff Mesnil created WFCORE-4238:
-----------------------------------

             Summary: Distinguish type of WildFly metrics
                 Key: WFCORE-4238
                 URL: https://issues.jboss.org/browse/WFCORE-4238
             Project: WildFly Core
          Issue Type: Enhancement
          Components: Management
            Reporter: Jeff Mesnil
            Assignee: Jeff Mesnil


WildFly metrics needs to be exposed to Prometheus.

In the current implementation of the microprofile-metrics-smallrye subsystems, all WildFly metrics are exposed as Gauges[1] which represents a single numerical value that can goes up and down and may have a unit (e.g. bytes or seconds).

We should be able to represent more correctly some metrics as Counters[2] which are "cumulative metric that represents a single monotonically increasing counter whose value can only increase or be reset to zero on restart"

In its current state, metadata associated to WildFly metrics does not able to distinguish gauges and counters.

* If the metric has a measurement unit (specified by org.jboss.as.controller.AttributeDefinition#getMeasurementUnit), it can be represented as a Gauge
* If the metric does not have a measurement unit, we can not reliably decide between gauge and counters.

For example, the message-count[3] for the jms-queue resource is a *gauge* as this number will can go up (when messages are produced faster than they are consumed) or down (when messages are consumed faster than they are produced) to 0.

Conversely, the  messages-added[4] for the same jms-queue or request-count[4] for Undertow servlet are *counters* as they will always increase.

Only the subsystem developers is able to specify which type of metrics it provides.
I propose that we add 2 new values to org.jboss.as.controller.registry.AttributeAccess.Flag to let the subsystem developers provides this information:

GAUGE_METRIC
COUNTER_METRIC

In the absence of the COUNTER_METRIC, the metric would be identified as a Gauge.
We had the GAUGE_METRIC value so that the subsystem developer can explicitly state that a metric is a gauge which is helpful when the same resource (e.g. jms-queue) provides metrics of the 2 different types (e.g. message-counter vs messages-added).

This API change is backwards compatible.
These 2 flags remain optional and would only be checked when the attribute definition is registered as a metric with org.jboss.as.controller.registry.ManagementResourceRegistration#registerMetric.

[1] https://prometheus.io/docs/concepts/metric_types/#gauge
[2] https://prometheus.io/docs/concepts/metric_types/#counter
[3] http://wildscribe.github.io/WildFly/14.0/subsystem/messaging-activemq/server/jms-queue/index.html#attr-message-count
[4] http://wildscribe.github.io/WildFly/14.0/subsystem/messaging-activemq/server/jms-queue/index.html#attr-messages-added
[5] http://wildscribe.github.io/WildFly/14.0/deployment/subsystem/undertow/servlet/index.html#attr-request-count



--
This message was sent by Atlassian Jira
(v7.12.1#712002)



More information about the jboss-jira mailing list