Skip to content

Carbonizer

The PowerDNS Platform Filter Carbonizer (pdns-carbonizer) scrapes Prometheus /metrics endpoints from other services, converts each sample to a dotted Carbon path, and forwards the result to one or more Graphite-compatible servers over the Carbon line protocol.

It exists so the services on a deployed box can stay Prometheus-native while a Graphite-based monitoring system on the other end keeps working. Adding, removing, or re-routing metric flows is then a Carbonizer config change rather than a change to every service.

What it does

  • Scrapes Prometheus endpoints on the configured scrape_interval, following the same scrape_configs shape as Prometheus (a strict subset of options).
  • Converts every successful scrape into Carbon lines using a per-job template that maps Prometheus labels onto a dotted path.
  • Forwards the converted lines to every destination listed in carbonizer.destinations over TCP.
  • Exposes a status page at / and Prometheus metrics about its own behaviour at /metrics.
  • Records scrapes to disk (optionally) so that real traffic can be replayed later — for backfills, demos, or capacity tests.
  • Streams scrapes live to debugging clients over TCP and over an HTTP /tap endpoint.

It runs alongside Prometheus or entirely without it. It does not need a Prometheus server to function.

Companion tools

The pdns-carbonizer-record subpackage ships two extra binaries:

  • pdns-carbonizer-record — reuses the Carbonizer config to scrape targets, but writes the raw scrapes to a single recording file (or stdout) instead of forwarding them as Carbon.
  • pdns-carbonizer-load — replays a recording into a PostgreSQL Prometheus storage backend, or converts it to a Prometheus text metrics file with rewritten job / instance labels and original timestamps.

Together they let you capture a window of real metric traffic and replay it elsewhere.

Who this documentation is for

This site is for operators diving into a running deployment — the service has already been installed by Ansible (or equivalent tooling) and you need to understand how it behaves and what each YAML knob does. There is no installation walkthrough here.

Next steps

  • Architecture: the scrape pipeline, the internal hub that fans scrapes out to senders and debug surfaces, the template language, and the on-disk recording format.
  • Configuration: full YAML reference, one section at a time.
  • Operations: systemd, CLI flags, HTTP endpoints, and the recorder / loader companion tools.
  • Metrics: the Prometheus metrics the Carbonizer exposes about itself, organised around the questions operators ask.