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.
Parameter | Value | Example |
---|---|---|
Protocol | http/protobuf | |
Endpoint | /ingest/otlp/v1/traces on any port served by Seq | https://seq.example.com/ingest/otlp/v1/traces |
Headers | Send your Seq API key in X-Seq-ApiKey | X-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:
Parameter | Value | Example |
---|---|---|
Protocol | grpc | |
Endpoint | The HTTPS root URL identifying your Seq server | https://example.com |
Headers | Send your Seq API key in X-Seq-ApiKey | X-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.
Updated 10 months ago