Skip to main content

OpenTelemetry Export (OTLP)

The OpenTelemetry export card ships the whole gateway’s telemetry — one SERVER span per request, one log record per proxied request and webhook delivery, and request count / latency metrics every 60 seconds — to a single OTLP/HTTP endpoint. What each signal contains is documented in OpenTelemetry export; this page is the setup. Scope: Global defaults only. This is the deployment operator’s view of KnoxCall itself: on KnoxCall Cloud it is KnoxCall’s; on a self-hosted deployment it is yours. A workspace that wants its own request logs and metrics in its own collector uses Telemetry export instead.

The three fields

Plus three toggles — Export traces, Export integration logs, Export metrics — all on by default. Turn a signal off rather than pointing it at a backend that rejects it (see Sentry below).

1. Configure

  1. Settings → Integrations → Global defaults → OpenTelemetry exportConfigure.
  2. Endpoint, headers, service name from the recipe for your backend below.
  3. Save. Export starts immediately in the API server, across all its workers — no restart.

2. Verify

Spans and log records should appear in your backend within a minute of the next proxied request; metrics on the next 60-second tick. Nothing is logged locally on success, so the backend is the check.

Recipes

Endpoints and header names are those published by each vendor at the time of writing; confirm on the vendor’s OTLP settings page, which is also where you mint the credential. Mint a write-only ingest credential in every case — never an admin API key.

Grafana Cloud

  1. Grafana Cloud portal → your stack → Connections → OpenTelemetry (or Configure on the OTLP tile). It shows the endpoint, your instance id and a token generation button.
  2. Create a token with the metrics:write, logs:write and traces:write scopes.
  3. Grafana authenticates with HTTP Basic: base64("<instance id>:<token>").

Honeycomb

  1. Environment settings → API keys → Create ingest key (Send events only).
  2. Metrics land in a dataset named by a header; traces and logs use the service name.

New Relic

Use an ingest license key, not a user key.

Datadog

Datadog ingests OTLP through the Datadog Agent or an OpenTelemetry Collector with the Datadog exporter, not a public OTLP URL. Enable the Agent’s OTLP/HTTP receiver (otlp_config.receiver.protocols.http.endpoint: 0.0.0.0:4318) and point KnoxCall at it — over a private network or TLS, since the Agent has no auth of its own.

SigNoz

Elastic

Elastic Cloud and Elastic APM Server accept OTLP/HTTP natively.

Axiom

Sentry

Sentry ingests OTLP traces and logs into the same project as your errors, but not metrics — untick Export metrics or the metric exporter is rejected every 60 seconds. Values and the caveats are in Sentry as an OTLP backend.

Splunk, Dynatrace and everything else: a self-run Collector

Any backend that speaks OTLP or has a Collector exporter can be reached through an OpenTelemetry Collector you run. Point KnoxCall at the Collector’s OTLP/HTTP receiver and fan out from there:
Put a TLS terminator with a bearer-token check in front of the receiver, and give KnoxCall that token in OTLP auth headers — a bare receiver on a public address accepts telemetry from anyone.

Environment variables, and who reads what

Two rules a self-hosted operator needs to know:
  • The environment wins. This is the opposite of most integrations. If OTEL_EXPORTER_OTLP_ENDPOINT is set on the host, editing the card changes nothing.
  • The stored row reaches the API server only. Scheduled jobs, workflow workers and the standalone proxy read the environment variables and never the row. If you want every process covered, configure the environment; use the card for a quick change on the API server.

Things that bite

  • Base endpoint only. The most common mistake is pasting a URL that already ends in /v1/traces.
  • Headers are a single line. name=value pairs separated by commas; a header value containing a comma cannot be expressed here — use the environment variable form with an env-quoted value, or a Collector.
  • Metrics carry a knoxcall.tenant_id dimension on this export, so cardinality grows with workspaces; per-workspace exports do not carry it.