further rework to the documentation

This commit is contained in:
Codex Agent
2025-11-20 12:31:21 +01:00
parent 6afa44d947
commit 9afcaa7836
90 changed files with 1721 additions and 29 deletions

View File

@@ -0,0 +1,146 @@
---
title: Monitoring & Observability
sidebar_label: Monitoring
---
Dieses Dokument sammelt die wichtigsten MonitoringPunkte der Plattform und soll helfen, die richtigen Dashboards und Alerts aufzubauen.
## 1. Was sollte überwacht werden?
- **Verfügbarkeit**
- HTTPChecks auf zentrale Endpunkte (Landing, JoinTokenFlows, Guest Upload, Tenant Admin Login).
- PublicAPIChecks (`/api/v1/events/{token}`, Galerie, UploadEndpoints).
- **Queues**
- Länge und Durchsatz der Queues `default`, `media-storage`, `media-security`, `notifications`.
- Age/TimeinQueue, Anzahl der Failed Jobs.
- **Storage**
- Füllstand der HotStorageVolumes/Buckets.
- Anzahlen/Status in `event_media_assets` (z.B. viele `pending` oder `failed`).
- **Fehler-Raten**
- HTTP 5xx/4xx spitzenweise, gruppiert nach Route/Service.
- ApplikationsLogs mit Error/WarningLevel.
- **Billing & Webhooks**
- Fehlgeschlagene Paddle/RevenueCatWebhooks.
- Differenz zwischen erwarteten und verarbeiteten Zahlungen (optional).
## 2. Werkzeuge & Quellen
- **Horizon**
- LiveÜberblick über LaravelQueues.
- Alerts, wenn eine Queue zu lange Backlog aufbaut.
- **Docker/Dokploy**
- ContainerHealth (RestartLoops, Ressourcennutzung).
- ServiceHealthchecks.
- **Logs**
- LaravelLogs (`storage/logs/*.log`), ggf. via Promtail/Loki oder ELK zentralisiert.
- Spezifische Channels (z.B. `storage-jobs`, `notifications`, `billing`).
- **Metriken**
- Falls vorhanden: Prometheus/GrafanaDashboards für App/DB/RedisMetriken.
> TODO: Wenn konkrete Dashboards in Grafana o.Ä. existieren, füge hier Screenshots/Links und eine kurze Erklärung der Panels ein.
## 3. Alarmierung & Schwellenwerte
Konkrete Schwellenwerte hängen von Traffic und Infrastruktur ab, aber folgende Muster haben sich bewährt:
- **Queues**
- `default`:
- Warnung: > 100 Jobs oder ältester Job > 5 Minuten.
- Kritisch: > 300 Jobs oder ältester Job > 15 Minuten.
- `media-storage`:
- Warnung: > 200 Jobs oder ältester Job > 10 Minuten.
- Kritisch: > 500 Jobs oder ältester Job > 30 Minuten.
- `media-security`:
- Warnung: > 50 Jobs oder ältester Job > 5 Minuten.
- Kritisch: > 150 Jobs oder ältester Job > 15 Minuten.
- `notifications`:
- Warnung: > 100 Jobs dauerhaft im Backlog.
- Kritisch: wenn die Queue dauerhaft wächst, während Events live laufen.
- **Uploads**
- Fehlerquote bei UploadEndpoints:
- Warnung: 25 % Fehler (HTTP 4xx/5xx) über 5minütiges Fenster.
- Kritisch: > 510 % Fehler in 5 Minuten.
- Anzahl „hängender“ Uploads:
- Warnung, wenn `storage:check-upload-queues` für denselben Event wiederholt Alarm schlägt (z.B. mehr als 5 benachrichtigte Events in 10 Minuten).
- **Public API**
- Latenz für `GET /api/v1/events/{token}` und `/photos`:
- Warnung: P95 > 500 ms über 5 Minuten.
- Kritisch: P95 > 12 s über 5 Minuten.
- Fehlerraten für diese Endpoints:
- Warnung: > 2 % 5xx über 5 Minuten.
- Kritisch: > 5 % 5xx über 5 Minuten.
- **Billing**
- Failed Webhooks:
- Warnung: mehr als N (z.B. 510) fehlgeschlagene Webhooks pro 10 Minuten.
- Kritisch: schneller Anstieg oder > 20 % Fehleranteil.
- Differenz zwischen erwarteten und verarbeiteten Zahlungen:
- Regelmäßige Reports (z.B. täglich) statt harter Alerts, aber auffällige Abweichungen sollten ein Incident auslösen.
## 4. Betriebliche Nutzung
- **Daily Checks**
- Horizon QueueDashboard kurz prüfen.
- Logs auf neue Fehler/Warnmuster scannen.
- **Bei Incidents**
- MonitoringDaten helfen, Ursache und zeitlichen Verlauf zu rekonstruieren (siehe `docs/ops/incidents-major.md`).
## 5. Zusammenspiel mit bestehenden Kommandos
Einige ArtisanKommandos sind explizit für Monitoring/Health gedacht. Sie sollten in Cron/Scheduler oder externe Checks integriert werden:
- `storage:monitor` (falls vorhanden)
- Aggregiert StorageAuslastung und QueueHealth basierend auf `config/storage-monitor.php`.
- Kann Alerts per Mail/Log triggern, wenn Schwellwerte überschritten werden.
- `storage:check-upload-queues`
- Überprüft, ob Uploadbezogene Queues im erwarteten Rahmen liegen und triggert GastAlerts bei Problemen (siehe `docs/ops/guest-notification-ops.md`).
- `storage:archive-pending`
- Kein klassisches MonitoringKommando, aber relevant, um zu prüfen, ob Archivierungsjobs hinterherhinken (z.B. viele alte `hot`Assets).
Diese Kommandos sind kein Ersatz für echtes Monitoring, liefern aber wertvolle Signale, die in Dashboards und Alerts einfließen können.
## 6. Beispiele für Metrik- und Alert-Definitionen
Nachfolgend beispielhafte Formulierungen, wie Alerts unabhängig vom verwendeten MonitoringSystem aussehen könnten.
### 6.1 Queue-Backlog Alert (Pseudocode)
**Ziel**: Meldung, wenn `media-storage` zu lange Backlog aufbaut.
- Bedingung:
- `queue_length("media-storage") > 500` **OR**
- `oldest_job_age("media-storage") > 30min`
- Dauer:
- 2 aufeinanderfolgende Messintervalle (z.B. 2×5 Minuten).
- Aktion:
- Alarm an OnCall + Hinweis auf `docs/ops/media-storage-spec.md` und `docs/ops/dr-storage-issues.md`.
### 6.2 Upload-Error-Rate Alert
**Ziel**: UploadProbleme für Gäste früh erkennen.
- Bedingung:
- Anteil `5xx` oder „applikationsspezifische Fehlercodes“ bei `POST /api/v1/events/*/upload` > 5 % in 5 Minuten.
- Aktion:
- Alarm an OnCall, Link zum PublicAPIIncidentPlaybook und StorageRunbook.
### 6.3 Public-API-Latenz Alert
**Ziel**: Langsame Galerien / TokenAufrufe frühzeitig sehen.
- Bedingung:
- `P95(latency(GET /api/v1/events/*)) > 1000ms` über 5 Minuten.
- Aktion:
- Alarm an OnCall, eventuell automatische Skalierung oder Untersuchung (DB/RedisLast).
### 6.4 Billing-Webhook Alert
**Ziel**: Fehler bei Paddle/RevenueCatWebhookVerarbeitung erkennen.
- Bedingung:
- Mehr als 10 fehlgeschlagene WebhookVerarbeitungen innerhalb von 10 Minuten, oder Verhältnis `failed/success` > 0,2.
- Aktion:
- Alarm an OnCall + Finance/BillingVerantwortliche, Verweis auf `docs/ops/billing-ops.md`.
Diese Beispiele sollen helfen, konkrete Regeln in eurem MonitoringTool zu definieren. Die genauen Zahlen sollten anhand realer TrafficMuster feinjustiert werden.
Dieses Dokument ist bewusst technologieagnostisch formuliert die konkrete Implementierung (Prometheus, Grafana, Loki, ELK, SaaSMonitoring) sollte hier nachgezogen und mit Beispielen ergänzt werden.