Telegraf:把服务器指标统一收集的代理
Telegraf:把服务器指标统一收集的代理
Telegraf 在 GitHub 上已经拿到 17,673 个 Star。
InfluxData 开源了这个项目,用来收集、处理、聚合和写入指标、日志以及其他任意数据。它跑成一个二进制,没有外部依赖,配置用 TOML 文件完成。整个设计围绕插件展开,输入、处理、输出三类插件组合使用,可以覆盖数据采集场景。项目用 Go 语言编写,单个二进制方便分发和部署。
1、这玩意儿是干嘛的
就做一件事:把各种来源的数据收上来,处理后送到你想存的地方。
服务器 CPU、内存、磁盘、网络状态,Docker 容器指标,MySQL、Redis、Kafka 等中间件数据,云厂商接口,甚至脚本输出,都能接入。数据可以写入 InfluxDB、Prometheus、Kafka、Elasticsearch 等存储或消息系统。输入和输出之间还可以插入处理器,完成重命名、过滤、聚合等操作。采集间隔、发送间隔、缓冲区大小都可以在配置中指定。用户也可以接入自定义代码来收集、转换和传输数据。这种设计让它既能处理标准协议,也能兼容遗留系统。

2、为什么要用它
做监控的人常遇到这种情况:每台机器要装探针,配置格式不一样,数据收集后还要写脚本清洗,维护成本会增加。数据源一多,排查问题变得困难,升级时还要逐个处理采集脚本。各团队写出的采集逻辑重复,质量也有差异。
Telegraf 把这些步骤串起来了。通过一个配置文件定义输入、处理和输出插件,启动后自动按周期采集和发送。它自带 300 多个插件,覆盖系统监控、云服务、消息队列、网络设备、日志文件等场景。插件之间数据格式一致,不需要在中间转换。遇到项目未内置的协议或接口,可以用 exec 插件调用脚本,也可以用 Go 自行开发插件。对于已经有内部脚本或 HTTP 接口的团队,Telegraf 可以直接消费这些来源,不需要推倒重来。
由于采用插件架构,新增一种数据源通常只需要启用对应插件,修改几项配置即可。采集到的数据会先进入内部队列,再按配置批量发送,可以减少对目标存储的冲击。插件由社区维护,贡献者已经超过 1,200 人。
3、安装与使用
编译后是一个二进制,部署时只需要一个文件。安装方式包括二进制包、Docker 镜像、RPM 和 DEB 包。
配置文件格式为 TOML。以 CPU 监控为例:
[[inputs.cpu]]
percpu = true
totalcpu = true
[[outputs.file]]
files = ["stdout"]
启动命令:
telegraf --config telegraf.conf
每个插件都有文档,说明配置项、使用方式和排错方法。官方也提供快速入门和配置参考文档。处理器插件可以在数据流入存储前完成单位转换、字段选择、阈值过滤等操作,不需要额外写代码。TOML 配置文件分为全局代理设置、输入插件、处理器插件和输出插件四块。修改配置后重启服务即可生效。配置文件中可以定义多个输入和输出,这些数据可以同时发往多个后端,比如同时写入 InfluxDB 和 Kafka。
4、适合哪些人用
- 需要收集服务器和中间件指标的运维工程师
- 正在搭建可观测性平台、不想为每种数据源单独写采集脚本的团队
- 有自定义采集逻辑需求、希望用插件机制扩展的开发者
如果你已经在用 InfluxDB 或 Prometheus,Telegraf 可以作为采集层直接接入现有栈。对于需要统一多种数据源的监控场景,它提供了一种方案。

,它提供了一种方案。
[外链图片转存中…(img-PxPR9XNQ-1783399600729)]
更多推荐
所有评论(0)