Moving from Datadog

Leave Datadog through OpenTelemetry.

ZipLogger does not speak the Datadog Agent's protocol. It speaks OpenTelemetry: logs, traces and metrics over OTLP/HTTP, with no collector required for your applications' own telemetry. For Kubernetes clusters, ZipLogger's Helm chart takes over the cluster-monitoring part of the Agent's job. The route depends on what you run today, and Datadog can stay in place until you are sure.

Start free OpenTelemetry setup

Logs, traces and metrics over OTLP · Datadog alerts into ZipLogger on-call · Run both while you move

Three routes, depending on what you run now

Already on OpenTelemetry

Your services use OpenTelemetry SDKs and export to the Datadog Agent or a Collector. Change the exporter's endpoint and header and you are done: /v1/logs, /v1/traces and /v1/metrics are the standard paths.

On dd-trace

Replace dd-trace with OpenTelemetry instrumentation; every major language has auto-instrumentation that needs little or no code. To buy time, an OpenTelemetry Collector with its datadog receiver accepts dd-trace traffic as it is and forwards it to ZipLogger.

Logs through the Agent

Tail the same files with Fluent Bit, Vector or the Collector's filelog receiver and ship them to ZipLogger's log endpoint. Shipper setup →

Where each piece goes

In DatadogIn ZipLogger
APM tracesOTLP traces → APM (services, endpoints, dependencies, an observed service map, release comparison and regression detection) and the Traces page waterfall. Endpoints are named from each span's HTTP method and route, so dd-trace spans converted by the Collector may group differently than they did in Datadog
LogsFluent Bit, Vector or OTLP logs → Search, with log patterns and the commit that introduced an error
Log pipelines (parsing, metrics from logs)Log pipelines: parse rules (patterns, JSON, key=value) and metric rules that count logs or read a numeric field, applied as logs arrive. Not a full Grok library, and stored logs are not reparsed
Custom metrics (DogStatsD)The Collector's statsd receiver, which reads DogStatsD tags → /v1/metrics
Host and container metricsThe Collector's hostmetrics receiver → /v1/metrics, charted on the Metrics page and the Metric dashboard widget
Kubernetes (cluster state, events, container logs, node and pod usage)The ZipLogger Helm chart → the Kubernetes page, with detected problems that open incidents. Setup
MonitorsZipLogger alert rules, including metric monitors (threshold, per-group incidents) and anomaly monitors (daily or weekly seasonality). While you move, Datadog monitors can open ZipLogger incidents through a webhook, so they page through ZipLogger on-call
Service level objectivesAPM SLOs on availability or latency per service or endpoint, with multi-window burn-rate alerts. SLOs on arbitrary metrics or monitors are not available
DashboardsRebuilt as ZipLogger dashboards, or in Grafana pointed at ZipLogger's Grafana-compatible data sources
SyntheticsBrowser automations and health checks
On-call (if you pair Datadog with a pager)Schedules, escalation and SMS and voice paging, built in
OpenTelemetry SDKs

Three environment variables

Every OpenTelemetry SDK reads the same variables. The endpoint is the origin only; the exporter adds /v1/traces, /v1/metrics and /v1/logs itself.

Set metrics to delta temporality. ZipLogger stores a value per interval, and while it converts cumulative counters itself, delta is exact across restarts on both sides.

Histograms arrive as .count, .sum, .avg, .p95, .p99 and .max series, so http.server.request.duration is charted as http.server.request.duration.p95. Values keep the instrument's unit.

OTEL_EXPORTER_OTLP_ENDPOINT=https://app.ziplogger.ai
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_HEADERS=X-Api-Key=zk_...
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta
OTEL_SERVICE_NAME=checkout-api
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production
OpenTelemetry Collector

Keep dd-trace and DogStatsD while you migrate

Run an OpenTelemetry Collector (the contrib distribution) where the Datadog Agent runs today, and point DD_AGENT_HOST at it. The datadog receiver takes dd-trace spans on port 8126, the statsd receiver takes DogStatsD on 8125, and both leave as OTLP.

To run both platforms side by side, add the Collector's Datadog exporter to the same pipelines. Every signal then goes to both until you turn one off.

Check the stability level of each Collector component in its own documentation before you depend on it; some of the Datadog-compatible receivers are young.

receivers:
  datadog:
    endpoint: 0.0.0.0:8126    # dd-trace
  statsd:
    endpoint: 0.0.0.0:8125    # DogStatsD
  otlp:
    protocols: { grpc: {}, http: {} }

processors:
  batch: {}

exporters:
  otlphttp/ziplogger:
    endpoint: https://app.ziplogger.ai
    headers:
      X-Api-Key: zk_...
    compression: gzip

service:
  pipelines:
    traces:
      receivers: [datadog, otlp]
      processors: [batch]
      exporters: [otlphttp/ziplogger]
    metrics:
      receivers: [statsd, otlp]
      processors: [batch]
      exporters: [otlphttp/ziplogger]
    logs:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp/ziplogger]

Which tool is right for you

Datadog is a much larger product than ZipLogger, and for some teams that depth is the point. The honest split:

Choose ZipLogger when

  • You use Datadog mainly for logs, APM and a set of custom metrics, and the bill has grown faster than the team
  • You want logs, traces, metrics, errors, product events and on-call in one platform with one price, without per-host pricing
  • You want an error to lead to the commit that introduced it, not only to a dashboard
  • You are adopting OpenTelemetry anyway and would rather not be tied to one vendor's agent

Stay with Datadog when

  • You rely on its integration catalogue: hundreds of Agent integrations, most with dashboards ready-made
  • You need infrastructure depth: host and container maps, network monitoring, or database monitoring beyond PostgreSQL and MySQL
  • You use its security or mobile products, or RUM beyond Web Vitals, page loads and API calls
  • A platform team runs it well and the cost is not a problem

They will out-depth us on infrastructure metrics and integration count. What ZipLogger offers is the same core signals, plus the commit and the pager, at a price a small team can approve.

Questions

Migrate from Datadog, answered plainly

Can ZipLogger receive data from the Datadog Agent?

Not directly. ZipLogger accepts OpenTelemetry (OTLP over HTTP) for logs, traces and metrics, plus its own SDKs and log shippers. To keep dd-trace or DogStatsD while you migrate, run an OpenTelemetry Collector with its datadog and statsd receivers and export to ZipLogger.

Does ZipLogger accept OpenTelemetry metrics?

Yes, on /v1/metrics, protobuf or JSON. Gauges and counters are stored as values; histograms and summaries become count, sum, average, percentile and maximum series. Cumulative counters are converted to per-interval increases, but delta temporality is recommended.

Do I have to rewrite my instrumentation?

If you already use OpenTelemetry, no: change the exporter endpoint and header. If you use dd-trace, the long-term route is OpenTelemetry instrumentation, which is mostly configuration in every major language. A Collector with the datadog receiver lets dd-trace keep working in the meantime.

Can I keep Datadog monitors while I migrate?

Yes. Add ZipLogger as a webhook in Datadog and monitor alerts open incidents in ZipLogger, with the same on-call schedules, escalation and paging as ZipLogger's own rules. Move the monitors over as ZipLogger alert rules when you are ready.

Will my Datadog dashboards move over?

No. Dashboards are rebuilt, either as ZipLogger dashboards or in Grafana pointed at ZipLogger's Grafana-compatible data sources. Metric names follow OpenTelemetry once you move, so most panels change anyway.