io.prometheus.client.CounterMetricFamily Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of simpleclient Show documentation
Show all versions of simpleclient Show documentation
Core instrumentation library for the simpleclient.
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;
}
}