OpenTelemetry Integration
Send traces, metrics, and logs from any OpenTelemetry-instrumented application to Traceway — no vendor SDK required.
OpenTelemetry (opens in a new tab) (OTel) is the industry-standard, vendor-neutral framework for collecting telemetry. If your app already uses OTel, you can point it at Traceway with a few lines of config. If you're starting fresh, any OTel SDK will work.
How It Works
- Instrument your app with an OpenTelemetry SDK (or auto-instrumentation).
- Export via OTLP/HTTP — configure the SDK (or an OTel Collector) to send data to your Traceway instance.
- Traceway maps the data — spans become endpoints and traces, metrics appear on your dashboards, and logs are indexed and linked to their originating traces.
Supported Languages
Any language with an OTel SDK can export to Traceway. Here are the most common ones:
| Language | OTel SDK | Install |
|---|---|---|
| Java | opentelemetry-java (opens in a new tab) | Agent JAR (opens in a new tab) |
| Python | opentelemetry-python (opens in a new tab) | pip install opentelemetry-sdk |
| Python / Django | opentelemetry-python-contrib (opens in a new tab) | pip install opentelemetry-distro opentelemetry-exporter-otlp opentelemetry-instrumentation-django — see Django guide |
| C# / .NET | opentelemetry-dotnet (opens in a new tab) | dotnet add package OpenTelemetry |
| Go | opentelemetry-go (opens in a new tab) | go get go.opentelemetry.io/otel |
| Node.js | opentelemetry-js (opens in a new tab) | npm install @opentelemetry/sdk-node — see Node.js guide, NestJS guide, Hono guide, Next.js guide |
| PHP / Symfony | opentelemetry-php (opens in a new tab) | composer require open-telemetry/sdk — see Symfony guide |
| PHP / Laravel | opentelemetry-php (opens in a new tab) | composer require keepsuit/laravel-opentelemetry — see Laravel guide |
| Cloudflare Workers | workers-sdk (opens in a new tab) | Built-in — see Cloudflare guide |
Configuration
| Setting | Value |
|---|---|
| Endpoint | https://<your-instance>/api/otel |
| Traces path | /v1/traces |
| Metrics path | /v1/metrics |
| Logs path | /v1/logs |
| Auth header | Authorization: Bearer <project_token> |
| Protocol | OTLP/HTTP (Protobuf or JSON) |
| Compression | Gzip supported (Content-Encoding: gzip) |
| Max body size | 10 MB |
Quick Start: Direct SDK Export
The simplest setup — your app exports directly to Traceway with no extra infrastructure.
Here's a Node.js example:
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
const traceExporter = new OTLPTraceExporter({
url: "https://your-traceway-instance.com/api/otel/v1/traces",
headers: {
Authorization: "Bearer your-project-token",
},
});
const metricExporter = new OTLPMetricExporter({
url: "https://your-traceway-instance.com/api/otel/v1/metrics",
headers: {
Authorization: "Bearer your-project-token",
},
});The same pattern applies to any language — set the OTLP/HTTP endpoint and the Authorization header in your exporter config.
Quick Start: Spring Boot (Java Agent)
The OpenTelemetry Java agent (opens in a new tab) instruments Spring Boot applications with zero code changes. Download the agent JAR and pass it to the JVM:
java \
-javaagent:opentelemetry-javaagent.jar \
-Dotel.service.name=my-spring-app \
-Dotel.exporter.otlp.endpoint=https://<your-instance>/api/otel \
-Dotel.exporter.otlp.headers="Authorization=Bearer <project_token>" \
-Dotel.metrics.exporter=none \
-Dotel.logs.exporter=none \
-jar target/my-app.jarSetting OTEL_EXPORTER_OTLP_ENDPOINT to …/api/otel works too — the agent appends /v1/traces automatically, which matches Traceway's ingest path.
Exceptions thrown in your controllers are automatically captured as span events and appear in Issues, grouped by exception class across deployments regardless of differing error messages or line numbers.
Quick Start: OTel Collector
If you already run an OpenTelemetry Collector (opens in a new tab) or want a central pipeline that fans out to multiple backends, you can route data through it. This is optional — the direct SDK export above works without a Collector.
exporters:
otlphttp:
endpoint: "https://your-traceway-instance.com/api/otel"
headers:
Authorization: "Bearer your-project-token"
service:
pipelines:
traces:
exporters: [otlphttp]
metrics:
exporters: [otlphttp]
logs:
exporters: [otlphttp]Connection Page
Your Traceway dashboard includes a Connection page with a ready-made config snippet and your project token. Go to Connection in the sidebar to grab it.
