Class Gauge

All Implemented Interfaces:
DataPoint, GaugeDataPoint, TimerApi, io.prometheus.metrics.model.registry.Collector

public class Gauge extends MetricWithFixedMetadata implements GaugeDataPoint
Gauge metric.

Example usage:


 Gauge currentActiveUsers = Gauge.newBuilder()
     .withName("current_active_users")
     .withHelp("Number of users that are currently active")
     .withLabelNames("region")
     .register();

 public void login(String region) {
     currentActiveUsers.withLabelValues(region).inc();
     // perform login
 }

 public void logout(String region) {
     currentActiveUsers.withLabelValues(region).dec();
     // perform logout
 }
 
  • Method Details

    • inc

      public void inc(double amount)
      Add amount.
      Specified by:
      inc in interface GaugeDataPoint
    • incWithExemplar

      public void incWithExemplar(double amount, io.prometheus.metrics.model.snapshots.Labels labels)
      Add amount, and create a custom exemplar with the given labels.
      Specified by:
      incWithExemplar in interface GaugeDataPoint
    • set

      public void set(double value)
      Set the gauge to value.
      Specified by:
      set in interface GaugeDataPoint
    • setWithExemplar

      public void setWithExemplar(double value, io.prometheus.metrics.model.snapshots.Labels labels)
      Set the gauge to value, and create a custom exemplar with the given labels.
      Specified by:
      setWithExemplar in interface GaugeDataPoint
    • collect

      public io.prometheus.metrics.model.snapshots.GaugeSnapshot collect()
      Specified by:
      collect in interface io.prometheus.metrics.model.registry.Collector
    • collect

      protected io.prometheus.metrics.model.snapshots.GaugeSnapshot collect(List<io.prometheus.metrics.model.snapshots.Labels> labels, List<io.prometheus.metrics.core.metrics.Gauge.DataPoint> metricData)
      labels and metricData have the same size. labels.get(i) are the labels for metricData.get(i).
    • newDataPoint

      protected io.prometheus.metrics.core.metrics.Gauge.DataPoint newDataPoint()
    • isExemplarsEnabled

      protected boolean isExemplarsEnabled()
    • newBuilder

      public static Gauge.Builder newBuilder()
    • newBuilder

      public static Gauge.Builder newBuilder(io.prometheus.metrics.config.PrometheusProperties config)
    • initLabelValues

      public void initLabelValues(String... labelValues)
      Initialize label values.

      Example: Imagine you have a counter for payments as follows

       payment_transactions_total{payment_type="credit card"} 7.0
       payment_transactions_total{payment_type="paypal"} 3.0
       
      Now, the data points for the payment_type label values get initialized when they are first used, i.e. the first time you call
      
       counter.withLabelValues("paypal").inc();
       
      the data point with label payment_type="paypal" will go from non-existent to having value 1.0.

      In some cases this is confusing, and you want to have data points initialized on application start with an initial value of 0.0:

       payment_transactions_total{payment_type="credit card"} 0.0
       payment_transactions_total{payment_type="paypal"} 0.0
       
      initLabelValues(...) can be used to initialize label value, so that the data points show up in the exposition format with an initial value of zero.
    • withLabelValues

      public GaugeDataPoint withLabelValues(String... labelValues)
    • remove

      public void remove(String... labelValues)
    • getNoLabels

      protected io.prometheus.metrics.core.metrics.Gauge.DataPoint getNoLabels()
    • getMetricProperties

      protected io.prometheus.metrics.config.MetricsProperties[] getMetricProperties(io.prometheus.metrics.core.metrics.StatefulMetric.Builder builder, io.prometheus.metrics.config.PrometheusProperties prometheusProperties)
    • getConfigProperty

      protected <T> T getConfigProperty(io.prometheus.metrics.config.MetricsProperties[] properties, Function<io.prometheus.metrics.config.MetricsProperties,T> getter)