OpenObserve Docs
IngestionLogs

OpenTelemetry Collector (OTEL) / OTLP Log Ingestion

Updated View MarkdownOpen in ChatGPTOpen in Claude

OpenObserve supports the OpenTelemetry Protocol (OTLP) for logs, metrics, traces, and profiles ingestion using the OpenTelemetry Collector. This page covers log ingestion; for the other signals, see metrics, traces, and profiles.

Choose a protocol

OpenObserve supports two OTLP transports:

  • OTLP/HTTP: simpler to set up, works through most proxies and firewalls.
  • OTLP/gRPC: higher throughput and lower per-request overhead; requires HTTP/2. Supported in single-node mode from v0.6.4 and distributed mode from v0.7.4.

Prerequisites

  • An OpenObserve instance (Cloud or self-hosted) and your login credentials.
  • The OpenTelemetry Collector installed.

Generating the Authorization header

The Authorization header is Basic <base64(email:password)>. Generate the value with:

echo -n 'your-email:your-password' | base64

OTLP/HTTP

FieldValue
Endpointhttps://<your-openobserve-host>/api/<your-org>/v1/logs
Authorization headerBasic <base64(email:password)>
stream-name headeryour-stream

Example: OpenTelemetry Collector exporter

exporters:
  otlphttp/openobserve:
    endpoint: http://<your-openobserve-host>/api/<your-org>
    headers:
      Authorization: Basic cm9v****************************************Ng==
      stream-name: your-stream

No trailing slash on endpoint

The endpoint value must not end with a /. The collector appends /v1/logs itself, and a trailing slash will produce a 404.

OTLP/gRPC

The default gRPC port is 5081. You can change it using the ZO_GRPC_PORT environment variable.

FieldValue
Endpoint<your-openobserve-host>:5081
Authorization headerBasic <base64(email:password)>
organization headeryour-org
stream-name headeryour-stream
tls.insecurefalse/true

Example: OpenTelemetry Collector exporter

exporters:
  otlp/openobserve:
    endpoint: localhost:5081
    headers:
      Authorization: "Basic cm9v****************************************Ng=="
      organization: your-org
      stream-name: your-stream
    tls:
      insecure: true

Verify ingestion

After starting the collector, confirm logs are landing in OpenObserve:

  1. Open the OpenObserve UI.
  2. Click Logs in the left sidebar.
  3. From the stream dropdown (top-left), select the stream you configured in stream-name.
  4. You should see incoming log entries within a few seconds.

If no data appears, double-check that the endpoint has no trailing slash, the Authorization header is correctly base64-encoded, and the collector logs do not show export errors.

Next steps

Need some help?

Was this page helpful?

On this page