Micrometer für Java: Vollständige Anleitung mit Beispielen
1. Was ist Micrometer und warum wird es benötigt?
Micrometer ist eine Bibliothek zur Erfassung von Metriken in Java-Anwendungen (und JVM-Sprachen). Sie bietet eine einheitliche Fassade über gängige Monitoring-Systeme wie Prometheus, Graphite, Datadog, InfluxDB, New Relic und andere. Micrometer implementiert die Micrometer Observation API und ist der De-facto-Standard für die Metrik-Erfassung im Spring-Boot-Ökosystem (ab Version 2.0).
Warum ist das wichtig? In modernen Microservice-Architekturen ist es entscheidend zu verstehen, was in der Anwendung passiert: Wie viele Anfragen werden verarbeitet? Wie hoch ist die Antwortzeit? Wie viel Speicher wird verbraucht? Wie oft treten Fehler auf? Micrometer vereinheitlicht die Erfassung dieser Daten, ohne an ein bestimmtes Monitoring-Backend gebunden zu sein. Sie schreiben den Code einmal und wechseln zwischen Prometheus, Graphite oder CloudWatch, indem Sie einfach die Abhängigkeit in pom.xml oder build.gradle ändern.
Die Bibliothek bietet eine Vielzahl von Werkzeugen: Zähler (Counter), Histogramme (Histogram), Timer (Timer), Verteilungen (DistributionSummary) sowie Unterstützung für Tags zur mehrdimensionalen Aggregation von Metriken. Die integrierte Integration mit der JVM (Garbage Collection, Threads, Speicher) und gängigen Frameworks (Spring, Hibernate, Jetty, Tomcat) macht sie für das Produktions-Monitoring unverzichtbar.
2. Installation
Micrometer wird über Maven Central verteilt. Für Java-Projekte wird Maven oder Gradle verwendet. Nachfolgend finden Sie die genauen Befehle zum Hinzufügen der Abhängigkeiten.
Maven (pom.xml)
<!-- Micrometer Kernmodul -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.14.5</version> <!-- Aktuelle Version auf mvnrepository.com prüfen -->
</dependency>
<!-- Registry für Prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.14.5</version>
</dependency>
Gradle (build.gradle)
dependencies {
implementation 'io.micrometer:micrometer-core:1.14.5'
implementation 'io.micrometer:micrometer-registry-prometheus:1.14.5'
}
Wichtig: Wenn Sie Spring Boot verwenden, reicht es aus, spring-boot-starter-actuator und micrometer-registry-prometheus hinzuzufügen – Spring Boot konfiguriert den MeterRegistry automatisch.
3. Schnellstart – Minimales funktionsfähiges Beispiel
Wir erstellen eine einfache Konsolenanwendung, die Metriken sammelt und im Prometheus-Format exportiert.
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
public class QuickStart {
public static void main(String[] args) throws InterruptedException {
// 1. Metrik-Registry für Prometheus erstellen
PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
// 2. Zähler erstellen
Counter counter = Counter.builder("my.counter")
.description("Beispiel-Zähler")
.tag("env", "test")
.register(registry);
// 3. Zähler in einer Schleife erhöhen
for (int i = 0; i < 5; i++) {
counter.increment();
Thread.sleep(1000);
}
// 4. Metriken im Prometheus-Format ausgeben
System.out.println("=== Prometheus Metriken ===");
System.out.println(registry.scrape());
}
}
Konsolenausgabe:
=== Prometheus Metriken ===
# HELP my_counter_total Beispiel-Zähler
# TYPE my_counter_to Auch in der Bibliothek
Logging für TypeScript: Die Bibliothek Winston
Sinon für JavaScript (Node.js): Komplettguide mit Beispielen
PDF-Generierung in Java: Überblick über die Bibliotheken iText, Apache PDFBox, OpenPDF
RestSharp für C# (.NET): Vollständige Anleitung mit Beispielen