Flux de requêtes
Ingest (agent → API → TSDB)
- L'agent ouvre une conn mTLS vers :8443
- La config TLS serveur vérifie le peer-cert contre la CA émise
agentIDFromCert(r)→ identity (JAMAIS depuis body/header)- SELECT organization_id, status, region_id FROM agents
- Sample[] : organization_id + agent_id + host sont accolés à chaque métrique
router.VMForRegion(region_id)→ le client TSDB de la régionvm.Write(samples)- UPDATE agents SET last_seen_at = now()
Requête cabinet
- Browser →
/api/v1/orgs/:slug/query/range?metric=X&host=Y - Session middleware (cookie) → userCtx
- orgMiddleware → orgContext{OrgID, UserID, Role}
composeQuery("X", {organization_id: OrgID, host: Y})vm.Range(promQuery, start, end, step)
Requête embed
- Backend partenaire : POST /api/v1/embed/tokens avec mk_xxx
- L'API vérifie l'origine de la clé contre l'allowlist
- Un JWT est émis : les claims contiennent {org_id, filters}
- Le partenaire place le JWT dans un iframe ou postMessage
- SDK →
/api/v1/embed/query/rangeavec un Bearer JWT - embed.Required : parse le JWT, extrait filters des claims
- composeQuery avec claim.filters