Files
leocrm/docs/incident-response-runbook.md
T

4.5 KiB

Incident Response Runbook — LeoCRM

Schnellreferenz

Szenario Erste Maßnahme Escalation
Server offline Coolify Dashboard prüfen SSH: root@46.225.91.159
DB offline docker exec postgres-* psql -U crm_user -d crm_db -c "SELECT 1" Backup restore prüfen
Redis offline docker exec redis-* redis-cli ping Worker neustarten
App 500 Errors docker logs crm_app-* --tail 100 Logs in Coolify prüfen
Worker hängt docker logs crm_worker-* --tail 100 ARQ Queue in Redis prüfen
Disk full df -h + docker system prune Alte Backups löschen
Deploy failed Coolify Deploy Logs Git Status prüfen

1. Server offline

Symptome

Maßnahmen

  1. SSH versuchen: ssh root@46.225.91.159
  2. Wenn SSH geht: docker ps — welche Container laufen?
  3. Coolify neustarten: docker restart coolify
  4. Traefik prüfen: docker logs coolify-proxy --tail 50
  5. Wenn Hetzner VPS offline: Hetzner Console (https://console.hetzner.cloud) → Server neustarten

2. Datenbank offline

Symptome

  • Health Check: database: down
  • App: 500 Errors auf allen API-Routen
  • Frontend: "Verbindung fehlgeschlagen"

Maßnahmen

  1. Container prüfen: docker ps | grep postgres
  2. Logs: docker logs postgres-xf7smknlger3hvkrsb910tui-* --tail 100
  3. Verbindung testen: docker exec postgres-* psql -U crm_user -d crm_db -c "SELECT 1"
  4. Wenn DB nicht startet: Disk voll? df -h
  5. Wenn DB korrupt: Backup restore mit python scripts/restore.py
  6. Benachrichtigung: System Dashboard → Alerts → Notification an Admin

3. Redis offline

Symptome

  • Sessions funktionieren nicht (Login loop)
  • Worker-Jobs werden nicht ausgeführt
  • WebSocket-Chat funktioniert nicht

Maßnahmen

  1. Container prüfen: docker ps | grep redis
  2. Logs: docker logs redis-xf7smknlger3hvkrsb910tui-* --tail 50
  3. Neustart: docker restart redis-xf7smknlger3hvkrsb910tui-*
  4. Wenn Redis korrupt: docker exec redis-* redis-cli FLUSHALL (Achtung: löscht Sessions!)
  5. Worker neustarten: docker restart crm_worker-xf7smknlger3hvkrsb910tui-*

4. App 500 Errors

Symptome

  • API-Routen returnieren 500
  • Frontend zeigt Fehlermeldungen

Maßnahmen

  1. Logs: docker logs crm_app-xf7smknlger3hvkrsb910tui-* --tail 100
  2. Health Check: curl https://crm.media-on.de/api/v1/health
  3. Wenn Migration fehlt: docker exec crm_app-* python -m alembic upgrade head
  4. Wenn Plugin fehlerhaft: Plugin in Settings deaktivieren
  5. Wenn Code-Bug: Fix committen + pushen + bash scripts/fast-deploy.sh full

5. Worker hängt

Symptome

  • Background-Jobs werden nicht ausgeführt (Mail-Sync, Backups, Search-Index)
  • ARQ Queue wächst

Maßnahmen

  1. Logs: docker logs crm_worker-xf7smknlger3hvkrsb910tui-* --tail 100
  2. Redis Queue prüfen: docker exec redis-* redis-cli LLEN arq:queue
  3. Worker neustarten: docker restart crm_worker-xf7smknlger3hvkrsb910tui-*
  4. Wenn Queue voll: docker exec redis-* redis-cli DEL arq:queue (Achtung: löscht ausstehende Jobs!)

6. Disk full

Symptome

  • DB kann nicht schreiben
  • Uploads schlagen fehl
  • Backups schlagen fehl

Maßnahmen

  1. Disk prüfen: df -h
  2. Docker cleanup: docker system prune -a --volumes (Achtung: nur ungenutzte Container/Images)
  3. Alte Backups löschen: ls /backups/ | head -20 + rm -rf /backups/leocrm_backup_oldest
  4. Logs löschen: docker logs crm_app-* --tail 0 2>&1 | wc -l + truncate -s 0 $(docker inspect --format='{{.LogPath}}' crm_app-*)
  5. Temp-Dateien: rm -rf /tmp/leocrm_*

7. Deploy failed

Symptome

  • Coolify zeigt Deploy Status: failed
  • App läuft noch mit altem Code

Maßnahmen

  1. Coolify Deploy Logs prüfen (https://server.media-on.de)
  2. Git Status: git status && git log --oneline -5
  3. Lokal bauen: cd frontend && npm run build — tsc errors?
  4. Backend import testen: /opt/venv/bin/python -c "import app.main"
  5. Fix committen + pushen + neu deployen

Post-Mortem Template

## Incident: [Titel]
- **Datum**: YYYY-MM-DD HH:MM
- **Dauer**: X Minuten/Stunden
- **Auswirkung**: [Welche User/Funktionen betroffen]
- **Ursache**: [Root Cause]
- **Lösung**: [Was wurde getan]
- **Lessons Learned**: [Was können wir besser machen]
- **Action Items**: [Konkrete Aufgaben um Wiederholung zu verhindern]

Kontakt