Telegraf:InfluxData 出品的指标采集代理
项目介绍
Telegraf 是 InfluxData 开源的一个数据采集代理,用来收集、处理、聚合和输出指标数据。和传统的 Exporter 不同,Telegraf 不局限于 Prometheus 生态------它可以把数据写到 InfluxDB、Kafka、Prometheus、Graphite 等各种后端。
特点
- 插件丰富:超过 300 个插件,涵盖系统、网络、数据库、消息队列、云服务等
- 无依赖:编译成独立二进制文件,解压就能跑,不需要装什么运行时
- 配置清晰:TOML 格式,结构一目了然
- 社区活跃:超过 1200 名贡献者,遇到问题基本能在网上找到答案
支持的部分插件领域:
| 分类 | 插件示例 |
|---|---|
| 系统 | CPU、内存、磁盘、网络、Docker、Nvidia SMI |
| 日志 | File、Tail、Directory Monitor |
| 消息队列 | AMQP、Kafka、MQTT |
| 网络设备 | Cisco Telemetry MDT、gNMI |
| 数据库 | MySQL、PostgreSQL、MongoDB、Redis |
| 硬件 | OPC UA、Modbus、SMART |
| Windows | 事件日志、WMI、性能计数器 |
| 通用 | Exec、HTTP、SNMP、SQL |
安装
安装方式有多种,最常用的是通过包管理器:
bash
# Debian/Ubuntu
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '...' | gpg --import -
# 然后 apt install telegraf
# CentOS/RHEL
rpm -i https://dl.influxdata.com/telegraf/releases/telegraf-1.30.0-1.x86_64.rpm
# Docker
docker run -d --name=telegraf -v /path/to/telegraf.conf:/etc/telegraf/telegraf.conf telegraf
配置说明
配置文件的格式是 TOML,核心结构就这么三块:
toml
# 1. 全局设置
[agent]
interval = "10s" # 多久采集一次
flush_interval = "10s" # 多久往外发一次
# 2. 输入:从哪采集
[[inputs.cpu]]
percpu = true
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs"]
# 3. 输出:发给谁
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "telegraf"
[[outputs.prometheus_client]]
listen = ":9273"
使用方法
Telegraf 的工作流程很简单:
- 写一个 TOML 配置文件,指定要用哪些输入插件、处理插件、输出插件
- 运行
telegraf --config /etc/telegraf/telegraf.conf - 它就会按
interval间隔采集,然后按flush_interval间隔输出
什么时候用 Telegraf
| 场景 | 推荐 | 原因 |
|---|---|---|
| 只需要采集服务器指标 | node_exporter | 更轻量 |
| 需要同时采集多个组件(CPU + MySQL + Nginx) | Telegraf | 一个代理全搞定 |
| 数据要同时写到 Prometheus 和 InfluxDB | Telegraf | 支持多输出 |
| 需要自定义脚本来采集特殊指标 | Telegraf | 有 exec 插件 |
| Windows 环境 | Telegraf | 系统支持好 |
一句话总结:Telegraf 适合需要一套代理搞定所有采集的场景,node_exporter 适合只想简单监控 Linux 服务器的场景。两者不冲突,可以共存。