All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.infomaximum.platform.prometheus.metric.HistogramMetric Maven / Gradle / Ivy

package com.infomaximum.platform.prometheus.metric;

import io.prometheus.metrics.core.metrics.Histogram;
import io.prometheus.metrics.model.registry.PrometheusRegistry;

public class HistogramMetric implements PrometheusMetric {

    private final Histogram histogram;

    HistogramMetric(Histogram histogram) {
        this.histogram = histogram;
    }

    @Override
    public void register() {
        PrometheusRegistry.defaultRegistry.register(histogram);
    }

    @Override
    public String getName() {
        return histogram.getPrometheusName();
    }

    public void observe(double amount) {
        histogram.observe(amount);
    }

    public void observeWithLabelValues(double amount, String... labelValues) {
        histogram.labelValues(labelValues).observe(amount);
    }

    public static Builder builder() {
        return new Builder();
    }

    public static class Builder implements PrometheusMetric.Builder {

        private final Histogram.Builder builder;

        Builder() {
            builder = Histogram.builder();
        }

        @Override
        public PrometheusMetric.Builder withName(String name) {
            builder.name(name);
            return this;
        }

        @Override
        public PrometheusMetric.Builder withHelp(String help) {
            builder.help(help);
            return this;
        }

        @Override
        public PrometheusMetric.Builder withLabels(String... labelNames) {
            builder.labelNames(labelNames);
            return this;
        }

        @Override
        public PrometheusMetric.Builder withUnit(Unit unit) {
            builder.unit(unit.getUnit());
            return this;
        }

        @Override
        public HistogramMetric build() {
            return new HistogramMetric(builder.build());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy