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

de.bund.bva.isyfact.ueberwachung.autoconfigure.IsyMetricsAutoConfiguration Maven / Gradle / Ivy

The newest version!
package de.bund.bva.isyfact.ueberwachung.autoconfigure;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import de.bund.bva.isyfact.ueberwachung.metrics.ServiceStatistik;

import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.TimeGauge;
import io.micrometer.core.instrument.binder.MeterBinder;

/**
 * Metrics autoconfiguration.
 */
@Configuration
public class IsyMetricsAutoConfiguration {

    /** {@link MeterBinder} which registers all available {@link ServiceStatistik} beans. */
    @Bean
    @ConditionalOnBean(ServiceStatistik.class)
    public MeterBinder serviceStatistics(ObjectProvider serviceStatsBeans) {
        return registry -> serviceStatsBeans.stream().forEach(stats -> registerServiceStatsGauges(registry, stats));
    }

    /** Register a {@link ServiceStatistik} bean in the Micrometer registry. */
    public static void registerServiceStatsGauges(MeterRegistry registry, ServiceStatistik stats) {
        Gauge.builder("anzahlAufrufe.LetzteMinute", stats, ServiceStatistik::getAnzahlAufrufeLetzteMinute)
                .tags(stats.getTags())
                .description("Liefert die Anzahl der nicht fehlerhaften Aufrufe in der letzten Minute")
                .register(registry);

        Gauge.builder("anzahlFehler.LetzteMinute", stats, ServiceStatistik::getAnzahlFehlerLetzteMinute)
                .tags(stats.getTags())
                .description("Liefert die Anzahl der fehlerhaften Aufrufe in der letzten Minute")
                .register(registry);

        Gauge.builder("anzahlFachlicheFehler.LetzteMinute", stats, ServiceStatistik::getAnzahlFachlicheFehlerLetzteMinute)
                .tags(stats.getTags())
                .description("Liefert die Anzahl der fachlich fehlerhaften Aufrufe in der letzten Minute")
                .register(registry);

        TimeGauge.builder("durchschnittsDauer.LetzteAufrufe", stats, TimeUnit.MILLISECONDS, s -> s.getDurchschnittsDauerLetzteAufrufe().toMillis())
                .tags(stats.getTags())
                .description("Liefert die durchschnittliche Dauer der letzten 10 Aufrufe in ms")
                .register(registry);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy