Cloud Parts

Telegraf

InfluxData’s plugin-driven Go agent that collects metrics from systems, services and devices and writes them to InfluxDB, Prometheus, Kafka and hundreds of other targets.

What it is
Metrics
Type
Open source
Made by
InfluxData Inc.
License
MIT (agent); Telegraf Enterprise and the paid tier of Telegraf Controller are commercial
Facts checked
6 October 2026

What it is

Telegraf is a single Go binary that runs as an agent on a server, a container host or an industrial gateway. A TOML file lists plugins of four kinds. On every interval, for example every 10 seconds, the agent asks each input for data: CPU and disk counters, a Prometheus endpoint, SNMP, Modbus or OPC UA devices, or messages arriving from MQTT and Kafka. Processors rename and transform what comes back, aggregators compute new values such as means and maxima over a time window, and on every flush_interval the outputs write batches to their destinations. Inside, everything is a metric in InfluxDB’s model: a measurement name, string tags, typed fields and a timestamp. Each output keeps unsent metrics in memory, up to metric_buffer_limit; when that fills, the oldest are overwritten.

Telegraf is MIT-licensed and made by InfluxData, the company behind InfluxDB, but it does not need InfluxDB. More than 400 plugins are compiled into the official binary; a custom build can include only the ones you use, and plugins in other languages run as separate programs through execd. InfluxData sells Telegraf Enterprise: Telegraf Controller, a self-hosted UI and API that manages configurations and watches the health of agent fleets, plus support. Controller’s free version handles up to 20 configurations and 100 reporting agents; paid packages start at $18,000 a year and scale with the number of agents (list price, checked 2026-10-06).

Why teams pick it

  • One static binary with no external dependencies, easy to put on servers, containers and gateways
  • Inputs for network and industrial gear as well as hosts: SNMP, gNMI, Modbus, OPC UA, Windows performance counters, SMART and Nvidia GPUs
  • Not tied to InfluxDB: outputs include Prometheus, Kafka, PostgreSQL and TimescaleDB, OpenTelemetry and plain files
  • Aggregators and processors cut volume at the edge, for example sending a one-minute mean instead of every reading
  • Predictable releases: four minor versions a year, with bug-fix releases every three weeks in between

Watch out for

  • Built around metrics: everything becomes a measurement with tags and fields, so logs and traces fit less naturally, and its OpenTelemetry output sends metrics only
  • The default buffer is in memory: a long outage that fills metric_buffer_limit overwrites the oldest metrics, and a restart loses what is queued. The disk buffer added in 1.32 is still experimental
  • Plugins are compiled in: the official binary carries all of them, and adding a Go plugin means building your own binary (or running it outside through execd)
  • Central configuration and fleet health beyond 20 configurations and 100 agents is a paid InfluxData product

Alternatives

What all metrics have in common →

How it fits with other technologies

Collect host metrics and MQTT sensor readings; serve them to Prometheus and store them in PostgreSQL · bash

cat > telegraf.conf <<'EOF'
[agent]
  interval = "10s"          # collect every 10 seconds
  flush_interval = "10s"    # write to outputs every 10 seconds

[[inputs.cpu]]
  percpu = false
[[inputs.mem]]
[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "overlay"]

# sensors publish plain numbers to sensors/<room>/temperature
[[inputs.mqtt_consumer]]
  servers = ["tcp://broker:1883"]
  topics = ["sensors/+/temperature"]
  data_format = "value"
  data_type = "float"

# one mean, min and max per minute instead of every reading
[[aggregators.basicstats]]
  namepass = ["mqtt_consumer"]
  period = "60s"
  drop_original = true
  stats = ["mean", "min", "max"]

[[outputs.prometheus_client]]
  listen = ":9273"          # Prometheus scrapes /metrics here

[[outputs.postgresql]]
  connection = "postgres://telegraf@tsdb:5432/metrics?sslmode=disable"
EOF

telegraf --config telegraf.conf --test   # run the inputs once and print the metrics
telegraf --config telegraf.conf

Choosing a telemetry agent#

All five read from many sources, change data in flight and write it to many destinations. They differ in runtime, in the shape of data they were built around, and in who steers them.

