Migrate from Honeycomb to TraceKit
Honeycomb embraces OpenTelemetry, which makes migration straightforward -- swap the OTLP endpoint and API key. Or switch to TraceKit's native SDK for live code monitoring and built-in PII scrubbing.
Start FreeSwap OTLP Endpoint and API Key
Honeycomb uses standard OpenTelemetry OTLP endpoints. The fastest migration path is to simply point your existing OTel instrumentation to TraceKit's endpoint and replace the Honeycomb API key.
| Category | Honeycomb | TraceKit | Notes |
|---|---|---|---|
| Endpoint | OTEL_EXPORTER_OTLP_ENDPOINT (api.honeycomb.io:443) | TRACEKIT_ENDPOINT | Point OTLP exporter to TraceKit endpoint |
| Authentication | HONEYCOMB_API_KEY (x-honeycomb-team header) | TRACEKIT_API_KEY | API key replaces Honeycomb team key |
| Dataset | HONEYCOMB_DATASET | TRACEKIT_SERVICE_NAME | Datasets map to service names in TraceKit |
Update OpenTelemetry Headers
Honeycomb uses custom OTLP headers for authentication and dataset routing. Replace these with TraceKit's headers or switch to the native SDK for additional features.
| Category | Honeycomb | TraceKit | Notes |
|---|---|---|---|
| Headers | OTEL_EXPORTER_OTLP_HEADERS=x-honeycomb-team=KEY | OTEL_EXPORTER_OTLP_HEADERS=x-tracekit-key=KEY | Replace Honeycomb auth header |
| Headers | x-honeycomb-dataset=my-service | OTEL_SERVICE_NAME=my-service | Service name via standard OTel resource |
| Environment | HONEYCOMB_API_ENDPOINT (EU region) | TRACEKIT_ENDPOINT (region-specific) | Use region-appropriate endpoint URL |
Optional: Switch to TraceKit Native SDK
While OTLP forwarding works, TraceKit's native SDK adds live code monitoring, automatic PII scrubbing, and simplified initialization. Consider replacing the OTel SDK with TraceKit's SDK for these benefits.
| Category | Honeycomb | TraceKit | Notes |
|---|---|---|---|
| Package | @opentelemetry/sdk-node + @honeycomb/opentelemetry | @tracekit/node-apm | Single package replaces OTel SDK + Honeycomb distro |
| Package | opentelemetry-sdk + honeycomb-beeline (Python) | tracekit-apm | Simpler installation, fewer dependencies |
| Features | Standard OTel features only | OTel + live debugging + PII scrubbing | Native SDK adds TraceKit-specific capabilities |
Migrate Derived Columns and SLOs
Honeycomb's derived columns and SLO definitions need to be recreated in TraceKit. TraceKit's built-in dashboards cover common latency and error rate views that replace many derived columns.
| Category | Honeycomb | TraceKit | Notes |
|---|---|---|---|
| Queries | Honeycomb Query Builder | TraceKit Dashboard filters | Filter by service, duration, attributes |
| SLOs | Honeycomb SLO definitions | TraceKit Alerts (threshold-based) | Set P95 latency and error rate thresholds |
| Boards | Honeycomb Boards (dashboards) | TraceKit Dashboard views | Built-in service overview, latency, errors |
Verify Traces and Deactivate Honeycomb
Confirm traces appear in TraceKit with correct service names and attributes. Once verified, remove the Honeycomb API key from your environment to stop sending duplicate data.
| Category | Honeycomb | TraceKit | Notes |
|---|---|---|---|
| Verification | Honeycomb > Home > Recent traces | TraceKit Dashboard > Traces | Verify trace data and latency distribution |
| Verification | Honeycomb > Service Map (BubbleUp) | TraceKit Service Map | Verify service dependency visualization |
| Cleanup | Remove HONEYCOMB_API_KEY from env | (keep TRACEKIT_API_KEY) | Stop sending to Honeycomb |
Code Examples
Before (Honeycomb)
import (
"github.com/honeycombio/otel-config-go/otelconfig"
"go.opentelemetry.io/otel"
)
func main() {
cleanup, _ := otelconfig.ConfigureOpenTelemetry(
otelconfig.WithServiceName("my-service"),
otelconfig.WithHeaders(map[string]string{
"x-honeycomb-team": "YOUR_HONEYCOMB_API_KEY",
}),
)
defer cleanup()
tracer := otel.Tracer("my-service")
ctx, span := tracer.Start(ctx, "process-order")
defer span.End()
}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(), "process-order")
defer span.End()
}Before (Honeycomb)
const { HoneycombSDK } = require('@honeycombio/opentelemetry-node');
const { trace } = require('@opentelemetry/api');
const sdk = new HoneycombSDK({
apiKey: 'YOUR_HONEYCOMB_API_KEY',
serviceName: 'my-service',
dataset: 'my-service',
});
sdk.start();
const tracer = trace.getTracer('my-service');
const span = tracer.startSpan('process-order');
// ... business logic
span.end();After (TraceKit)
const tracekit = require('@tracekit/node-apm');
tracekit.init({
apiKey: 'tk_your_api_key',
service: 'my-service',
environment: 'production',
});
const span = tracekit.startSpan('process-order');
// ... business logic
span.end();Before (Honeycomb)
# Using Honeycomb's OpenTelemetry distribution
import os
os.environ['OTEL_EXPORTER_OTLP_ENDPOINT'] = 'https://api.honeycomb.io'
os.environ['OTEL_EXPORTER_OTLP_HEADERS'] = 'x-honeycomb-team=YOUR_API_KEY'
os.environ['OTEL_SERVICE_NAME'] = 'my-service'
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
provider = TracerProvider()
trace.set_tracer_provider(provider)
tracer = trace.get_tracer('my-service')
with tracer.start_as_current_span('process-order'):
pass # business logicAfter (TraceKit)
import tracekit
tracekit.init(
api_key='tk_your_api_key',
service='my-service',
environment='production',
)
with tracekit.start_span('process-order') as span:
pass # business logicRelated Resources
TraceKit vs Honeycomb
High-cardinality observability pioneer with query-driven debugging. See how TraceKit simplifies the observability experience.
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 Honeycomb in 30 minutes.
Start Free Migration