diff --git a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java new file mode 100644 index 0000000000..f9e936d27f --- /dev/null +++ b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/IndySampleBuilder.java @@ -0,0 +1,36 @@ +package org.commonjava.indy.metrics.prometheus; + +import io.prometheus.client.Collector; +import io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder; + +import java.util.ArrayList; +import java.util.List; + +public class IndySampleBuilder + extends DefaultSampleBuilder +{ + private static final String NODE_NAME_LABEL = "node"; + + private String nodeName; + + public IndySampleBuilder( String nodeName ) + { + super(); + this.nodeName = nodeName; + } + + @Override + public Collector.MetricFamilySamples.Sample createSample( final String dropwizardName, final String nameSuffix, + final List additionalLabelNames, + final List additionalLabelValues, + final double value ) + { + List labelNames = new ArrayList( additionalLabelNames ); + labelNames.add( NODE_NAME_LABEL ); + + List labelValues = new ArrayList( additionalLabelValues ); + labelValues.add( nodeName ); + + return super.createSample( dropwizardName, nameSuffix, labelNames, labelValues, value ); + } +} diff --git a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java index bb8e0c0c7c..972b02b38f 100644 --- a/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java +++ b/subsys/metrics/prometheus/src/main/java/org/commonjava/indy/metrics/prometheus/PrometheusDeployment.java @@ -39,7 +39,7 @@ public DeploymentInfo getDeploymentInfo( String contextRoot, Application applica return null; } - CollectorRegistry.defaultRegistry.register( new DropwizardExports( metricRegistry ) ); + CollectorRegistry.defaultRegistry.register( new DropwizardExports( metricRegistry, new IndySampleBuilder( config.getNodePrefix() ) ) ); final ServletInfo servlet = Servlets.servlet( "prometheus-metrics", MetricsServlet.class ).addMapping( "/metrics" );