Documentation
DocumentationDiscussions

Tracing from OpenTelemetry

OpenTelemetry SDKs exist for the following programming languages:

  • C++
  • C#/.NET
  • Erlang/Elixir
  • Go
  • Java
  • JavaScript
  • PHP
  • Python
  • Ruby
  • Rust
  • Swift

Consult the OpenTelemetry documentation for details on configuring these SDKs.

Seq OTLP Support

The OpenTelemetry protocol (OTLP) can be used to transfer traces from instrumented applications through to receivers like Seq.

Seq implements the OpenTelemetry Traces protocol natively, providing both gRPC and HTTP endpoints integrated directly into the Seq API.

This means that if you can reach Seq in a web browser, you already have everything you need to successfully ingest traces from any OpenTelemetry data source.

OTLP endpoints

OpenTelemetry defines three protocol flavors: gRPC, and HTTP with either protobuf or JSON encoding. Seq implements the first two of these; HTTP/JSON is not yet available.

HTTP/protobuf endpoint

The HTTP/protobuf protocol flavor is often a good starting point because it supports HTTP with and without TLS, and does not place any special requirements on other network infrastructure.

👍

Seq's HTTP/protobuf OTLP traces endpoint is /ingest/otlp/v1/traces.

Configure your OpenTelemetry trace source as follows.

ParameterValueExample
Protocolhttp/protobuf
Endpoint/ingest/otlp/v1/traces on any port served by Seqhttps://seq.example.com/ingest/otlp/v1/traces
HeadersSend your Seq API key in X-Seq-ApiKeyX-Seq-ApiKey: abcd1234

gRPC endpoint

Seq can ingest traces using the gRPC protocol flavor:

  • on endpoints served using HTTPS (TLS), and
  • where all intermediate network infrastructure fully supports HTTP 2.0.

On Windows, this requires Seq to be hosted under the Kestrel web server.

If you're unsure about any of these conditions, start with the HTTP/protobuf protocol flavor described above.

🚧

HTTPS is required

Seq cannot provide gRPC ingestion through unsecured HTTP connections.

To use Seq's gRPC ingestion endpoint, configure your OpenTelemetry trace source with:

ParameterValueExample
Protocolgrpc
EndpointThe HTTPS root URL identifying your Seq serverhttps://example.com
HeadersSend your Seq API key in X-Seq-ApiKeyX-Seq-ApiKey: abcd1234

Configuring the OpenTelemetry Collector

To export traces to Seq from the OpenTelemetry Collector, first add otlhttp to the exporters node in your collector config:

exporters:
  otlphttp:
    endpoint: https://seq.example.com/ingest/otlp

Note that the endpoint path should not include the /v1/logs suffix, as these are added automatically by the collector.

Next, add the exporter to the service.pipelines.traces node:

service:
  pipelines:
    traces:
      exporters: [otlphttp]

If logs don't start flowing, check the collector container's terminal output.