io.prometheus.client.CounterMetricFamily Maven / Gradle / Ivy
The newest version!
package io.prometheus.client;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Counter metric family, for custom collectors and exporters.
*
* Most users want a normal {@link Counter} instead.
*
* Example usage:
*
* {@code
* class YourCustomCollector extends Collector {
* List collect() {
* List mfs = new ArrayList();
* // With no labels.
* mfs.add(new CounterMetricFamily("my_counter_total", "help", 42));
* // With labels
* CounterMetricFamily labeledCounter = new CounterMetricFamily("my_other_counter_total", "help", Arrays.asList("labelname"));
* labeledCounter.addMetric(Arrays.asList("foo"), 4);
* labeledCounter.addMetric(Arrays.asList("bar"), 5);
* mfs.add(labeledCounter);
* return mfs;
* }
* }
* }
*
*/
public class CounterMetricFamily extends Collector.MetricFamilySamples {
private final List labelNames;
public CounterMetricFamily(String name, String help, double value) {
super(name, Collector.Type.COUNTER, help, new ArrayList());
labelNames = Collections.emptyList();
samples.add(
new Sample(
name,
labelNames,
Collections.emptyList(),
value));
}
public CounterMetricFamily(String name, String help, List labelNames) {
super(name, Collector.Type.COUNTER, help, new ArrayList());
this.labelNames = labelNames;
}
public CounterMetricFamily addMetric(List labelValues, double value) {
if (labelValues.size() != labelNames.size()) {
throw new IllegalArgumentException("Incorrect number of labels.");
}
samples.add(new Sample(name, labelNames, labelValues, value));
return this;
}
}