Node framework

NestJS observability, live in minutes.

Traces, logs and exceptions for NestJS microservices over standard OpenTelemetry.

Three steps

Standard OpenTelemetry, pointed at us.

No proprietary agent, no vendor SDK required on the server. If your service already exports OTLP, step two is the whole integration.

  1. STEP 1
    Create a project

    Sign up, create a project, and copy its ingest token. Nothing to install on our side.

  2. STEP 2
    Point your exporter at us

    Set OTEL_EXPORTER_OTLP_ENDPOINT to https://ingest.tracepath.dev/api/otel and OTEL_EXPORTER_OTLP_HEADERS to "Authorization=Bearer <token>". If you already emit OpenTelemetry, that is the whole integration.

  3. STEP 3
    Or wire the SDK explicitly

    Prefer code over environment variables? Configure the OTLP exporters yourself, exactly as in the sample below. Standard OpenTelemetry packages only — nothing TracePath-specific.

Real code

A working instrumentation.ts.

Standard OpenTelemetry packages only — this is the actual shape of a NestJS integration against TracePath.

import { NodeSDK } from "@opentelemetry/sdk-node";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
import { Resource } from "@opentelemetry/resources";

const tracepathUrl = process.env.TRACEPATH_URL || "https://ingest.tracepath.dev";
const tracepathToken = process.env.TRACEPATH_TOKEN;

const sdk = new NodeSDK({
  resource: new Resource({
    "service.name": "my-nestjs-service",
  }),
  traceExporter: new OTLPTraceExporter({
    url: `${tracepathUrl}/api/otel/v1/traces`,
    headers: { Authorization: `Bearer ${tracepathToken}` },
  }),
  metricReader: new PeriodicExportingMetricReader({
    exporter: new OTLPMetricExporter({
      url: `${tracepathUrl}/api/otel/v1/metrics`,
      headers: { Authorization: `Bearer ${tracepathToken}` },
    }),
    exportIntervalMillis: 10_000,
  }),
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start();

Source: examples/nestjs-otel/instrumentation.ts in our examples.

What you get

Built for NestJS.

Request traces with HTTP auto-instrumentation

Custom instrumentation via decorators and interceptors

Logs correlated to traces through the OpenTelemetry log SDK

Exception capture with full stack context

Other frameworks

Instrument NestJS today.

Free plan, no credit card. First event in under five minutes.