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.builder()
     .name("current_active_users")
     .help("Number of users that are currently active")
     .labelNames("region")
     .register();

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

 public void logout(String region) {
     currentActiveUsers.labelValues(region).dec();
     // perform logout
 }
 
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
  • Field Summary

    Fields inherited from class io.prometheus.metrics.core.metrics.MetricWithFixedMetadata

    labelNames

    Fields inherited from class io.prometheus.metrics.core.metrics.Metric

    constLabels
  • Method Summary

    Modifier and Type
    Method
    Description
     
    builder(io.prometheus.metrics.config.PrometheusProperties config)
     
    void
    Reset the metric (remove all data points).
    io.prometheus.metrics.model.snapshots.GaugeSnapshot
     
    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).
    double
    get()
    Get the current value.
    protected <P> P
    getConfigProperty(io.prometheus.metrics.config.MetricsProperties[] properties, Function<io.prometheus.metrics.config.MetricsProperties,P> getter)
     
    protected io.prometheus.metrics.config.MetricsProperties[]
    getMetricProperties(io.prometheus.metrics.core.metrics.StatefulMetric.Builder<?,?> builder, io.prometheus.metrics.config.PrometheusProperties prometheusProperties)
     
    protected io.prometheus.metrics.core.metrics.Gauge.DataPoint
     
    void
    inc(double amount)
    Add amount.
    void
    incWithExemplar(double amount, io.prometheus.metrics.model.snapshots.Labels labels)
    Add amount, and create a custom exemplar with the given labels.
    void
    initLabelValues(String... labelValues)
    Initialize label values.
    protected boolean
     
    labelValues(String... labelValues)
     
    protected io.prometheus.metrics.core.metrics.Gauge.DataPoint
     
    void
    remove(String... labelValues)
    Remove the data point with the given label values.
    void
    Remove the data points when the given function.
    void
    set(double value)
    Set the gauge to value.
    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.

    Methods inherited from class io.prometheus.metrics.core.metrics.MetricWithFixedMetadata

    getMetadata, getPrometheusName

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.prometheus.metrics.model.registry.Collector

    collect, collect, collect

    Methods inherited from interface io.prometheus.metrics.core.datapoints.GaugeDataPoint

    dec, dec, decWithExemplar, decWithExemplar, inc, incWithExemplar, startTimer

    Methods inherited from interface io.prometheus.metrics.core.datapoints.TimerApi

    time, time, timeChecked
  • Method Details

    • inc

      public void inc(double amount)
      Description copied from interface: GaugeDataPoint
      Add amount.
      Specified by:
      inc in interface GaugeDataPoint
    • get

      public double get()
      Description copied from interface: GaugeDataPoint
      Get the current value.
      Specified by:
      get in interface GaugeDataPoint
    • incWithExemplar

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

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

      public void setWithExemplar(double value, io.prometheus.metrics.model.snapshots.Labels labels)
      Description copied from interface: GaugeDataPoint
      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()
    • builder

      public static Gauge.Builder builder()
    • builder

      public static Gauge.Builder builder(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.labelValues("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.
    • labelValues

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

      public void remove(String... labelValues)
      Remove the data point with the given label values. See https://prometheus.io/docs/instrumenting/writing_clientlibs/#labels.
    • removeIf

      public void removeIf(Function<List<String>,Boolean> f)
      Remove the data points when the given function.
    • clear

      public void clear()
      Reset the metric (remove all data points).
    • 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 <P> P getConfigProperty(io.prometheus.metrics.config.MetricsProperties[] properties, Function<io.prometheus.metrics.config.MetricsProperties,P> getter)