OpenTelemetry
Overview

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

  1. Instrument your app with an OpenTelemetry SDK (or auto-instrumentation).
  2. Export via OTLP/HTTP — configure the SDK (or an OTel Collector) to send data to your Traceway instance.
  3. 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:

LanguageOTel SDKInstall
Javaopentelemetry-java (opens in a new tab)Agent JAR (opens in a new tab)
Pythonopentelemetry-python (opens in a new tab)pip install opentelemetry-sdk
Python / Djangoopentelemetry-python-contrib (opens in a new tab)pip install opentelemetry-distro opentelemetry-exporter-otlp opentelemetry-instrumentation-django — see Django guide
C# / .NETopentelemetry-dotnet (opens in a new tab)dotnet add package OpenTelemetry
Goopentelemetry-go (opens in a new tab)go get go.opentelemetry.io/otel
Node.jsopentelemetry-js (opens in a new tab)npm install @opentelemetry/sdk-node — see Node.js guide, NestJS guide, Hono guide, Next.js guide
PHP / Symfonyopentelemetry-php (opens in a new tab)composer require open-telemetry/sdk — see Symfony guide
PHP / Laravelopentelemetry-php (opens in a new tab)composer require keepsuit/laravel-opentelemetry — see Laravel guide
Cloudflare Workersworkers-sdk (opens in a new tab)Built-in — see Cloudflare guide

Configuration

SettingValue
Endpointhttps://<your-instance>/api/otel
Traces path/v1/traces
Metrics path/v1/metrics
Logs path/v1/logs
Auth headerAuthorization: Bearer <project_token>
ProtocolOTLP/HTTP (Protobuf or JSON)
CompressionGzip supported (Content-Encoding: gzip)
Max body size10 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.jar

Setting 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.

Connection page

Next Steps

  • Traces — how OTel spans map to Traceway concepts
  • Metrics — supported metric types and histogram handling
  • Logs — export OTel logs and link them to your traces