Telegraf 采集监控指标,一份配置就能把 CPU、内存数据实时导出来?
【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf
新机器上线,你想盯着它的 CPU、内存和磁盘,但又不想为每台机器单独装一堆 Agent、写一堆采集脚本。Telegraf 就是干这件事的:一个 Go 语言写的采集 Agent,用一份 TOML 配置声明"从哪里取数、往哪里写数据",然后把指标一路收上来、加工好、投递出去。
下面从装好到看见第一条指标输出,一步步走一遍,配置只留真正要动的那几行。
它到底是什么,为什么值得试
Telegraf 的定位是一个通用的指标、日志与数据 Agent,处在"数据源"和"存储/下游系统"中间这一层。它不内置任何业务逻辑,全靠插件驱动:inputs.*负责从各种来源取数(CPU、内存、MySQL、Kafka、HTTP、SNMP 等),outputs.*负责把数据写到目标(InfluxDB、Kafka、文件、stdout 等),中间还能挂processors和aggregators做清洗和聚合。
它值得试的几个原因很实在:整个 Agent 编译成单个静态二进制文件,没有运行时依赖,丢到目标机器上就能跑;配置用TOML写,结构清晰、不容易歧义;插件生态超过300 个,覆盖系统监控、云服务、消息队列、网络设备,绝大多数"取数"场景都已经有现成插件,不用自己写代码。
动手之前
开始前把这几件事准备好:
- 一个能访问目标数据的运行环境(本机、Docker 或服务器)。
- Telegraf 本体。最省事的路径是 Docker,一条命令拉镜像:
docker pull telegraf也支持二进制下载、
brew install telegraf、apt/yum 包,完整方式见 docs/INSTALL_GUIDE.md。 - 一个目标存储或输出端。为了快速验证,先用
outputs.file写到 stdout 即可,不依赖任何外部系统。 - 确认机器上能读
/proc、/sys(Linux 下 CPU/内存插件的数据来源)。
配置语法本身很简单,是标准的 TOML 数组表,不熟悉的话看一眼 docs/TOML.md 就够。
跑通第一个功能:从一条 CPU 指标到控制台输出
1. 写一个最小配置
Telegraf 启动至少要有一个 input 和一个 output。先建一个minimal.conf,只采 CPU 和内存、打到 stdout:
[[inputs.cpu]] percpu = true totalcpu = true [[inputs.mem]] [[outputs.file]] files = ["stdout"]注意 input 和 output 都是[[ ]]的双括号,这是 TOML 的"数组表",意味着同一个插件可以重复声明多次(比如连两个不同的 InfluxDB 实例)。
2. 启动 Telegraf
把配置传进去启动,容器里挂载到/etc/telegraf/telegraf.conf:
docker run --rm --volume $PWD/minimal.conf:/etc/telegraf/telegraf.conf telegraf启动后会先打印一段启动信息(加载了哪个配置、版本号、拉起了哪些插件),几秒后指标开始刷出来。
3. 确认指标真的出来了
你应该能看到类似这样的行(字段名和数值因机器而异,只要看到cpu、mem前缀加时间戳即为成功):
cpu,cpu=cpu0,host=abc123,cpu=cpu0 usage_user=3.2,usage_system=1.1,usage_idle=95.7 1654321098765432109 mem,host=abc123 used_bytes=4234567890i,available_bytes=3423456768i 1654321098765432109如果只看到启动日志却没有任何指标,多半是 input 没被正确识别(见后面踩坑部分)。
4. 用 --test 快速自检
不想常驻运行的话,--test只跑一次 input 就退出,适合验证配置:
docker run --rm --volume $PWD/minimal.conf:/etc/telegraf/telegraf.conf telegraf --test它会把这一轮采到的指标打到 stdout 然后结束,方便你在 CI 或部署前确认链路通了。
配置里真正要盯的几项
完整配置能生成几百行(telegraf config > telegraf.conf可一键导出),但日常你只需要盯这几处:
interval(agent)→ 采集间隔:input 多久采一次,默认10s。高频场景调到1s,低频监控保持10s甚至1m。round_interval(agent)→ 对齐采集时间:设为true让采集点落在整秒边界,多机对比时数据时间轴更整齐。flush_interval(agent)→ 输出刷新间隔:buffer 多久强制刷一次到 output,默认10s。metric_batch_size(agent)→ 每批最大指标数:默认1000,大流量场景调高可减少写次数。files(outputs.file)→ 输出目标:"stdout"是特殊值,直接打到标准输出,验证阶段最实用。
这五项基本决定"采多快、写多勤、数据落哪儿"。更多 agent 项见 docs/CONFIGURATION.md。
几个进阶技巧
用环境变量避免明文写密码。配置里任意位置可用${VAR}占位,解析在文件解析前进行:
[[outputs.influxdb_v2]] urls = ["${INFLUX_HOST}"] token = "${INFLUX_TOKEN}"还能用${VAR:-默认值}兜底、${VAR:?报错信息}强制必填,敏感信息不用写死在配置里。
在中间挂 processors / aggregators 加工数据。比如用processors.rename改字段名、用processors.calculator算usage_busy = 100 - usage_idle、用aggregators.mean算分钟均值。执行顺序是:processors 先跑一遍 → aggregators → processors 再跑一遍,所以同一次加工可能被应用两次,需要留意。细节在 docs/AGGREGATORS_AND_PROCESSORS.md。
按目录拆分配置。用--config-directory指向一个目录,里面所有.conf文件都会被合并加载,适合"一个插件一个文件"的组织方式,方便多人协作和灰度。
踩坑提醒
- 现象:启动后只有日志、没有指标。原因:input 和 output 至少各一个,且插件名必须写对(
[[inputs.cpu]]而不是[[inputs.cpu]]之外的名字),拼错的插件会被当未知项忽略。处理:对照telegraf plugins或插件目录确认名称。 - 现象:TOML 报解析错、整份配置起不来。原因:插件配置块必须用双括号
[[ ]](数组表),单括号[ ]会被当普通表,重复声明时直接冲突。处理:检查 input/output 是否都写成[[ ]]。 - 现象:Windows 下用 PowerShell 5 生成配置后打不开。原因:PS5 默认 UTF-16LE 编码,Telegraf 要 UTF-8。处理:用
telegraf.exe config | Out-File -Encoding utf8 telegraf.conf显式指定编码。
延伸资料
- docs/QUICK_START.md:官方最小可运行示例,本文主线就是它。
- docs/CONFIGURATION.md:agent、global_tags、插件配置全量说明与环境变量用法。
- docs/AGGREGATORS_AND_PROCESSORS.md:中间加工层(processors/aggregators)的执行顺序与过滤。
- plugins/inputs/ 与 plugins/outputs/:每个插件都有自带 README,查具体参数先看这里。
写在最后
回到开头那台新机器:现在你只需要一份minimal.conf,一条docker run就能把 CPU、内存的指标实时刷到控制台,想接 InfluxDB 或 Kafka 时,把[[outputs.file]]换成对应 output 即可。采集这件"取数—加工—投递"的活,Telegraf 用一份 TOML 就把它框定了,剩下的就是按需增删插件。
【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考