Actuator & Monitoring
Actuator & Monitoring
Der Actuator liefert produktionsreife Monitoring-Endpoints — Health, Metriken, Info.
Lektion 46: Actuator-Endpoints
# application.yml
management:
endpoints.web.exposure.include: health,info,metrics,prometheus
endpoint.health.show-details: always
| Endpoint | Funktion |
|---|---|
/actuator/health | App-Zustand (UP/DOWN) |
/actuator/info | Build-Info, Git-Commit |
/actuator/metrics | JVM, HTTP, DB-Metriken |
/actuator/prometheus | Prometheus-Format (Exporter) |
Lektion 47: Health-Checks
{
"status": "UP",
"components": {
"db": { "status": "UP" },
"diskSpace": { "status": "UP" },
"ping": { "status": "UP" }
}
}
Spring Boot prüft automatisch: DataSource, Kafka, Redis, Disk-Space, PING.
Lektion 48: Metriken
@Service
public class OrderService {
private final Counter ordersCreated;
OrderService(MeterRegistry registry) {
this.ordersCreated = Counter.builder("orders.created")
.description("Total orders created")
.register(registry);
}
public void createOrder(Order order) {
ordersCreated.increment();
// ...
}
}
Micrometer — Vendor-neutral Metrics
Micrometer ist die Metrics-Abstraktion in Spring Boot. Ein Code, viele Backends: Prometheus, Grafana, CloudWatch, Datadog. Der Actuator expo- niert die Metriken, Micrometer sammelt sie.
Lektion 49: Custom Health Indicators
@Component
public class PaymentHealthIndicator implements HealthIndicator {
@Override
public Health health() {
boolean healthy = checkPaymentGateway();
return healthy ? Health.up().build()
: Health.down().withDetail("gateway", "timeout").build();
}
}
Lektion 50: Observability in Produktion
- Logs — strukturiert (JSON), mit Trace-IDs
- Metrics — SLI/SLO-Dashboards (Prometheus + Grafana)
- Traces — verteilte Tracing (Micrometer Tracing + Zipkin/OTLP)
- Alerts — Prometheus-Alertmanager für kritische Metriken
Liveness vs. Readiness — zwei Fragen, zwei Checks
Liveness: "Läuft der Prozess noch?" — bei DOWN startet Kubernetes den Container neu. Readiness: "Kann er Requests bedienen?" — bei DOWN nimmt der Loadbalancer ihn aus dem Routing, ohne Neustart. Ein fehlgeschlagener DB-Check ist meist ein Readiness-Problem, keine Liveness-Krise.
Praxis-Szenario: CropGuard: DatabaseHealthIndicator
Der DatabaseHealthIndicator zählt die Insured-Tabelle per SELECT COUNT(*). Schlägt die Query fehl, meldet /actuator/health DOWN mit Detail database: unreachable.
✅ Wichtige Erkenntnisse
Haken setzen, um deinen Lernfortschritt zu markieren: