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

128 lines
4.5 KiB
Markdown

# 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
- https://crm.media-on.de nicht erreichbar
- Coolify (https://server.media-on.de) nicht erreichbar
### 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
```markdown
## 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
- Server: root@46.225.91.159 (SSH Key: ~/.ssh/id_ed25519)
- Coolify: https://server.media-on.de
- Forgejo: https://forgejo.media-on.de/Leopoldadmin/leocrm
- App: https://crm.media-on.de