Class Counter

All Implemented Interfaces:
CounterDataPoint, DataPoint, Collector

public class Counter extends MetricWithFixedMetadata implements CounterDataPoint
Counter metric.

Example usage:


 Counter requestCount = Counter.builder()
     .name("requests_total")
     .help("Total number of requests")
     .labelNames("path", "status")
     .register();
 requestCount.labelValues("/hello-world", "200").inc();
 requestCount.labelValues("/hello-world", "500").inc();
 
  • Method Details

    • inc

      public void inc(long amount)
      Add amount. Throws an IllegalArgumentException if amount is negative.
      Specified by:
      inc in interface CounterDataPoint
    • inc

      public void inc(double amount)
      Add amount. Throws an IllegalArgumentException if amount is negative.
      Specified by:
      inc in interface CounterDataPoint
    • incWithExemplar

      public void incWithExemplar(long amount, Labels labels)
      Add amount, and create a custom exemplar with the given labels. Throws an IllegalArgumentException if amount is negative.
      Specified by:
      incWithExemplar in interface CounterDataPoint
    • incWithExemplar

      public void incWithExemplar(double amount, Labels labels)
      Add amount, and create a custom exemplar with the given labels. Throws an IllegalArgumentException if amount is negative.
      Specified by:
      incWithExemplar in interface CounterDataPoint
    • get

      public double get()
      Get the current value.
      Specified by:
      get in interface CounterDataPoint
    • getLongValue

      public long getLongValue()
      Get the current value as a long. Decimal places will be discarded.
      Specified by:
      getLongValue in interface CounterDataPoint
    • collect

      Called when the Prometheus server scrapes metrics.
      Specified by:
      collect in interface Collector
    • builder

      public static Counter.Builder builder()
    • builder

    • 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 CounterDataPoint 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.
    • clear

      public void clear()
      Reset the metric (remove all data points).