Telemetry
Edge appliances continuously collect metrics, logs, and security events. Data is queued locally and flushed to the Ingestor in batches (~15s, up to 100 items).
Upload flow
Section titled “Upload flow”sequenceDiagram
participant Edge as Edge Appliance
participant Ingestor as Ingestor Service
participant SQL as Azure SQL
loop Flush cycle
Edge->>Edge: Drain ingest_queue
Edge->>Ingestor: POST /v1/ingest
Note right of Edge: body device_id plus items array
Ingestor->>Ingestor: Validate X-Device-Key
Ingestor->>SQL: Route to per-kind tables
Ingestor-->>Edge: 200 OK
end
Request shape
Section titled “Request shape”{ "device_id": "550e8400-e29b-41d4-a716-446655440000", "items": [ { "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "kind": "telemetry", "payload": { "cpu_percent": 12.5, "ts": "2026-05-27T12:00:00Z" } } ]}Auth: X-Device-Key = device api_key from claim-complete. Full contract: Payload Schema.
Ingestor URL
Section titled “Ingestor URL”| Environment | URL |
|---|---|
| Production | https://ingest.cloud.monozu.io |
| Local dev | http://localhost:8081 |
Configured on the Edge appliance (config / env), not the Cloud API host.
Storage
Section titled “Storage”Ingestor writes to per-kind tables (e.g. telemetry, logs) via its router — not a single generic ingest_events write path. See ingestor/internal/domain/ingest/router.go.
Related
Section titled “Related”- Payload Schema
- Ingestor overview
- Source:
ingestor/ingest-api.md