Actuator, Micrometer und OpenTelemetry Observability
Actuator, Micrometer und OpenTelemetry liefern Gesundheitsinformationen, Metriken, Traces und Laufzeiteinblicke für Spring-Anwendungen.
Fachliche Einordnung
Produktionsreife bedeutet beobachtbar: Health Checks für Plattformen, Metriken für SLOs, Traces für verteilte Fehler und Logs mit Korrelation.
Enterprise-Merksatz: Actuator, Micrometer und OpenTelemetry liefern Gesundheitsinformationen, Metriken, Traces und Laufzeiteinblicke für Spring-Anwendungen.
Technische Darstellung
Kernkonzepte
- Actuator Endpoints wie health, info, metrics, env.
- Micrometer als Metrics Facade.
- Observation API für Metriken und Traces.
- Tracing mit TraceId/SpanId.
- Readiness und Liveness getrennt prüfen.
Wann einsetzen?
- Du betreibst Services auf Kubernetes/OpenShift.
- Du brauchst SLOs, Dashboards und Alerts.
- Du willst Fehler in verteilten Aufrufen nachvollziehen.
Typische Fehler und Risiken
- Alle Actuator Endpoints öffentlich machen.
- Metriken ohne Tags-Disziplin und Kardinalitätskontrolle.
- Health Check prüft Downstream-Systeme zu hart und verursacht Kaskadenfehler.
Legacy- und Modernisierungssicht
Alte Logfile- und JMX-Sicht wird durch Health, Metrics, Traces und strukturierte Logs ergänzt.
Ausführliches Beispiel
Das Beispiel zeigt bewusst nicht nur Annotationen, sondern auch die Verantwortung der Schicht. In echten Projekten sollte der technische Spring-Code an Adapter- oder Konfigurationsrändern bleiben, während die Fachlogik testbar und möglichst frameworkarm bleibt.
@Component
class PaymentObservationService {
private final ObservationRegistry registry;
PaymentObservationService(ObservationRegistry registry) { this.registry = registry; }
PaymentResult observePayment(Supplier<PaymentResult> paymentCall) {
return Observation.createNotStarted("payment.authorization", registry)
.lowCardinalityKeyValue("provider", "internal-payments")
.observe(paymentCall);
}
}
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
endpoint:
health:
probes:
enabled: true
Checkliste für Reviews
- Ist die Verantwortung des Bausteins klar: Framework steuert Lebenszyklus, Library wird gezielt benutzt?
- Ist die Fachlogik außerhalb von Controller, Listener, Repository-Implementierung oder Konfiguration?
- Sind Fehlerfälle, Timeouts, Security, Monitoring und Tests sichtbar modelliert?
- Gibt es klare Grenzen zwischen DTO, Domäne, Persistence und Infrastruktur?