Skip to content

Open Telemetry

Chronicle exports telemetry signals through the OpenTelemetry Protocol (OTLP). Telemetry is always enabled and configured via standard OpenTelemetry environment variables.

Chronicle exports the following signals:

SignalDescription
MetricsApplication and infrastructure metrics (event sequences, observers, .NET runtime)
TracesDistributed traces for Chronicle operations (gRPC, HTTP, Orleans)
LogsStructured application logs

Telemetry is configured using standard OpenTelemetry environment variables:

VariableDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINTnoneOTLP receiver endpoint (e.g. http://localhost:4317)
OTEL_EXPORTER_OTLP_PROTOCOLgrpcExport protocol: grpc or http/protobuf
OTEL_EXPORTER_OTLP_HEADERSnoneAdditional headers (e.g. API keys for cloud backends)
OTEL_SERVICE_NAMEChronicleService name reported to the telemetry backend

When OTEL_EXPORTER_OTLP_ENDPOINT is not set, Chronicle does not export telemetry but the instrumentation is still active.

Local development with .NET Aspire Dashboard

Section titled “Local development with .NET Aspire Dashboard”

The Kernel ships with a docker-compose.yml that starts the .NET Aspire Dashboard as a lightweight all-in-one OTLP receiver and telemetry viewer.

aspire-dashboard:
image: mcr.microsoft.com/dotnet/aspire-dashboard:latest
environment:
- DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true
- ALLOW_UNSECURED_TRANSPORT=true
ports:
- 18888:18888 # dashboard UI
- 4317:18889 # OTLP/gRPC receiver

Start the services:

Terminal window
docker compose up -d

Then set the endpoint environment variable before starting the Kernel:

Terminal window
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 dotnet run

Open the Aspire Dashboard at http://localhost:18888 to view metrics, traces, and logs.

For production-grade metric collection, connect Chronicle to a Prometheus-compatible OTLP receiver (for example the OpenTelemetry Collector):

Terminal window
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317

Most cloud observability backends (Datadog, Honeycomb, Grafana Cloud, Azure Monitor) accept OTLP. Set the endpoint and any required authentication headers:

Terminal window
OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.example.com
OTEL_EXPORTER_OTLP_HEADERS=x-api-key=your-api-key

Chronicle instruments the following meters:

MeterDescription
Cratis.ChronicleChronicle application metrics (events appended, observers, etc.)
Microsoft.OrleansOrleans distributed actor framework metrics
Grpc.AspNetCore.ServergRPC server request metrics
.NET runtimeGC, thread pool, and memory metrics from the .NET runtime

Chronicle traces the following activity sources:

SourceDescription
Cratis.ChronicleChronicle internal operations
Microsoft.Orleans.RuntimeOrleans runtime activities
Microsoft.Orleans.ApplicationOrleans application activities
HTTP clientOutgoing HTTP requests
ASP.NET CoreIncoming HTTP and gRPC requests
gRPC clientOutgoing gRPC calls