Ga naar inhoud

Hoofdstuk 13: Gezondheidsmonitoring en diagnostiek

Doelgroep: DevOps, platform-engineers

Gezondheidsendpoints

/api/health: liveness

Retourneert de basisstatus van de API, de git-SHA en de versie. Wordt gebruikt door de deploy-workflow en externe monitoring.

curl -sS https://scan.rtb.cat/api/health | jq .

/system/data-health: datavolledigheid

Retourneert de gezondheidsstatus van data per koper, inclusief de versheidsgraad per rapporttype. Accepteert de parameters days, buyer_id en availability_state.

Wordt gebruikt door de setup-checklist en de runtime-gezondheidspoort.

Systeemstatuspagina (/settings/system)

De UI toont:

Controle Wat het monitort
Python Runtimeversie en beschikbaarheid
Node Next.js-build en SSR-status
FFmpeg Mogelijkheid voor het genereren van videominiaturen
Database Postgres-verbinding en rijtelling
Miniaturen Status en wachtrij van batchgeneratie
Schijfruimte Schijfgebruik van de VM

Runtime-gezondheidsscripts

Deze scripts vormen de operationele ruggengraat om te verifieren dat het systeem end-to-end werkt.

diagnose_v1_buyer_report_coverage.sh

Diagnosticeert waarom een specifieke koper ontbrekende CSV-dekking heeft.

export CATSCAN_CANARY_EMAIL="cat-scan@rtb.cat"
scripts/diagnose_v1_buyer_report_coverage.sh \
  --buyer-id 1487810529 \
  --timeout 180 \
  --days 14

Controles (in volgorde): 1. Seat-mapping: buyer_id -> bidder_id 2. Importmatrix: geslaagd/mislukt/niet_geimporteerd per CSV-type 3. Dataversheid: geimporteerde/ontbrekende celdekking 4. Importgeschiedenis: recente importrijen 5. Gmail-status: aantal ongelezen, laatste reden, recentste metriekdatum

Resultaat: PASS of FAIL met een specifieke diagnose.

run_v1_runtime_health_strict_dispatch.sh

Voert de volledige runtime-gezondheidspoort uit, die het volgende controleert:

  • API-gezondheid
  • Datagezondheid (versheid en dimensiedekking)
  • Conversiegezondheid en gereedheid
  • QPS-opstartlatentie
  • QPS-pagina SLO-samenvatting
  • Optimizer-economie en modellen
  • Validatie van modelendpoints
  • Score+propose-workflow
  • Voorstelcyclus
  • Rollback dry-run

Elke controle retourneert PASS, FAIL of BLOCKED (met reden).

CI-workflow: v1-runtime-health-strict.yml

Voert de strikte poort uit in CI. Handmatig getriggerd via workflow_dispatch.

gh workflow run v1-runtime-health-strict.yml \
  --ref unified-platform \
  -f api_base_url="https://scan.rtb.cat/api" \
  -f buyer_id="1487810529" \
  -f canary_profile="balanced" \
  -f canary_timeout_seconds="180"

Canary-authenticatie

Runtime-scripts authenticeren via omgevingsvariabelen:

Variabele Doel
CATSCAN_CANARY_EMAIL X-Email-header voor directe API-aanroepen (VM-lokaal)
CATSCAN_BEARER_TOKEN Bearer-token (CI-omgeving, opgeslagen in GitHub-secrets)
CATSCAN_SESSION_COOKIE OAuth2 Proxy-sessiecookie (CI-omgeving)

Vanaf de VM-host: gebruik CATSCAN_CANARY_EMAIL met http://localhost:8000. Vanuit CI (extern): gebruik CATSCAN_BEARER_TOKEN of CATSCAN_SESSION_COOKIE met https://scan.rtb.cat/api.

Resultaten interpreteren

Status Betekenis
PASS Controle geslaagd, systeem gezond
FAIL Controle mislukt, onmiddellijk onderzoeken
BLOCKED Controle kon niet worden voltooid vanwege een afhankelijkheid (bijv. geen data voor deze koper, ontbrekend endpoint). Niet per se een codebug.

Gerelateerd