OpenTelemetry Collector (OTEL) / OTLP Log Ingestion
OpenObserve supports the OpenTelemetry Protocol (OTLP) for logs, metrics and traces ingestion using the OpenTelemetry Collector. This page covers log ingestion; for metrics and traces, see the dedicated pages under Ingestion.
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:
OTLP/HTTP
| Field | Value |
|---|---|
| Endpoint | https://<your-openobserve-host>/api/<your-org>/v1/logs |
Authorization header |
Basic <base64(email:password)> |
stream-name header |
your-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.
| Field | Value |
|---|---|
| Endpoint | <your-openobserve-host>:5081 |
Authorization header |
Basic <base64(email:password)> |
organization header |
your-org |
stream-name header |
your-stream |
tls.insecure |
false/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:
- Open the OpenObserve UI.
- Click Logs in the left sidebar.
- From the stream dropdown (top-left), select the stream you configured in
stream-name. - 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
- Quickstart: get OpenObserve running if you haven't yet.
- Logs UI: search and explore ingested logs.
- Other log ingestion options: Vector, Fluent Bit, syslog, language SDKs.
Need some help?
- Join our Community Slack
- Or Contact support