Telegraf用一个TOML配置快速跑通指标采集全链路【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf十几台服务器要盯CPU和内存每加一台就得手写脚本去解析 /proc输出口径还各不相同这类活最磨人。Telegraf 是单二进制指标采集代理写几行 TOML 声明要用的插件它就负责采集、处理、写入指标。运维和开发在单机到大机群场景都能用。它到底是什么把指标采集变成插件配置的监控代理它是 InfluxData 生态的数据采集层从各种来源拉指标过一遍处理管线再推给时序数据库或消息队列。编译后是单个静态二进制无运行时依赖配置全靠一份 TOML 文件。核心能力解决什么问题300 输入插件系统、中间件、云服务、消息队列不用为每个监控对象写采集脚本processor / aggregator 管线落库前过滤、重命名、聚合脏数据多输出InfluxDB、Kafka、文件等同一份指标同时发多处file/stdout 便于调试--test/--once验证命令不接数据库也能看到实际采到什么plugins/ 目录按类型组织inputs、outputs、processors、parsers每个插件自带 README 和样例配置。一条路跑通Docker 三行配置让 Telegraf 开始采集Docker 这条路最省事拉官方镜像挂一份配置文件即可。配置至少要有一个输入和一个输出否则启动直接报错。docker pull telegraf cat config.toml EOF [[inputs.cpu]] [[inputs.mem]] [[outputs.file]] files [stdout] EOF docker run --rm -v $PWD/config.toml:/etc/telegraf/telegraf.conf telegraf启动后会打印 Loaded X inputs and Y outputs10 秒内 stdout 开始输出 CPU 和内存指标的行协议。已有二进制时用一条命令验证配置telegraf --config config.toml --test--test只跑输入并打印到 stdout不走输出是检查配置写对没有的第一步。生产环境可用官方源的 DEB/RPM 包或 Homebrew 安装K8s 上有社区 Helm chart。完整方式见 docs/INSTALL_GUIDE.md。读懂关键配置采集、处理、输出三层各管什么Telegraf 的配置分[global_tags]、[agent]、inputs、processors/outputs 四块。沿数据流走每层各管一件事最常改的也就每层一两个参数。采集层从哪里取数、多久取一次每个[[inputs.xxx]]声明一个数据源按interval周期运行所有输入共享同一个节奏。[agent] interval 10s [[inputs.cpu]] totalcpu true [[inputs.disk]] ignore_fs [tmpfs, devtmpfs]interval它管全局采集频率→默认 10sprecision不填时按 interval 的整数量级取→想告警快就调小数据量大就调大。percpu/totalcpu它管按核还是按总量上报→默认只有总量值→要看单核负载才设percpu true。ignore_fs它管忽略哪些文件系统→默认已排除 tmpfs、devtmpfs 等→容器宿主机上把overlay加进列表。处理层发出去之前数据做什么变换processors 在输入和输出之间加工指标最常改的是processors.filternamepass/fieldpass/tagdrop这几个开关就是控制数据量的标准手段。fieldpass它管保留哪些字段→默认全留→只要使用率的话fieldpass [used_percent]能砍掉一半以上数据量。tagdrop它管删掉哪些标签→默认标签全保留→数据库序列基数暴涨时先找容器 ID、请求 ID 这类高基数标签删掉。输出层数据最终写到哪每个[[outputs.xxx]]是一个写入目标所有输出收到同一份数据。开发期用outputs.file写 stdout 最便宜生产换influxdb_v2token 走环境变量。[[processors.filter]] namepass [cpu, mem] fieldpass [used_percent] [[outputs.influxdb_v2]] urls [http://localhost:8086] token ${INFLUX_TOKEN} organization my-org bucket telegraf timeout 5stimeout它管输出请求超时→默认 5s→网络延迟高或单次写入量大时调到 10s。content_encoding gzip它管传输压缩→默认关闭→带宽紧张时建议开启。${VAR}环境变量在配置解析前替换deb/rpm 包把变量写进/etc/default/telegraftoken 就不用落在配置文件里。三个高频场景主机、容器、中间件主机基础监控回答机器要不要出事用cpumemdisknet四件套指标字段直接对应 /proc 里的内容。最常动的是两处disk的ignore_fs过滤虚拟文件系统net的interfaces [eth0]只盯关键网卡。容器监控回答每个容器占了什么inputs.docker走引擎 API容器里要挂载/var/run/docker.sock。关键参数三个endpoint默认 unix sockettimeout默认 5sperdevice true按网卡和设备分别上报。若从容器内监控宿主机需要挂载/、/proc等并设置HOST_PROC、HOST_SYS等环境变量做法见 docs/FAQ.md 的 Docker 条目。中间件监控回答服务还健康吗MySQL、Redis、MongoDB 各有 input 插件配置servers地址列表加凭据读的是服务自带的 status 接口只有 HTTP 指标端口的服务用prometheus或http插件抓。轮询型插件的interval保持 10s 以上通常足够再密会压垮被采服务。踩坑速查没有数据输出先查哪里现象没打印任何数据也没报错。原因配置里只有输入没有输出或插件名拼错没被加载。处理看启动日志 Loaded X inputs and Y outputs 这一行临时加一个写 stdout 的outputs.file再用--test跑一轮。现象输出偶发 Context Deadline exceeded。原因网络抖动Go HTTP 客户端超时。偶发会自愈缓冲里的数据下轮补发频繁出现就调大输出的timeout并检查 DNS、代理、防火墙。现象报 no such host同机其他程序能解析该域名。原因Go 默认用纯 Go DNS 解析器行为与系统库不同。处理export GODEBUGnetdnscgo切回 cgo 解析器服务化部署则写进/etc/default/telegraf。现象数据库负载持续上涨或 Telegraf 报缓冲满、数据被丢弃。原因高基数标签引发序列爆炸或内存缓冲默认metric_buffer_limit 10000点被打满后按丢弃策略丢数据。处理tagdrop删高基数标签确需保留数据时调大缓冲或改用磁盘缓冲设计见 docs/specs/tsd-005-output-buffer-strategy.md。收尾什么时候用 Telegraf什么时候不用Telegraf 是指标采集代理需求是把一批系统和中间件的指标拉进时序库时它是配置成本最低的选择之一。已有 OpenTelemetry 体系、要统一 trace 加 metrics 加 logs 的优先考虑 OTel Collector采大量业务日志、需要日志级语义的用专门的日志管线更合适。完整配置项参考 docs/CONFIGURATION.md命令与参数见 docs/COMMANDS_AND_FLAGS.md所有插件可用参数可以直接telegraf config生成样例配置查看。【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考