Runbook Master
Konsolidiertes Betriebs-Runbook mit echten Diagnosebefehlen, erwarteter Ausgabe, Lösung und relevanten Dateien.
00. Master-Runbook verwenden
Direkt öffnen.
01. Lokaler Start und Container-Probleme
Direkt öffnen.
02. Maven Build und Modulgrenzen
Direkt öffnen.
03. REST Flow Bestellung annehmen
Direkt öffnen.
04. PostgreSQL, Flyway und Datenbankbetrieb
Direkt öffnen.
05. Outbox bleibt auf NEW
Direkt öffnen.
06. RabbitMQ Queue leer oder Consumer reagiert nicht
Direkt öffnen.
07. WireMock Payment Provider
Direkt öffnen.
08. Keycloak 401 / 403 Diagnose
Direkt öffnen.
09. Observability: Prometheus und Grafana zeigen keine Daten
Direkt öffnen.
10. Resilience: Timeout, Retry, Circuit Breaker
Direkt öffnen.
11. Testcontainers und E2E Tests
Direkt öffnen.
12. CI/CD und Quality Gates
Direkt öffnen.
13. Deployment: Docker, Kubernetes, OpenShift, Helm
Direkt öffnen.
14. Backup, Restore und Datenrettung
Direkt öffnen.
15. Incident Response und Produktionsreife
Direkt öffnen.
16. Einzel-Runbooks bleiben erhalten
Direkt öffnen.
00. Master-Runbook verwenden
Dieses Runbook ist der zentrale Betriebszugang. Es ersetzt nicht die Einzel-Runbooks, sondern konsolidiert sie. Die Einzeldateien bleiben als Details erhalten.
Regel 1
Immer zuerst docker compose ps und die Logs prüfen.
Regel 2
Bei fachlichen Fehlern immer REST, DB, Outbox und Broker gemeinsam prüfen.
Regel 3
401 bedeutet Tokenproblem. 403 bedeutet Rollenproblem.
cd 04_PROJEKT
docker compose ps
docker compose logs --tail=100 postgres rabbitmq keycloak wiremock prometheus grafana
01. Lokaler Start und Container-Probleme
Fehlerbild
Container starten nicht, Ports sind belegt oder ein Service bleibt unhealthy.
Sofortcheck
cd 04_PROJEKT
docker compose ps
docker compose logs --tail=120 postgres rabbitmq keycloak wiremockDiagnose
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
docker compose config
docker compose down
docker compose up -d
docker compose ps
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
02. Maven Build und Modulgrenzen
Fehlerbild
Build bricht ab, Module werden nicht gefunden oder Tests schlagen an falscher Stelle fehl.
Sofortcheck
cd 04_PROJEKT/maven-project
mvn -q -DskipTests package
mvn -pl runtime -am testDiagnose
mvn -q help:effective-pom -DskipTests
mvn -q -DskipTests dependency:tree
mvn -pl integration-tests -am verify
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
03. REST Flow Bestellung annehmen
Fehlerbild
REST Call liefert Fehler oder Bestellung erscheint nicht in der Datenbank.
Sofortcheck
curl -i -X POST http://localhost:8080/api/orders/ORD-RB-100/acceptDiagnose
curl -fsS http://localhost:8080/actuator/health
docker compose logs --tail=100 runtime
docker compose exec postgres psql -U order_user -d orderdb -c "select * from order_platform.orders order by created_at desc limit 5;"
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
04. PostgreSQL, Flyway und Datenbankbetrieb
Fehlerbild
Tabellen fehlen, Migration schlägt fehl, Seed-Daten fehlen oder Restore ist unklar.
Sofortcheck
cd 04_PROJEKT
docker compose exec postgres psql -U order_user -d orderdb -c "\dn"
docker compose exec postgres psql -U order_user -d orderdb -c "select * from flyway_schema_history order by installed_rank;"Diagnose
docker compose exec postgres psql -U order_user -d orderdb -c "select count(*) from order_platform.orders;"
docker compose exec postgres psql -U order_user -d orderdb -c "select status, count(*) from outbox.events group by status;"
./scripts/database/check-flyway-history.sh
./scripts/database/check-outbox-backlog.sh
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
05. Outbox bleibt auf NEW
Fehlerbild
Bestellung ist gespeichert, aber Outbox Events bleiben auf `NEW` und werden nicht veröffentlicht.
Sofortcheck
docker compose exec postgres psql -U order_user -d orderdb -c "select event_id,event_type,status,created_at,published_at from outbox.events order by event_id desc limit 20;"Diagnose
docker compose logs --tail=200 runtime | grep -i -E "outbox|rabbit|publish|error"
curl -fsS http://localhost:8080/actuator/health
curl -fsS http://localhost:8080/actuator/prometheus | grep -i outbox
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
06. RabbitMQ Queue leer oder Consumer reagiert nicht
Fehlerbild
Outbox ist PUBLISHED, aber in RabbitMQ ist keine Nachricht sichtbar oder Billing Consumer loggt nichts.
Sofortcheck
curl -u order_user:order_pass http://localhost:15672/api/queues/%2F/billing.order-accepted
docker compose logs --tail=200 rabbitmq runtimeDiagnose
curl -u order_user:order_pass http://localhost:15672/api/exchanges/%2F/order.events
curl -u order_user:order_pass http://localhost:15672/api/bindings/%2F/e/order.events/q/billing.order-accepted
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
07. WireMock Payment Provider
Fehlerbild
Payment-Autorisierung schlägt fehl, WireMock antwortet nicht oder Mapping passt nicht.
Sofortcheck
curl -fsS http://localhost:8089/__admin/mappings
curl -i -X POST http://localhost:8089/payment/authorize -H "Content-Type: application/json" -d "{"orderId":"ORD-RB","amount":"19.90"}"Diagnose
docker compose logs --tail=100 wiremock
curl -fsS http://localhost:8089/__admin/requests
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
08. Keycloak 401 / 403 Diagnose
Fehlerbild
API liefert 401 oder 403. Benutzer versteht nicht, ob Token oder Rolle fehlt.
Sofortcheck
./scripts/security/get-keycloak-token.sh order-admin admin
./scripts/security/call-secured-order-flow.shDiagnose
curl -fsS http://localhost:8082/realms/order-platform/.well-known/openid-configuration
docker compose logs --tail=150 keycloak
TOKEN=$(./scripts/security/get-keycloak-token.sh order-reader reader | python -c "import sys,json; print(json.load(sys.stdin).get('access_token',''))")
echo "$TOKEN" | cut -d. -f2
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
- 04_PROJEKT/containers/keycloak/realm-order-platform.json
- 04_PROJEKT/maven-project/runtime/src/main/java/com/example/order/runtime/security/SecurityConfiguration.java
- 04_PROJEKT/maven-project/runtime/src/main/java/com/example/order/runtime/security/RealmRoleJwtAuthenticationConverter.java
- 05_BETRIEB/docs/runbooks/keycloak-security-flow.html
09. Observability: Prometheus und Grafana zeigen keine Daten
Fehlerbild
Grafana ist leer, Prometheus scraped nicht oder Metriken fehlen.
Sofortcheck
curl -fsS http://localhost:8080/actuator/prometheus | head
curl -fsS http://localhost:9090/api/v1/targets | python -m json.toolDiagnose
docker compose logs --tail=100 prometheus grafana
curl -fsS http://localhost:8080/actuator/health
curl -fsS http://localhost:8080/actuator/prometheus | grep -E "http_server|outbox|resilience"
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
10. Resilience: Timeout, Retry, Circuit Breaker
Fehlerbild
Payment Provider ist langsam/fehlerhaft und Runtime reagiert instabil.
Sofortcheck
./scripts/resilience/call-payment-flow-repeatedly.sh
./scripts/resilience/check-resilience-metrics.shDiagnose
curl -fsS http://localhost:8080/actuator/prometheus | grep resilience4j
docker compose logs --tail=200 runtime | grep -i -E "timeout|retry|circuit|bulkhead|payment"
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
11. Testcontainers und E2E Tests
Fehlerbild
Integrationstests starten nicht, Docker fehlt oder Failsafe findet Tests nicht.
Sofortcheck
./scripts/tests/run-phase4-e2e.shDiagnose
cd 04_PROJEKT/maven-project
mvn -pl integration-tests -am verify
docker ps
docker logs $(docker ps -q --filter ancestor=postgres:16-alpine | head -1)
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
12. CI/CD und Quality Gates
Fehlerbild
Pipeline bricht ab, SBOM/Lizenzprüfung fehlt oder Docker Build läuft lokal nicht.
Sofortcheck
./scripts/quality/run-quality-gates.shDiagnose
cd 04_PROJEKT/maven-project
mvn verify
cd ..
./scripts/quality/check-release-package.sh
sed -n "1,220p" .github/workflows/ci.yml
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
13. Deployment: Docker, Kubernetes, OpenShift, Helm
Fehlerbild
Container Image baut nicht, Kustomize rendert fehlerhaft oder Pod startet nicht.
Sofortcheck
./scripts/deploy/build-runtime-image.sh
./scripts/deploy/check-deployment.shDiagnose
kubectl kustomize deployment/kubernetes/base
kubectl kustomize deployment/kubernetes/overlays/local
helm template order-runtime deployment/helm/order-runtime
kubectl describe pod -n order-platform
kubectl logs -n order-platform deploy/order-runtime
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
14. Backup, Restore und Datenrettung
Fehlerbild
Daten sollen gesichert oder wiederhergestellt werden. Risiko: falsche DB oder unvollständige Sicherung.
Sofortcheck
./scripts/database/backup-postgres.shDiagnose
ls -lh backups/
./scripts/database/check-flyway-history.sh
./scripts/database/check-outbox-backlog.sh
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
15. Incident Response und Produktionsreife
Fehlerbild
Ein Fehler betrifft mehrere Systeme: API, DB, Broker, Security oder Observability.
Sofortcheck
date
docker compose ps
docker compose logs --tail=200 > incident-logs.txt
./scripts/operations/dr-smoke-check.shDiagnose
curl -i http://localhost:8080/actuator/health
curl -fsS http://localhost:9090/api/v1/alerts | python -m json.tool
docker compose exec postgres psql -U order_user -d orderdb -c "select status,count(*) from outbox.events group by status;"
Erwartete Ausgabe / Interpretation
Lösung
Relevante Dateien
16. Einzel-Runbooks bleiben erhalten
Dieses Master-Runbook fasst zusammen. Die ursprünglichen Einzel-Runbooks bleiben verlinkt:
| Thema | Datei |
|---|---|
| Lokaler Start | docs/runbooks/local-start.html |
| Outbox/RabbitMQ | docs/runbooks/outbox-rabbitmq-flow.html |
| Keycloak | docs/runbooks/keycloak-security-flow.html |
| E2E Tests | docs/runbooks/phase4-e2e-tests.html |
| Observability | docs/runbooks/observability-runbook.html |
| Resilience | docs/runbooks/phase6-resilience.html |
| CI/CD | docs/runbooks/phase7-ci-cd-quality-gates.html |
| Deployment | docs/runbooks/phase8-deployment.html |
| Backup/Restore | docs/runbooks/database-backup-restore.html |
| Incident Response | docs/runbooks/incident-response.html |