DEV Community

Alex Spinov
Alex Spinov

Posted on

OpenTelemetry Has a Free Observability SDK You Probably Didn't Know About

OpenTelemetry is the #2 most active CNCF project (after Kubernetes). Yet most developers still cobble together custom logging, metrics, and traces with incompatible tools.

Here's what most people miss: OpenTelemetry gives you a vendor-neutral, production-grade observability SDK — completely free, open-source, and backed by every major cloud provider.

What OpenTelemetry Actually Gives You (Free)

1. Unified Traces, Metrics & Logs

import { trace } from "@opentelemetry/api";

const tracer = trace.getTracer("my-service");
const span = tracer.startSpan("process-order");
span.setAttribute("order.id", orderId);
span.setAttribute("order.total", 149.99);
// ... your business logic
span.end();
Enter fullscreen mode Exit fullscreen mode

One SDK. Three signals. Every backend.

2. Auto-Instrumentation (Zero Code Changes)

npm install @opentelemetry/auto-instrumentations-node
Enter fullscreen mode Exit fullscreen mode
const { NodeSDK } = require("@opentelemetry/sdk-node");
const { getNodeAutoInstrumentations } = require("@opentelemetry/auto-instrumentations-node");

const sdk = new NodeSDK({
  instrumentations: [getNodeAutoInstrumentations()],
});
sdk.start();
Enter fullscreen mode Exit fullscreen mode

HTTP requests, database queries, gRPC calls — all traced automatically.

3. Export Anywhere

Send data to Jaeger, Zipkin, Grafana Tempo, Datadog, New Relic, or any OTLP-compatible backend:

const { OTLPTraceExporter } = require("@opentelemetry/exporter-trace-otlp-http");

const exporter = new OTLPTraceExporter({
  url: "http://localhost:4318/v1/traces",
});
Enter fullscreen mode Exit fullscreen mode

4. Context Propagation Across Services

Traces flow automatically across microservices — no manual correlation IDs:

Service A (span) → HTTP → Service B (child span) → gRPC → Service C (child span)
Enter fullscreen mode Exit fullscreen mode

5. Collector Pipeline (Free)

The OpenTelemetry Collector acts as a proxy that receives, processes, and exports telemetry:

receivers:
  otlp:
    protocols:
      grpc:
      http:
processors:
  batch:
  memory_limiter:
    limit_mib: 512
exporters:
  jaeger:
    endpoint: jaeger:14250
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, memory_limiter]
      exporters: [jaeger]
Enter fullscreen mode Exit fullscreen mode

Why This Matters

Before OpenTelemetry After OpenTelemetry
Vendor lock-in Export to any backend
Separate SDKs for traces/metrics/logs One unified SDK
Manual instrumentation Auto-instrumentation
Proprietary formats Open standard (OTLP)
Costly rewrites to switch vendors Change one config line

Real-World Impact

A fintech startup I worked with was paying $3,000/month for Datadog. They switched to OpenTelemetry + Grafana stack (self-hosted) and cut observability costs to $200/month — while getting better trace coverage.

The key insight: OpenTelemetry separates instrumentation from backend. Instrument once, export anywhere, switch vendors in minutes.

Getting Started in 5 Minutes

npm install @opentelemetry/sdk-node \
  @opentelemetry/auto-instrumentations-node \
  @opentelemetry/exporter-trace-otlp-http
Enter fullscreen mode Exit fullscreen mode

Add 10 lines of setup code, and every HTTP request, database query, and external call in your Node.js app is automatically traced.


Need help setting up observability for your infrastructure? I build custom monitoring and data pipeline solutions. Reach out at spinov001@gmail.com or check out my web scraping tools on Apify.

Top comments (0)