OpenTelemetry Instrumentation with Kopai
Guide for instrumenting applications with OpenTelemetry SDK and validating telemetry locally using Kopai.
Quick Reference
# Start backend
npx @kopai/app start
# Configure app
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_SERVICE_NAME=my-service
# Validate telemetry
npx @kopai/cli traces search --service my-service --json
npx @kopai/cli logs search --service my-service --json
npx @kopai/cli metrics discover --json
Workflow
- Start backend —
npx @kopai/app start - Set env vars —
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318andOTEL_SERVICE_NAME=<name> - Instrument app — install SDK + auto-instrumentation for your language (see rules below)
- Validate —
npx @kopai/cli traces search --service <name> --json. If empty: check endpoint/port, verify app is running and generating traffic, wait 10-30s and retry - Troubleshoot — if still no data, check rules in section 4 below
Quick Example (Node.js)
npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node @opentelemetry/api
Create instrumentation.mjs:
import { NodeSDK } from "@opentelemetry/sdk-node";
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()] });
sdk.start();
Run: node --import ./instrumentation.mjs server.mjs
Rules
1. Setup (CRITICAL)
setup-backend- Start Kopai Backendsetup-environment- Configure Environment
2. Language SDKs (HIGH)
lang-nodejs- Node.js Instrumentationlang-nextjs- Next.js Instrumentationlang-python- Python Instrumentationlang-go- Go Instrumentationlang-java- Java Instrumentationlang-dotnet- .NET Instrumentationlang-ruby- Ruby Instrumentationlang-php- PHP Instrumentationlang-rust- Rust Instrumentationlang-erlang- Erlang/Elixir Instrumentationlang-cpp- C++ Instrumentation
3. Validation (HIGH)
validate-traces- Validate Tracesvalidate-logs- Validate Logsvalidate-metrics- Validate Metrics
4. Troubleshooting (MEDIUM)
troubleshoot-no-data- No Data Receivedtroubleshoot-missing-spans- Missing Spanstroubleshoot-missing-attrs- Missing Attributestroubleshoot-wrong-port- Wrong Port
Read rules/<rule-name>.md for details.
References
- cli-reference - Kopai CLI command reference
- otel-docs - OpenTelemetry documentation links
- nextjs-examples - Next.js instrumentation examples