Migrate from Datadog to TraceKit
Replace the Datadog agent and dd-trace libraries with TraceKit's lightweight SDK. No per-host billing, no agent infrastructure, same distributed tracing visibility.
Start FreeInstall TraceKit SDK and Remove dd-trace
Replace the Datadog tracing library with the TraceKit SDK in your application. Remove dd-trace-go, dd-trace-js, or ddtrace depending on your language, then add the corresponding TraceKit SDK package.
| Category | Datadog | TraceKit | Notes |
|---|---|---|---|
| Package | dd-trace-go (gopkg.in/DataDog/dd-trace-go.v1) | github.com/tracekit/go-sdk | Go SDK replacement |
| Package | dd-trace (npm) | @tracekit/node-apm (npm) | Node.js SDK replacement |
| Package | ddtrace (pip) | tracekit-apm (pip) | Python SDK replacement |
Replace Datadog Agent Configuration
TraceKit does not require a separate agent process. Remove the Datadog Agent container or host package and point your SDK directly at the TraceKit ingestion endpoint.
| Category | Datadog | TraceKit | Notes |
|---|---|---|---|
| Agent | DD_AGENT_HOST | TRACEKIT_ENDPOINT | TraceKit uses direct HTTPS ingestion -- no local agent needed |
| Agent | DD_TRACE_AGENT_PORT (default 8126) | (not needed) | No agent port; SDK sends directly to cloud endpoint |
| Agent | DD_API_KEY | TRACEKIT_API_KEY | API key for authentication |
| Agent | DD_SITE (e.g., datadoghq.com) | TRACEKIT_ENDPOINT | Single endpoint replaces site selection |
Map Environment Variables
Translate Datadog unified service tagging environment variables to TraceKit equivalents. TraceKit uses a similar concept but with different variable names.
| Category | Datadog | TraceKit | Notes |
|---|---|---|---|
| Service Identity | DD_SERVICE | TRACEKIT_SERVICE_NAME | Service name for trace grouping |
| Service Identity | DD_ENV | TRACEKIT_ENVIRONMENT | Environment tag (production, staging) |
| Service Identity | DD_VERSION | TRACEKIT_VERSION | Application version for deployment tracking |
| Sampling | DD_TRACE_SAMPLE_RATE (0.0-1.0) | TRACEKIT_SAMPLE_RATE (0.0-1.0) | Same numeric range, direct mapping |
| Tags | DD_TAGS (key:value,key:value) | TRACEKIT_TAGS (key=value,key=value) | Note the separator change from colon to equals |
Migrate Custom Instrumentation
Replace Datadog's tracer API calls with TraceKit SDK equivalents. The core concepts (spans, tags, error recording) map directly, though method names differ.
| Category | Datadog | TraceKit | Notes |
|---|---|---|---|
| Initialization | tracer.Start(tracer.WithServiceName(...)) | tracekit.Init(apiKey, tracekit.WithService(...)) | Init accepts API key as first argument |
| Spans | tracer.StartSpan(operationName) | tracekit.StartSpan(ctx, operationName) | TraceKit spans require context for parent linking |
| Attributes | span.SetTag(key, value) | span.SetAttribute(key, value) | Follows OpenTelemetry attribute naming |
| Errors | span.SetTag(ext.Error, err) | span.RecordError(err) | Dedicated error recording method |
| Shutdown | tracer.Stop() | tracekit.Shutdown(ctx) | Shutdown takes context for graceful flush |
Verify Traces in Dashboard
Start your application, generate some traffic, and confirm that traces appear in the TraceKit dashboard. Check service map, trace waterfall, and span attributes to verify data fidelity.
| Category | Datadog | TraceKit | Notes |
|---|---|---|---|
| Verification | Datadog APM > Traces | TraceKit Dashboard > Traces | Check trace waterfall view |
| Verification | Datadog Service Map | TraceKit Service Map | Verify service dependencies appear |
| Verification | Datadog Monitors | TraceKit Alerts | Recreate key alerts in TraceKit |
Code Examples
Before (Datadog)
import (
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext"
)
func main() {
tracer.Start(
tracer.WithServiceName("my-service"),
tracer.WithEnv("production"),
)
defer tracer.Stop()
span := tracer.StartSpan("web.request")
span.SetTag(ext.HTTPMethod, "GET")
span.SetTag(ext.HTTPStatusCode, 200)
span.Finish()
}After (TraceKit)
import "github.com/tracekit/go-sdk/tracekit"
func main() {
tracekit.Init("tk_your_api_key",
tracekit.WithService("my-service"),
tracekit.WithEnvironment("production"),
)
defer tracekit.Shutdown(context.Background())
ctx, span := tracekit.StartSpan(context.Background(), "web.request")
span.SetAttribute("http.method", "GET")
span.SetAttribute("http.status_code", 200)
span.End()
}Before (Datadog)
const tracer = require('dd-trace').init({
service: 'my-service',
env: 'production',
});
const span = tracer.startSpan('web.request');
span.setTag('http.method', 'GET');
span.setTag('http.status_code', 200);
span.finish();After (TraceKit)
const tracekit = require('@tracekit/node-apm');
tracekit.init({
apiKey: 'tk_your_api_key',
service: 'my-service',
environment: 'production',
});
const span = tracekit.startSpan('web.request');
span.setAttribute('http.method', 'GET');
span.setAttribute('http.status_code', 200);
span.end();Before (Datadog)
from ddtrace import tracer
tracer.configure(
hostname='localhost',
port=8126,
)
with tracer.trace('web.request', service='my-service') as span:
span.set_tag('http.method', 'GET')
span.set_tag('http.status_code', 200)After (TraceKit)
import tracekit
tracekit.init(
api_key='tk_your_api_key',
service='my-service',
environment='production',
)
with tracekit.start_span('web.request') as span:
span.set_attribute('http.method', 'GET')
span.set_attribute('http.status_code', 200)Related Resources
TraceKit vs Datadog
Enterprise APM at enterprise prices. See how TraceKit delivers full-stack observability at a fraction of the cost.
Express Observability
Express middleware is simple until you have 15 layers and a request takes 3 seconds. TraceKit traces every middleware hop, maintains context across async/await boundaries, and helps you find memory leaks before your users do.
Go Distributed Tracing Guide
Learn distributed tracing patterns and best practices for Go
APM Implementation Checklist
Step-by-step APM implementation checklist covering SDK installation, instrumentation, alerting, and production rollout with OpenTelemetry best practices.
OTel Config Generator
Generate OpenTelemetry Collector configurations for your stack
Ready to migrate?
Start your free TraceKit account and follow this guide to migrate from Datadog in 1-2 hours.
Start Free Migration