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
- Used for
- Observability
- 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_limitoverwrites 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
What Telegraf uses
What uses Telegraf
- MQTTis consumed by an input plugin ofTelegraf
- Amazon Timestreamreceives metrics fromTelegraf
- Arcreceives metrics, via an output plugin, fromTelegraf
- GreptimeDBtakes metrics via line protocol fromTelegraf
- InfluxDBreceives line protocol fromTelegraf
- QuestDBtakes metrics via line protocol fromTelegraf
- TDenginetakes line protocol, via taosAdapter, fromTelegraf
- TOMLis the configuration file format ofTelegraf
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.confChoosing 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.
| Fluentd | Logstash | Telegraf | OpenTelemetry Collector | Vector | |
|---|---|---|---|---|---|
| Written in | C and Ruby | Java and JRuby; downloads bundle a JDK | Go; one static binary | Go | Rust |
| Licence | Apache 2.0 | Apache 2.0, plus x-pack features under the Elastic License | MIT | Apache 2.0 | MPL 2.0 |
| Steward | CNCF (graduated 2019) | Elastic | InfluxData | CNCF (graduated 2026) | Datadog (bought its maker, Timber, in 2021) |
| Built around | Log events: tag, time, JSON record | Events of any shape, mostly logs | Metrics: measurement, tags, fields, time | Traces, metrics and logs in OTLP | Logs and metrics |
| Config | Own syntax: <source>, <filter>, <match> | Own DSL: input, filter, output | TOML | YAML | YAML, TOML or JSON |
| Plugins | 1,000+ external Ruby gems | 200+ Ruby gems | 400+ compiled in; others run as external programs via execd | Core and contrib distributions, or build your own with OCB | Built-in sources, transforms and sinks; VRL for custom logic |
| Buffer by default, and the durable option | Memory or file, chosen per output | Memory; persistent queue on disk is opt-in | Memory; disk buffer is experimental (since 1.32) | Memory; persistent queue with the file_storage extension | Memory (500 events per sink); disk buffer optional |
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, freeThe agent itself, with all 400+ plugins. You write and distribute its TOML files yourself.
Telegraf Controller, free version
freeA 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 yearController 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
- 2015
Initial commit in April; announced and v0.1.0 tagged in June
- 2016
Telegraf 1.0 tagged in September
- 2024
v1.32 adds an experimental disk-backed buffer
- 2026
Telegraf Enterprise, with Telegraf Controller, becomes generally available in June
- InfluxData blog: Announcing Telegraf, a metrics collector for InfluxDB (June 2015)
- GitHub: Telegraf initial commit by Paul Dix (April 2015)
- GitHub: Telegraf v0.1.0 tag (June 2015)
- GitHub: Telegraf 1.0.0 tag (September 2016)
- Telegraf changelog: v1.32.0 (September 2024)
- InfluxData: Telegraf Enterprise (FAQ: generally available June 2026)
Sources39 · facts checked 6 October 2026
- Telegraf README (300+ plugins, static binary, TOML, 1,200+ contributors)
- Telegraf docs (400+ plugins; input, processor, aggregator, output)
- Telegraf docs: Configuration (agent intervals, buffers, processors, aggregators)
- Telegraf docs: Metrics (InfluxDB data model, line protocol)
- Telegraf docs: External plugins (`execd`)
- Telegraf custom_builder (pick the plugins compiled in)
- Telegraf docs: Releases (quarterly minors, bug fixes every three weeks)
- Telegraf docs: Commands and flags (`--test`)
- Telegraf changelog: v1.32.0 adds an experimental disk buffer
- Telegraf LICENSE (MIT)
- Telegraf plugin: Prometheus output (`/metrics` endpoint)
- Telegraf plugin: Prometheus input
- Telegraf plugin: Kafka consumer input
- Telegraf plugin: Kafka output
- Telegraf plugin: PostgreSQL output (TimescaleDB samples)
- Telegraf plugin: OpenTelemetry input (traces, metrics, logs, profiles)
- Telegraf plugin: OpenTelemetry output (metrics)
- Telegraf plugin: MQTT consumer input
- Telegraf plugin: basicstats aggregator
- Telegraf parser: value
- InfluxData: Telegraf product page (OSS and Enterprise)
- InfluxData: Telegraf Enterprise (pricing FAQ, free Controller limits)
- Telegraf Controller docs
- Fluent Bit manual: Fluentd and Fluent Bit (Fluentd figures)
- Fluentd docs: Buffer plugins
- Fluentd docs: Config file syntax
- CNCF: Fluentd graduation announcement (April 2019)
- Logstash README (200+ plugins)
- Logstash LICENSE.txt (Apache 2.0 outside `x-pack`, Elastic License inside)
- Logstash docs: Persistent queues
- Logstash docs: Getting started (bundled JDK)
- OpenTelemetry docs: Collector distributions and OCB
- OpenTelemetry Collector: exporterhelper (sending queue and persistent storage)
- CNCF: OpenTelemetry graduation announcement (May 2026)
- Vector README (Rust; logs, metrics, traces “coming soon”)
- Vector docs: Data model
- Vector docs: Buffering model
- Vector docs: Configuration (YAML, TOML, JSON)
- Datadog press release: Datadog acquires Timber Technologies (February 2021)