package com.dexels.prometheus.api; import io.prometheus.client.Collector; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.Counter; import io.prometheus.client.Gauge; import io.prometheus.client.Histogram; import io.prometheus.client.Summary; import io.prometheus.client.Summary.Builder; public interface MetricSource { public void recordValues(); public static Counter registerCounter(String name, String doc) { return Counter.build().name(name).help(doc).register(); } public static Counter registerCounter(String name, String doc, String... labelNames) { return Counter.build().name(name).labelNames(labelNames).help(doc).register(); } public static Gauge registerGauge(String name, String doc) { return Gauge.build().name(name).help(doc).register(); } public static Gauge registerGauge(String name, String doc, String... labelNames) { return Gauge.build().name(name).help(doc).labelNames(labelNames).register(); } public static Histogram registerHistogram(String name, String doc) { return Histogram.build().name(name).help(doc).register(); } public static Histogram registerHistogram(String name, String doc, double[] buckets) { return Histogram.build().name(name).help(doc).buckets(buckets).register(); } public static Histogram registerHistogram(String name, String doc, String... labelNames) { return Histogram.build().name(name).help(doc).labelNames(labelNames).register(); } public static Histogram registerHistogram(String name, String doc, double[] buckets, String... labelNames) { return Histogram.build().name(name).help(doc).labelNames(labelNames).register(); } public static Summary registerSummary(String name, String doc) { return Summary.build().name(name).help(doc).register(); } public static Summary registerSummary(String name, String doc, double[][] quantiles) { Builder builder = Summary.build().name(name).help(doc); for (double[] quantile : quantiles) { builder.quantile(quantile[0], quantile[1]); } return builder.register(); } public static Summary registerSummary(String name, String doc, String... labelNames) { return Summary.build().name(name).help(doc).labelNames(labelNames).register(); } public static Summary registerSummary(String name, String doc, double[][] quantiles, String... labelNames) { Builder builder = Summary.build().name(name).help(doc).labelNames(labelNames); for (double[] quantile : quantiles) { builder.quantile(quantile[0], quantile[1]); } return builder.register(); } public static void unregisterCollector(Collector collector) { CollectorRegistry.defaultRegistry.unregister(collector); } }