Skip to main content
Backend services send logs and traces to Sazabi over OTLP, the OpenTelemetry protocol. Point your OpenTelemetry SDK, or a Collector in front of it, at your intake URL. By the end you will have a service exporting telemetry and confirmed records arriving. Setup takes a few minutes plus a redeploy.

Choose how to send

  • From the SDK. Your service exports logs and traces straight to Sazabi with two environment variables. Use this when you can restart the service with new configuration.
  • Through a Collector. Your service exports to a Collector you already run, and the Collector forwards to Sazabi. Use this to keep one pipeline, batch in one place, or fan out to other backends too.
If your logs live on a platform you host on, such as Vercel or Cloudflare, connect it instead; see How data gets into Sazabi.

Send from the SDK

1
Get your intake URL. Open Settings > Log streams, add the OpenTelemetry source, and copy the Intake URL from its setup screen. The URL embeds your public key, so copy the whole URL and send no separate key or header. To create the source from the CLI, run npx -y @sazabi/cli@latest log-sources create otel --mode manual; it prints the intake URL.
2
Add the OpenTelemetry SDK for your language with an OTLP log and trace exporter. For install commands in Node.js and Python, and a Python logs-only setup, see OpenTelemetry.
3
Set the exporter environment where the process starts:
Environment
Use the intake URL as is. The SDK appends /v1/logs and /v1/traces itself, so do not add a path.
4
Restart or redeploy so the SDK starts with the new environment.
Sazabi’s OTLP intake takes HTTP only, as protobuf or JSON. Many SDKs default to gRPC, which the intake does not accept, so keep OTEL_EXPORTER_OTLP_PROTOCOL set to http/protobuf. OTEL_SERVICE_NAME sets the service name you filter and group by in Sazabi; give each service its own.

Send through a Collector

Add an otlphttp exporter that points at your intake URL, and put it in the logs and traces pipelines:
otelcol.yaml
Then point each service at the Collector with OTEL_EXPORTER_OTLP_ENDPOINT. For file, Kubernetes, and other receivers, see OpenTelemetry Collector.

Send metrics and traces separately

Sazabi stores every signal as a log record, but each signal has its own intake path:
  • Logs and traces go to the OpenTelemetry source’s intake URL above. Spans become records you can search next to your logs.
  • Metrics sent to that URL are stored too, each data point as a record under the same source. To keep metrics under their own source, create an OpenTelemetry Metrics source and set OTEL_EXPORTER_OTLP_METRICS_ENDPOINT to its intake URL, which already ends in /v1/metrics. See Send metrics.
  • Traces only. To store spans and the exceptions they record as separate error records, use an OpenTelemetry Traces source. See Send traces.
If your SDK exports metrics by default and you only want logs and traces, set OTEL_METRICS_EXPORTER=none so it stops sending them.

Verify

Confirm real records reach your project.
  1. Restart the service and make a request that writes a log line or produces a trace.
  2. Open the Intake page and look for records from the OpenTelemetry source. They typically arrive within a minute or two.
  3. Search for your service by name. In a thread, ask the Sazabi agent for logs from it, or run npx -y @sazabi/cli@latest logs ask "logs from checkout-api" --since 1h.
You should see records carrying your service name and the log lines or spans you generated.

Troubleshooting

  • No records. Confirm the environment variables are set in the process that runs the service, not only in a build step. Check the service’s output for OpenTelemetry export errors.
  • Export errors or connection failures. Confirm the protocol is http/protobuf and the endpoint is the complete intake URL, including https://. A partial or hand-built URL is rejected.
  • Traces arrive but logs do not. Some SDKs configure trace export only. Add a log exporter to the SDK setup.
  • Metrics are missing. Metrics need their own source; see Send metrics and traces separately.
For more, see Troubleshooting ingestion.

Next steps

Your intake URL also works with logging libraries and frameworks that have their own OpenTelemetry integration. These pages cover specific setups:

Further reading

Instrument your frontend

Correlate browser events with these backend records.

Search logs

Ask questions about the records you now send.