Excititor Chunk Telemetry
Reference: Sprint 110.
Audience: operators and observability engineers monitoring the Excititor Chunk API.
This page documents the metrics and logs emitted by chunk ingestion. For the broader set of Excititor evidence metrics, see the Observability guide.
Metrics
All instruments are published under the StellaOps.Excititor.Chunks meter.
| Metric | Type | Unit | Description |
|---|---|---|---|
vex_chunks_ingested_total | Counter | chunks | Increments per chunk submitted. Tags: tenant, source, status (accepted/rejected), reason (empty for accepted). |
vex_chunks_item_count | Histogram | items | Item count per chunk. |
vex_chunks_payload_bytes | Histogram | bytes | Measured from the NDJSON payload length. |
vex_chunks_latency_ms | Histogram | ms | End-to-end ingestion latency per request. |
Logs
| Event | Fields |
|---|---|
vex.chunk.ingest.accepted | chunk_id, tenant, source, item_count, chunk_digest |
vex.chunk.ingest.rejected | chunk_id, tenant, source, reason, summarized validation errors |
Wiring steps
- Register
ChunkTelemetryas a singleton bound to the sharedMeterinstance. - In the
/vex/evidence/chunkshandler, computechunk_digestdeterministically from canonical JSON and emit the counters/histograms viaChunkTelemetry. - Log using the structured templates above; never include request bodies in logs.
- Expose metrics through the default ASP.NET metrics export (Prometheus/OpenTelemetry) already configured in the WebService.
Determinism & offline posture
- Do not include host-specific paths or timestamps in metric dimensions.
- Use the standard OTEL default histogram buckets; do not generate buckets at runtime.
- Keep the meter name stable. Adding new instruments requires a version note in the sprint
Decisions & Risks.
Ownership
- Implementer: Excititor Observability Guild
- Reviewers: Evidence Locker Guild (for parity with attestation metrics)
