Load data into CrateDB using collectd and Telegraf

This usage guide shows how to configure and start collectd, Telegraf and CrateDB so that collectd sends system metrics to Telegraf, which stores it into CrateDB using the built-in CrateDB Output Plugin for Telegraf.

Prerequisites

Use Docker or Podman to run all components. This approach works consistently across Linux, macOS, and Windows.

Files

First, download and save all required files to your machine.

Services

Start services using Docker Compose or Podman Compose. If you use Podman, replace docker with podman (or enable the podman‑docker compatibility shim) and run podman compose up.

docker compose up

To send the collected data to Telegraf, collectd is configured to load its network plugin.

collectd configuration collectd-telegraf.conf
# collectd configuration for sending metrics to Telegraf.
# https://cratedb.com/docs/guide/integrate/collectd/

# https://collectd.org/documentation/manpages/collectd.conf.html#plugin-network

LoadPlugin network

<Plugin "network">
  Server "telegraf"
  # Optional: ServerPort 25826
  # Optional: SecurityLevel "sign" or "encrypt"
</Plugin>

Explore data

After the first scraping interval, metrics will show up in the designated table in CrateDB, ready to be inspected.

docker compose run --rm --no-TTY postgresql psql "postgresql://crate:crate@cratedb:5432/" -c "SELECT * FROM doc.metrics LIMIT 5;"
       hash_id        |         timestamp          | name |                 tags                 |                                                                                                                  fields                                                                                                                   |            day
----------------------+----------------------------+------+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------
 -6569628117176094941 | 2025-09-20 14:32:40.000+00 | cpu  | {"host":"2dfa19dd92c5","cpu":"cpu2"} | {"usage_nice":0,"usage_system":0.10121457489876418,"usage_irq":0,"usage_guest":0,"usage_user":0.2024291497975643,"usage_guest_nice":0,"usage_idle":99.59514170040524,"usage_steal":0,"usage_iowait":0,"usage_softirq":0.1012145748987844} | 2025-09-20 00:00:00.000+00
 -7809648236107165241 | 2025-09-20 14:32:50.000+00 | cpu  | {"host":"2dfa19dd92c5","cpu":"cpu1"} | {"usage_nice":0,"usage_system":0.2026342451874346,"usage_irq":0,"usage_guest":0,"usage_user":0.4052684903748692,"usage_guest_nice":0,"usage_idle":99.39209726444284,"usage_steal":0,"usage_iowait":0,"usage_softirq":0.0}                 | 2025-09-20 00:00:00.000+00
 -4885756654980088201 | 2025-09-20 14:32:50.000+00 | cpu  | {"host":"2dfa19dd92c5","cpu":"cpu4"} | {"usage_nice":0,"usage_system":0.3036437246963644,"usage_irq":0,"usage_guest":0,"usage_user":0.9109311740890573,"usage_guest_nice":0,"usage_idle":98.7854251012157,"usage_steal":0,"usage_iowait":0,"usage_softirq":0.0}                  | 2025-09-20 00:00:00.000+00
 -7517319202875331428 | 2025-09-20 14:32:50.000+00 | cpu  | {"host":"2dfa19dd92c5","cpu":"cpu5"} | {"usage_nice":0,"usage_system":0.3030303030302978,"usage_irq":0,"usage_guest":0,"usage_user":0.40404040404040903,"usage_guest_nice":0,"usage_idle":99.09090909090767,"usage_steal":0,"usage_iowait":0,"usage_softirq":0.0}                | 2025-09-20 00:00:00.000+00
  -743702115999591805 | 2025-09-20 14:32:50.000+00 | cpu  | {"host":"2dfa19dd92c5","cpu":"cpu7"} | {"usage_nice":0,"usage_system":0.20181634712409718,"usage_irq":0,"usage_guest":0,"usage_user":0.30272452068616373,"usage_guest_nice":0,"usage_idle":99.39455095862365,"usage_steal":0,"usage_iowait":0,"usage_softirq":0.0}               | 2025-09-20 00:00:00.000+00
(5 rows)