Berserk Docs

OpenTelemetry SDKs

Configure an OpenTelemetry SDK to export directly to Berserk

Install your language's OTLP exporter and copy an address from Settings → Endpoints. On Managed Berserk the addresses are ingest.<your-domain>:4317 for gRPC and https://ingest.<your-domain>:4318 for HTTP. If a self-hosted install lists none, its operator publishes them: Ingest Endpoints.

Use an ingest token from Settings → Databases → Tokens. Its routing decides the database and tables.

gRPC is more efficient than HTTP. Use it when your SDK supports it:

export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=https://<your-ingest-host>:4317
export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer%20<ingest-token>"
export OTEL_EXPORTER_OTLP_COMPRESSION=gzip

The scheme selects transport security: https:// for TLS, http:// for plaintext. Do not append an RPC method path. Header values use the OTLP exporter configuration format; %20 encodes the space after Bearer.

OTLP via HTTP

For SDKs or runtimes without gRPC:

export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_ENDPOINT=https://<your-ingest-host>
export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer%20<ingest-token>"
export OTEL_EXPORTER_OTLP_COMPRESSION=gzip

OTEL_EXPORTER_OTLP_ENDPOINT takes a base URL; the exporter appends /v1/traces, /v1/logs or /v1/metrics. A signal-specific variable takes the full signal URL:

export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://<your-ingest-host>/v1/traces
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://<your-ingest-host>/v1/logs
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://<your-ingest-host>/v1/metrics

Browser applications

A browser exporter uses HTTP and is configured in application code with the full signal URL; see your JavaScript SDK's exporter setup.

The ingest endpoint has no CORS support: it answers no OPTIONS preflight and sends no Access-Control-Allow-* headers, so an exporter on a page from another origin fails. Send browser telemetry to a collector or proxy that answers CORS and adds the Authorization: Bearer <ingest-token> header. On Managed Berserk, ask the Berserk team.

Verify delivery

Trigger an instrumented action and check the SDK's export errors. In Berserk, query the token's destination table for that signal, filtered on your application's service.name.

Settings → Endpoints → OTLP via HTTP has curl examples for logs, spans and metrics. To send through a Collector instead, see OpenTelemetry Collector.

On this page