FluentdLogstashTelegrafOpenTelemetry CollectorVector
Written inC and RubyJava and JRuby; downloads bundle a JDKGo; one static binaryGoRust
LicenceApache 2.0Apache 2.0, plus x-pack features under the Elastic LicenseMITApache 2.0MPL 2.0
StewardCNCF (graduated 2019)ElasticInfluxDataCNCF (graduated 2026)Datadog (bought its maker, Timber, in 2021)
Built aroundLog events: tag, time, JSON recordEvents of any shape, mostly logsMetrics: measurement, tags, fields, timeTraces, metrics and logs in OTLPLogs and metrics
ConfigOwn syntax: <source>, <filter>, <match>Own DSL: input, filter, outputTOMLYAMLYAML, TOML or JSON
Plugins1,000+ external Ruby gems200+ Ruby gems400+ compiled in; others run as external programs via execdCore and contrib distributions, or build your own with OCBBuilt-in sources, transforms and sinks; VRL for custom logic
Buffer by default, and the durable optionMemory or file, chosen per outputMemory; persistent queue on disk is opt-inMemory; disk buffer is experimental (since 1.32)Memory; persistent queue with the file_storage extensionMemory (500 events per sink); disk buffer optional
  • Plugin counts are the projects’ own: Fluent Bit’s comparison page for Fluentd, the Logstash README, and InfluxData’s Telegraf docs (the Telegraf README still says 300+).
  • Vector’s README lists traces as “coming soon”; its data model has log and metric events only.

Telegraf, Controller and Enterprise#

The agent is the same everywhere. What InfluxData sells is a management layer on top of it. Prices are list prices checked on 2026-10-06.

Telegraf

MIT, free

The agent itself, with all 400+ plugins. You write and distribute its TOML files yourself.

Telegraf Controller, free version

free

A self-hosted UI and API with a visual config builder, role-based access and fleet health monitoring. Up to 20 configurations and 100 reporting agents.

Telegraf Enterprise

from $18,000 a year

Controller for larger fleets, with features such as high-availability clustering and audit logging, plus enterprise support. Licensed annually and priced by the number of agents under management. Generally available since June 2026.

See it in a real stack

No architecture uses Telegraf yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2015–2026

In 2015 there was no shortage of agents that could feed InfluxDB: many users ran collectd or Diamond. But those tools were not designed around InfluxDB’s data model of measurements and tags, and InfluxData wanted a collector it could keep extending, perhaps with StatsD-style aggregation or alerting at the point of collection. Evan Phoenix and his company Vektra wrote the first version. Paul Dix made the repository’s initial commit in April 2015, and InfluxData announced Telegraf that June.

It was written in Go, with the code organised so that anyone could add a plugin for a new service or API. At launch it collected system metrics plus Docker, Redis, MySQL and PostgreSQL. Telegraf was the T of what InfluxData called the TICK stack, named after a tick, a single point in a financial time series.

Community plugins turned it into a general-purpose agent: more than 1,200 people have contributed, and its outputs reach far beyond InfluxDB. Version 1.0 was tagged in September 2016. In 2026 InfluxData added a paid fleet-management layer, Telegraf Enterprise, while the agent stays MIT.

Why it’s built this way

Designed around InfluxDB’s data model
Measurements, tags, fields and a timestamp map one-to-one onto InfluxDB line protocol, so metrics arrive in InfluxDB without translation, while other outputs serialise them into their own formats.
Go, compiled into one static binary
A binary with no external dependencies is easy to deploy anywhere, and Go code organised around plugins made it simple for outside contributors to add new inputs and outputs.
Plugins inside the binary, external ones through execd
Built-in plugins must be Go. External programs can be written in any language and carry large or licensed dependencies that would otherwise bloat Telegraf for everyone.

Timeline

  1. 2015

    Initial commit in April; announced and v0.1.0 tagged in June

  2. 2016

    Telegraf 1.0 tagged in September

  3. 2024

    v1.32 adds an experimental disk-backed buffer

  4. 2026

    Telegraf Enterprise, with Telegraf Controller, becomes generally available in June

Sources39 · facts checked 6 October 2026

Improve this page on GitHub