Skip to main content

Telemetry

The Radicalbit AI Gateway exports invocation telemetry using the OpenTelemetry (OTEL) protocol through the OpenLLMetry library.

The gateway distinguishes between two types of trace destinations:

  • Internal collector (COLLECTOR_BASE_URL) — the gateway's own built-in OTel Collector, used to store traces in ClickHouse for internal analytics and monitoring.
  • Extra custom exporters (OTLP_EXPORTERS) — additional OTLP destinations you bring yourself (e.g. Jaeger, Grafana Tempo, external platforms).

Both can be used together. Traces are fanned out to all configured destinations simultaneously.


Internal Collector

Set COLLECTOR_BASE_URL to point the gateway at its built-in OTel Collector. This collector writes traces to ClickHouse and powers the gateway's internal observability features.

environment:
COLLECTOR_BASE_URL: http://otel-collector:4318/v1/traces

The gateway stack includes a built-in OTel Collector alongside ClickHouse — when both are running, no extra configuration is needed beyond setting COLLECTOR_BASE_URL.

tip

COLLECTOR_BASE_URL must include the full path (e.g. /v1/traces). Unlike OTLP_EXPORTERS, no path is appended automatically.


Extra Custom Exporters

OTLP_EXPORTERS accepts a JSON array of additional OTLP destinations. Each object defines one exporter:

environment:
OTLP_EXPORTERS: '[{"url": "http://jaeger:4318/v1/traces"}]'

Exporter fields

FieldRequiredDescription
urlYesOTLP-compatible endpoint (e.g. http://localhost:4318). If no path is provided, /v1/traces is appended automatically.
api_keyNoAPI key sent as Authorization: Bearer <key>.
headersNoAdditional HTTP headers as a JSON object, e.g. {"X-Custom-Header": "value"}.

Multiple Extra Exporters

You can send traces to more than one custom backend simultaneously by listing multiple exporter objects:

environment:
OTLP_EXPORTERS: '[{"url": "http://jaeger:4318/v1/traces"}, {"url": "http://my-platform:4318"}]'

This is useful for mirroring traces to a local collector and a remote platform at the same time.


Authentication

If your telemetry destination requires authentication, use the api_key field (sent as Authorization: Bearer) or the headers field for custom auth schemes:

environment:
OTLP_EXPORTERS: '[{"url": "http://my-platform:4318/v1/traces", "api_key": "sk-my-key"}]'

Or with custom headers:

environment:
OTLP_EXPORTERS: '[{"url": "http://my-platform:4318/v1/traces", "headers": {"Authorization": "Basic sk-key"}}]'

Radicalbit AI Monitoring Platform

One possible telemetry destination is the Radicalbit AI Monitoring Platform.

After obtaining an API key, configure OTLP_EXPORTERS as follows:

environment:
COLLECTOR_BASE_URL: http://otel-collector:4318/v1/traces
OTLP_EXPORTERS: '[{"url": "http://localhost:9000/api/otel", "api_key": "<YOUR_API_KEY>"}]'

That's it — your telemetry will now be exported to both the internal collector and the Radicalbit AI Monitoring Platform.


Next Steps

  • Monitoring — Configure Prometheus metrics and dashboards
  • Deployment — Production deployment reference