Monitoring & observability (spec §58)
Mät- och larmpunkter
| Signal | Källa | Larmtröskel (initial) |
|---|---|---|
| API-fel (5xx-andel) | API-loggar (pino) → CloudWatch | > 2 % över 5 min |
| API-latens p95 | reverse proxy-loggar | > 1 500 ms över 10 min |
| Workerfel | worker-loggar (✗-rader) |
> 5 fel / 10 min |
| Köns längd | GET /admin/v1/jobs/overview (queue.waiting) |
> 100 väntande i 10 min |
| Outbox-eftersläp | samma endpoint (outboxPending) | > 500 i 15 min |
| DB-anslutningar | RDS CloudWatch | > 80 % av max |
| Redis-minne | Redis INFO | > 80 % av maxmemory |
| AAMOS-hälsa | GET /admin/v1/system/health (aamos.ok) |
fel i 3 kontroller i rad |
| AI-kostnad | scan_jobs.cost_usd summerat per dag | > budgettak per dag |
| Subscription-webhooks | store_notifications (processed=false ålder) | äldst > 30 min |
| Sync-konflikter | app-telemetri (senare fas) | – |
| Abuse | rate limit-träffar per IP | manuell granskning |
Correlation ID
Varje request får/vidarebefordrar x-correlation-id (spec §58). ID:t följer med i:
API-loggar → jobbdata → AAMOS-anrop (metadata.correlationId) → audit logs.
Sök på ID:t i loggarna för att följa ett flöde genom hela systemet.
Healthchecks
GET /healthz– liveness (alltid 200 när processen lever)GET /readyz– readiness (DB-ping; 503 vid fel)- Docker HEALTHCHECK på API-containern
GET /admin/v1/system/health– DB, Redis, AAMOS, connectors (admin-token)
Steg 1-implementation (befintlig server)
- CloudWatch Agent läser Docker json-file-loggar under
/var/lib/docker/containers. - Metric filters på
"level":50(error) och✗-rader → larm till befintlig SNS-kanal. - Cron-jobb kör
curl /readyzvarje minut → larm efter 3 fel.
Steg 3 (egen VPC/ECS)
CloudWatch Container Insights + RDS Performance Insights + strukturerade loggar till CloudWatch Logs Insights. Dashboards definieras som kod i denna katalog.