Observability provider authoring
A new observability provider companion (Cephalon.Observability.<Provider>) is the recommended way to ship support for a managed backend. This page documents the conventions every provider companion is expected to follow.
Shared telemetry contract
Section titled “Shared telemetry contract”- Resource attributes — never strip or replace the Cephalon resource attributes. Add your own with a non-conflicting prefix.
- OTLP — gRPC OTLP is the wire format. Anything else (Zipkin, Jaeger thrift, …) is an adapter on top.
- Sampling — providers respect the
Engine:Observability:Samplingconfiguration. They don’t introduce their own.
Diagnostics conventions
Section titled “Diagnostics conventions”- Provider startup emits
cephalon.observability.<provider>.startedevent. - Provider startup failures escalate to the failure policy. Don’t silently fall back.
- Endpoint resolution is logged at
Informationonce per host lifetime.
Configuration shape
Section titled “Configuration shape”{ "Engine": { "Observability": { "Provider": "<provider>", "Endpoint": "<provider-specific>", "Headers": "<key=value;key=value>", "ConnectionString": "<provider-specific>" } }}Provider-specific keys live under Engine:Observability:<Provider>:*.
Planning language
Section titled “Planning language”When proposing a new provider:
- Backend — what is the target (Grafana Cloud, Honeycomb, …)?
- Wire format — OTLP gRPC by default; document any deviation.
- Auth — header-based, API-key, OIDC?
- Default endpoint — region picker if relevant.
- Maturity entry point — start at
M2with a single-vertical proof.