Telegraf 介绍与选型指南
介绍 InfluxData 开源采集代理 Telegraf v1.40.2 的定位、四类插件管道架构、功能特性与适用边界,并同 collectd、node_exporter、Vector 做量化对比给出选型结论,版本与社区数据均标注官方来源与查询日期。
Telegraf 介绍与选型指南
> 目标:面向正在为服务器与基础设施挑选指标采集方案的工程师,系统介绍 InfluxData 出品的开源采集代理 Telegraf(本文基于最新稳定版 v1.40.2)的定位、插件管道架构、功能特性、适用场景与已知限制,并与 collectd、node_exporter、Vector 三款同类产品做横向对比给出选型结论;本文为认知篇,版本与社区数据均溯源官方仓库并标注查询日期(2026-10-18),安装与插件实测分别在《Telegraf 安装部署指南》《Telegraf 1.40 插件配置详解》完成。
一、环境信息(信息基准)
本文为 A1 认知篇:不做本地安装实测,全部版本与社区论断以官方来源为准并逐条标注查询日期;涉及本地环境的部分仅引用实测环境的启动日志作为规模佐证(实测过程见《Telegraf 安装部署指南》)。
1.1 版本依据
- 官方发布仓库:GitHub
influxdata/telegraf(https://github.com/influxdata/telegraf)。 - 最新稳定版:v1.40.2(实查 GitHub Releases 订阅源
releases.atom,2026-10-18 查询,序列为 v1.40.2 → v1.40.1 → v1.40.0 → v1.39.3,可见 1.40 线为当前维护线、按月滚动发版)。 - 本文实测佐证环境中的版本:Telegraf 1.40.2(
telegraf --version实测回显Telegraf 1.40.2 (git: HEAD@2e0a2ed1),Ubuntu 22.04 LTS,x86_64,2026-10-18)。
1.2 官方来源清单
| 来源 | 地址 | 用途 | 查询日期 |
|---|---|---|---|
| GitHub 仓库主页 | https://github.com/influxdata/telegraf | 定位描述、License(MIT)、贡献者规模 | 2026-10-18 |
| Releases 发布页 | https://github.com/influxdata/telegraf/releases | 最新版本 v1.40.2 与版本节奏 | 2026-10-18 |
| 官方文档站 | https://docs.influxdata.com/telegraf/ | 配置、插件参考 | 2026-10-18 |
| 快速上手文档 | https://github.com/influxdata/telegraf/blob/master/docs/QUICK_START.md | 最小可用配置示例 | 2026-10-18 |
| 安装指南 | https://github.com/influxdata/telegraf/blob/master/docs/INSTALL_GUIDE.md | 各平台安装方式 | 2026-10-18 |
1.3 插件规模实测佐证
以下为本环境 Telegraf 1.40.2 实际启动日志(照录,采集于 2026-10-18),可见当前版本编译内建的插件规模:
2026-10-18T03:11:14Z I! Starting Telegraf 1.40.2 brought to you by InfluxData the makers of InfluxDB
2026-10-18T03:11:14Z I! Available plugins: 244 inputs, 9 aggregators, 35 processors, 26 parsers, 68 outputs, 8 secret stores
💡 说明:官方 README 口径为「over 300 plugins」,与上列六类合计(244+9+35+26+68+8=390)一致——官方将 parser、serializer、secret store 等扩展类型一并计入插件总量;本文对比表格中的插件数按此口径注明。
二、软件概述
Telegraf 是 InfluxData 公司开源的插件式数据采集代理(agent),官方 README 对它的定义是:"an agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data"(一个用于采集、处理、聚合并写出指标、日志及其他任意数据的代理,2026-10-18 查询)。它运行在你想要监控的每台机器上,以固定周期从各类输入源采集指标,经处理与聚合后推送到 InfluxDB、Prometheus、Kafka、Graphite 等任意后端。
核心特征(据官方 README,2026-10-18 查询):
- 插件体系庞大:300+ 插件覆盖系统监控、云服务、消息队列、工业协议等场景(实测编译内建规模见 1.3 节);
- 无外部依赖:Go 语言编写,编译为单一静态二进制,部署不依赖运行时与第三方库;
- TOML 配置:全部插件与行为集中在一个 TOML 文件声明,结构清晰、可注释、可版本化;
- 社区驱动:1200+ 贡献者,大量插件由社区贡献;
- License 宽松:MIT 许可(仓库 LICENSE 文件实查),商用友好。
💡 技术拓展:监控数据采集存在「拉(pull)」与「推(push)」两种模型,选型前必须分清——
模型 原理 代表 优点 缺点 拉模式 pull 监控服务端定期抓取目标暴露的 HTTP 指标端点 Prometheus + node_exporter 服务端掌握采集节奏、可自发现目标 目标必须暴露端点,跨网络边界需打通方向 推模式 push 采集端主动把数据写到后端 statsd、Telegraf 默认形态 目标可在 NAT 后、防火墙只需单向外发 后端压力大时采集端无感知,需限流 服务型接收 push 采集代理自身开端口接收应用上报再转发 Telegraf(statsd/socket_listener/http_listener)、Vector(sources) 应用侧零 SDK 依赖,代理统一转发 代理是可用性单点 Telegraf 属于「采集 + 转发」的 agent 管道模型:对下既可主动拉(inputs.prometheus 抓取其他端点、inputs.http 拉取 API),也可被动收(statsd、socket_listener 接收应用打点);对上以推为主(68 个 outputs 全部为推送),同时又能以 outputs.prometheus_client 暴露端点被 Prometheus 拉。两种模型在 Telegraf 内均可组合。
三、核心架构
3.1 插件管道模型
Telegraf 的一切能力由四类核心插件加上三类辅助扩展组成,数据在单个进程内沿管道单向流动(据官方 README 与 docs/CONFIGURATION.md,2026-10-18):
┌─────────┐ ┌────────────┐ ┌──────────────┐ ┌──────────┐
│ inputs │ → │ processors │ → │ aggregators │ → │ outputs │
│ 244 个 │ │ 35 个 │ │ 9 个 │ │ 68 个 │
│ 采集指标 │ │ 过滤/改写/ │ │ 窗口聚合/ │ │ 推送到 │
│ │ │ 派生计算 │ │ 降采样 │ │ 各后端 │
└─────────┘ └────────────┘ └──────────────┘ └──────────┘
parsers(26) 解析任意格式输入 serializers 序列化输出
secret stores(8) 管理令牌等敏感凭据
- inputs:采集或接收指标。系统类(cpu/mem/disk/net)、服务类(docker/nginx/mysql)、消息类(kafka_consumer/mqtt_consumer)、协议网关类(snmp/modbus/opcua)、接收类(statsd/socket_listener/http_listener_v2);
- processors:流式加工每一个指标,如 converter(字段类型转换)、strings(大小写/裁剪)、regex(正则提取)、date(时间戳加工)、topk(取 top N)、starlark(嵌入式 Python 脚本处理);
- aggregators:按时间窗口聚合降采样,如 basicstats(mean/min/max/sum/count)、min、max、final、histogram、derivative、valuecounter、merge、quantile、rate(9 个,实测启动日志口径);
- outputs:写出,68 个覆盖 InfluxDB v1/v2、Prometheus(exposition 与 remote_write)、Kafka、Elasticsearch、Graphite、OpenTSDB、Datadog、New Relic、Loki、SQL(MySQL/PostgreSQL)等。
3.2 数据模型与 Line Protocol
Telegraf 的内部数据模型为「measurement + tags + fields + timestamp」,序列化形态即 InfluxDB Line Protocol:同一 measurement 下 tags 的组合唯一确定一条时间线,fields 携带实际数值。下面是本环境 outputs.file 实际写出的一行(照录自实测输出文件,Telegraf 1.40.2,2026-10-18):
mem,dc=sh1,env=lab,host=cfg-ubuntu-2204 used=19581247488i,available=14026059776i,available_percent=41.735149043091155,total=33607307264i,used_percent=58.264850956908845 1792266760000000000
读法:measurement 为 mem;dc=sh1、env=lab、host=cfg-ubuntu-2204 是三个 tag(索引维度,用于过滤分组);used、available_percent 等为 field(数值本身,i 后缀表示整数);末尾 1792266760000000000 是纳秒时间戳。这一模型与 InfluxDB 原生对齐,写入零转换成本;转成 Prometheus 指标时 measurement+field 拼接为指标名、tags 映射为 label(见《Telegraf 1.40 插件配置详解》outputs 一节实测)。
3.3 Agent 调度与缓冲
Agent 全局段控制整条管道的节奏与背压行为。以下默认值逐条照录自 v1.40.2 官方样例配置(/etc/telegraf/telegraf.conf,605229 字节,2026-10-18 实测环境):
| 参数 | 默认值 | 含义 |
|---|---|---|
| interval | "10s" | 所有 input 的默认采集周期 |
| round_interval | true | 采集时刻对齐到 interval 整数倍(:00/:10/:20…) |
| metric_batch_size | 1000 | 输出端每批最多写出 1000 个 metric |
| metric_buffer_limit | 10000 | 每个 output 最多缓存 10000 个未写出 metric |
| collection_jitter | "0s" | 采集抖动,错开多插件同时读 sysfs |
| flush_interval | "10s" | 所有 output 的默认写出周期 |
| flush_jitter | "0s" | 写出抖动,避免大量实例同时爆发写 |
| precision | "0s" | 时间戳精度,默认随 interval(10s → 1s) |
| omit_hostname | false | 是否在 metric 上省略 host tag |
缓冲语义:output 不可用时 metric 先写入内存 ring buffer,容量即 metric_buffer_limit,恢复后按批重放;超过容量则丢弃最旧数据。Telegraf 进程内不做磁盘持久化缓冲,长时间后端宕机仍会丢数据——这是与 Vector(支持磁盘缓冲)的关键差异之一。
3.4 扩展机制
三种扩展路径(据官方 README 与插件目录,2026-10-18):
- 内建编译插件:390 个插件全部静态编译进二进制,通过 TOML 启用即可,无需安装任何附加包;
- execd 外挂进程:inputs.execd / processors.execd 以独立长驻进程运行任意外部程序(任何语言),经 stdin/stdout 与 Telegraf 交换 Line Protocol 或自定义格式,适合采集自定义业务指标;
- Go API 自编译:基于 telegraf 插件 API 用 Go 开发并编译私有版本,官方贡献指南即此路径。
四、功能特性
- 采集广度:244 个 input 覆盖系统(cpu/mem/disk/diskio/net/processes/kernel/swap/system/internal/time)、服务(docker/redis/mysql/nginx/haproxy)、消息(kafka_consumer/mqtt_consumer/amqp_consumer/nats_consumer)、工业(modbus/opcua)、网络(snmp/gnmi/cisco_telemetry_mdt)、Windows 专属(win_perf_counters/win_services/win_eventlog)等(分类引自官方 README,2026-10-18);
- 接收网关:statsd、socket_listener(TCP/UDP)、http_listener_v2 三个服务型 input 让应用直接向 Telegraf 打点,无需部署独立 statsd daemon;
- 流式处理与聚合:35 个 processor + 9 个 aggregator 可在采集端完成过滤、改名、类型转换、正则加工、窗口降采样,减少后端存储压力;
- 输出广度:68 个 output,尤其与 InfluxDB v1/v2、Prometheus(含 remote_write)、Kafka、SQL 数据库的对接是一等公民;
- 调试友好:
--test单轮采集直接打印到终端、--once采集一轮即退出、--input-filter/--output-filter只启用部分插件(三者在《Telegraf 1.40 插件配置详解》均实测照录回显); - 多平台交付:官方发布 deb/rpm 包、静态 tar.gz、Docker 镜像、Windows 安装包(INSTALL_GUIDE.md,2026-10-18);支持 systemd 托管与 Windows 服务;
- 运行开销小:静态二进制约 100MB 磁盘、常态内存几十 MB 量级(本环境实测:常驻进程 RSS 约 30MB,见《Telegraf 安装部署指南》环境信息)。
五、快速上手(引自官方文档)
本节引自官方 QUICK_START.md(2026-10-18 查询,https://github.com/influxdata/telegraf/blob/master/docs/QUICK_START.md),为官方最小示例,本文不重复实测——完整 0→1 安装与 systemd 托管实测见《Telegraf 安装部署指南》。
官方最小配置:至少一个 input 加一个 output,TOML 声明:
[[inputs.cpu]]
[[inputs.mem]]
[[outputs.file]]
官方说明:启用 CPU 与内存两个 input,file output 未指定文件时默认把指标打印到标准输出,启动数秒后即可看到指标行滚动输出(输出形态即 3.2 节的 Line Protocol)。Ubuntu/Debian 上的安装按官方 INSTALL_GUIDE.md 走 InfluxData apt 仓库,安装后自动注册 telegraf.service 由 systemd 托管。
六、适用场景与限制
6.1 适用场景
- 服务器指标采集入时序库:Telegraf 与 InfluxDB 是同门标配组合(InfluxDB 32k stars,2026-10-18 实查),也能写入 Prometheus、SQL、OpenTSDB 等,是通用「采集层」;
- 应用打点网关:应用把 statsd 打点发到本机 8125 端口,Telegraf 聚合后转发,替代自维护 statsd;
- 工业与物联网网关:Modbus、OPC UA、MQTT 三类插件覆盖 PLC/传感器接入,出站写时序库或 Kafka;
- 网络设备遥测:SNMP 采集交换机/路由器,gNMI/Cisco MDT 接收流式遥测;
- 日志转指标:logparser/tail input 以 grok 解析日志文件,把错误率、状态码分布变成指标(非日志全文检索管道)。
6.2 已知限制
- 无内置存储与界面:Telegraf 是纯管道,必须搭配后端(时序库)与展示层(如 Grafana),不存在单机自足的监控方案;
- 进程内内存缓冲:output 宕机时最多缓冲
metric_buffer_limit(默认 10000)个 metric,无磁盘持久化,不适合「后端长期不可用仍不能丢数据」的场景(可改用 Vector 的磁盘缓冲或 Kafka 作为缓冲层); - 日志处理弱于专用管道:文本解析仅到「转指标」深度,全文检索、复杂路由需 Loki/Vector/Logstash;
- 集群无中心管理:每台机器独立配置文件,多实例配置分发需 Ansible 等外部工具;官方也不提供多租户采集面控制台;
- 部分协议插件对权限有要求:如采集 Docker 需 docker.sock 访问权限、SMART 需 root、网络设备需团体字/凭据,规划阶段应逐插件确认。
七、同类选型对比
7.1 候选产品与版本事实(2026-10-18 实查)
| 项目 | 语言 | License | Stars | 最新稳定版 | 版本节奏 | 来源 |
|---|---|---|---|---|---|---|
| Telegraf | Go | MIT | 18k | v1.40.2 | 月度滚动(v1.40.0→v1.40.2 约 1 个月) | GitHub Releases/releases.atom |
| node_exporter | Go | Apache-2.0 | 14k | 1.12.1(2026-07-14 发布) | 季度级 | GitHub Releases |
| Vector | Rust | MPL-2.0 | 23k | v0.59.0 | 高频小版本 | GitHub Releases |
| collectd | C | GPL-2.0 | — | 5.12.0(6.0 线尚在 6.0.0.rc3 候选) | 年度级 | GitHub Releases |
说明:stars 为 shields.io 实查取整口径(2026-10-18);collectd 维护由社区(GitHub collectd/collectd)驱动,6.0 大版本多年处于 RC 阶段,稳定线停在 5.12.0。
7.2 能力矩阵对比
| 维度 | Telegraf | collectd | node_exporter | Vector |
|---|---|---|---|---|
| 定位 | 通用采集 agent(指标为主,兼收日志转指标) | 系统指标采集 daemon | Prometheus 生态节点指标 exporter | 端到端可观测管道(日志+指标) |
| 架构模型 | 采集+处理+聚合+推送四段管道 | C 插件采集+网络插件写出 | 只暴露 HTTP 端点供拉取 | sources→transforms→sinks 管道 |
| 扩展方式 | TOML 启用内建插件/execd 外挂/Go API | C 编译插件/Python collectd 插件 | Go collector(需重新编译) | TOML 声明组件/VRL 脚本 |
| 数据去向 | 68 个 output 推送为主 | 写 rrd/网络插件(write_graphite 等) | 仅 Prometheus 抓取 | 多类 sinks 推送,支持磁盘缓冲 |
| 数据变换能力 | processor 聚合/改写中等 | 弱(基本透传) | 无 | 强(VRL 完整脚本语言) |
| 采集广度 | 244 input,含工业/网络/Windows | 90+ 插件偏系统 | 40+ collector 偏 Linux 系统 | sources 偏日志/事件源 |
| 资源占用 | 低(单二进制,常驻约 30MB RSS 实测) | 低(C 编写) | 低 | 中(Rust,缓冲大时更高) |
| 典型搭配 | InfluxDB/Prometheus/Kafka + Grafana | Graphite/rrdtool | Prometheus + Grafana | 任意 sink(Kafka/S3/Loki/ES) |
关键差异解读:node_exporter 是「单一职责」拉模式 exporter,离开 Prometheus 无意义;collectd 年代最早但扩展与协议生态已明显老化;Vector 强在日志与变换、支持磁盘缓冲,但系统指标 input 广度不如 Telegraf;Telegraf 在「一台机器上把多源指标统一采起来推给任意后端」这一主航道上覆盖最全,且与 InfluxDB 生态深度耦合。
7.3 选型建议
- 如果后端是 InfluxDB 或需要 statsd 网关、SNMP/Modbus 等多协议接入 → Telegraf(一步到位的采集广度);
- 如果全栈已是 Prometheus 且只采主机指标 → node_exporter(生态原生、零配置成本);
- 如果核心诉求是日志管道、强变换或磁盘缓冲 → Vector(VRL 与缓冲能力是硬优势);
- 如果是超老旧系统/嵌入式且只需基础系统指标 → collectd(C 依赖极少);
- 如果要同时满足「系统指标 + 应用打点 + 网络设备 + 工业协议」→ Telegraf,其他三者均需再引入补充组件。
7.4 结论
本专栏选型结论:Telegraf 以 MIT 许可、月度发版节奏、390 内建插件(实测口径)成为「通用采集 agent」的首选,尤其适合以 InfluxDB/Prometheus 为后端的基础设施监控与多协议接入场景;其限制(无存储无 UI、内存缓冲有限、日志处理较浅)均可通过搭配后端与《Telegraf 集成实战》中的全链路方案消化。后续篇目按此结论展开实测。
八、参考链接
- GitHub 仓库:https://github.com/influxdata/telegraf
- 发布页与版本序列:https://github.com/influxdata/telegraf/releases
- 官方文档站:https://docs.influxdata.com/telegraf/
- 快速上手(QUICK_START.md):https://github.com/influxdata/telegraf/blob/master/docs/QUICK_START.md
- 安装指南(INSTALL_GUIDE.md):https://github.com/influxdata/telegraf/blob/master/docs/INSTALL_GUIDE.md
- 配置参考(CONFIGURATION.md):https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md
- 站内系列:《Telegraf 安装部署指南》《Telegraf 1.40 插件配置详解》《Telegraf 集成实战》