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:
echo -n 'your-email:your-password' | base64OTLP/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-streamNo 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: trueVerify 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
Last updated on
Logs
Ingest logs into OpenObserve using OpenTelemetry, Vector, Filebeat, Fluent Bit, Fluentd, Kinesis Firehose, Syslog, and more for central log management.
Vector
Configure Vector for high-performance log aggregation, transformation, and routing to OpenObserve with HTTP and Elasticsearch sinks for scalable log management.