Request-Flows
Ingest (agent → API → TSDB)
- Der Agent öffnet eine mTLS-Conn zu :8443
- Die Server-TLS-Config verifiziert das Peer-Cert gegen die ausgestellte CA
agentIDFromCert(r)→ identity (NIE aus body/header)- SELECT organization_id, status, region_id FROM agents
- Sample[]: organization_id + agent_id + host werden an jede Metrik geheftet
router.VMForRegion(region_id)→ der TSDB-Client der Regionvm.Write(samples)- UPDATE agents SET last_seen_at = now()
Cabinet-Query
- 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)
Embed-Query
- Partner-Backend: POST /api/v1/embed/tokens mit mk_xxx
- Die API verifiziert die Key-Origin gegen die Allowlist
- Ein JWT wird ausgestellt: claims enthalten {org_id, filters}
- Der Partner legt das JWT in ein iframe oder postMessage
- SDK →
/api/v1/embed/query/rangemit einem Bearer JWT - embed.Required: parst das JWT, extrahiert filters aus claims
- composeQuery mit claim.filters