Open Telemetry
Chronicle exports telemetry signals through the OpenTelemetry Protocol (OTLP). Telemetry is always enabled and configured via standard OpenTelemetry environment variables.
Signals
Chronicle exports the following signals:
| Signal | Description |
|---|---|
| Metrics | Application and infrastructure metrics (event sequences, observers, .NET runtime) |
| Traces | Distributed traces for Chronicle operations (gRPC, HTTP, Orleans) |
| Logs | Structured application logs |
Configuration
Telemetry is configured using standard OpenTelemetry environment variables:
| Variable | Default | Description |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
none | OTLP receiver endpoint (e.g. http://localhost:4317) |
OTEL_EXPORTER_OTLP_PROTOCOL |
grpc |
Export protocol: grpc or http/protobuf |
OTEL_EXPORTER_OTLP_HEADERS |
none | Additional headers (e.g. API keys for cloud backends) |
OTEL_SERVICE_NAME |
Chronicle |
Service 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
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:
docker compose up -d
Then set the endpoint environment variable before starting the Kernel:
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 dotnet run
Open the Aspire Dashboard at http://localhost:18888 to view metrics, traces, and logs.
Example: Prometheus and Grafana
For production-grade metric collection, connect Chronicle to a Prometheus-compatible OTLP receiver (for example the OpenTelemetry Collector):
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
Example: cloud observability backends
Most cloud observability backends (Datadog, Honeycomb, Grafana Cloud, Azure Monitor) accept OTLP. Set the endpoint and any required authentication headers:
OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.example.com
OTEL_EXPORTER_OTLP_HEADERS=x-api-key=your-api-key
Metrics instrumented
Chronicle instruments the following meters:
| Meter | Description |
|---|---|
Cratis.Chronicle |
Chronicle application metrics (events appended, observers, etc.) |
Microsoft.Orleans |
Orleans distributed actor framework metrics |
Grpc.AspNetCore.Server |
gRPC server request metrics |
| .NET runtime | GC, thread pool, and memory metrics from the .NET runtime |
Traces instrumented
Chronicle traces the following activity sources:
| Source | Description |
|---|---|
Cratis.Chronicle |
Chronicle internal operations |
Microsoft.Orleans.Runtime |
Orleans runtime activities |
Microsoft.Orleans.Application |
Orleans application activities |
| HTTP client | Outgoing HTTP requests |
| ASP.NET Core | Incoming HTTP and gRPC requests |
| gRPC client | Outgoing gRPC calls |