公司动态

20 分钟搭好 Telegraf 监控:从最小配置到 K8s 部署的完整指南

📅 2026/8/24 8:02:00
20 分钟搭好 Telegraf 监控:从最小配置到 K8s 部署的完整指南
20 分钟搭好 Telegraf 监控从最小配置到 K8s 部署的完整指南【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf如果你的服务器指标散落在各处想统一写进 InfluxDB 却总有缺漏和重复你需要一条稳定的 Telegraf 监控采集链路。Telegraf 是 InfluxData 开源的采集代理内置 300 多个输入插件负责把系统、中间件、云服务的指标收上来、洗一遍、再写进时序数据库。整条链路只有三段——输入、处理、输出配置全是 TOML看完本文你就能自己改。先想清楚指标从哪来往哪去写配置前先答两个问题指标从哪来CPU、磁盘、MySQL、Docker……又要写到哪去InfluxDB、Kafka、文件、HTTP……。Telegraf 只管采集和传输不负责存储和画图——那是 InfluxDB 和 Grafana 的活。所以定位要想清楚它是传送带不是仓库。如果你熟悉 Prometheus 的拉取模型可以把 Telegraf 理解成反向的它主动采、主动推天然适合统一写进时序库的场景。数据在 Telegraf 内部按三段流动段作用配置节输入插件采集指标[[inputs.*]]处理器过滤、改名、转换[[processors.*]]输出插件写入目的地[[outputs.*]]后面所有配置都是往这三段里填东西。五分钟装好容器起步最省事首选 Docker一行命令拉镜像docker pull telegraf容器方式的好处升级就是换个镜像版本配置挂在卷上不用动。习惯包管理的读者配好 InfluxData 源后用 apt 或 yum 安装直接带系统服务。需要改源码或编自定义插件时克隆仓库git clone https://gitcode.com/GitHub_Trending/te/telegraf cd telegraf make build写最小配置跑通第一条采集链路第一个目标只有一个本机 CPU 数据进 InfluxDB。telegraf.conf 只写关键项[agent] interval 10s # 全局采集间隔 metric_batch_size 1000 # 单次批量发送的指标数 [[inputs.cpu]] percpu true # 按核心分别采集 [[outputs.influxdb_v2]] urls [http://localhost:8086] token $INFLUX_TOKEN # 环境变量注入不落盘 organization my-org bucket telegraf把配置挂进容器跑起来docker run -d --name telegraf \ -e INFLUX_TOKEN你的token \ -v $(pwd)/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ telegraf:ro让配置在容器内只读token 走环境变量不进配置文件。启动后先跑验证命令telegraf --config telegraf.conf --test它会完整采一轮把指标打到终端但不写库。这是判断配置活没活的最快手段。三个参数值得记住interval是全局采集间隔插件没单独指定时就按它来。metric_batch_size是攒够多少条发一次太小写库碎太大占内存。$INFLUX_TOKEN演示了环境变量替换密钥不用进版本库。验证通过后再到 InfluxDB 里查一下 bucket确认 bucket 里真有数据点落下来这条采集链路就算通了。数据进库前先洗一遍插件产出的字段通常比你想的多一个 mem 插件就有十几个。生产配置先做两件事用 fieldpass 留白名单[[inputs.mem]] fieldpass [used_percent, available] # 只留要看的字段用 processor 改字段名[[processors.rename]] [[processors.rename.replace]] field usage_idle dest cpu_idle_percent处理器夹在输入和输出之间执行rename、filter、converter、regex 都有去 plugins/processors/ 目录翻一遍就有数。字段多的插件先过滤数据库的写入量和存储压力都直接降下来。按场景调优批量、缓冲与集群输出走 HTTP 时记得换成 HTTPS 并配好 TLS 参数token 不要以明文提交到任何仓库。下面三个场景按需取用。高吞吐错开峰值攒大批[agent] metric_batch_size 5000 metric_buffer_limit 50000 # 内存最多缓存的指标数 flush_interval 30s collection_jitter 5s # 采集间隔随机偏移collection_jitter最容易被忽略集群里几十个实例不加随机偏移所有采集峰值都会挤在同一秒数据库瞬时压力翻倍。怕丢数据开磁盘缓冲[[outputs.influxdb_v2]] buffer_strategy disk buffer_directory /var/lib/telegraf/buffer默认指标只缓存在内存进程一重启就丢。磁盘缓冲后数据库宕机十分钟数据先落盘恢复后补发。代价是额外的磁盘 IO重要链路才开。以 DaemonSet 方式部署到 K8sConfigMap 里放配置apiVersion: v1 kind: ConfigMap metadata: { name: telegraf-config } data: telegraf.conf: | [agent] interval 10sDaemonSet 让每个节点跑一个实例apiVersion: apps/v1 kind: DaemonSet metadata: { name: telegraf } spec: selector: { matchLabels: { app: telegraf } } template: metadata: { labels: { app: telegraf } } spec: containers: - name: telegraf image: telegraf:latest volumeMounts: - { name: cfg, mountPath: /etc/telegraf } volumes: - { name: cfg, configMap: { name: telegraf-config } }想看容器指标配置里加[[inputs.docker]]再把/var/run/docker.sock挂进容器。排错三步走先怀疑配置再看输出固定定位顺序跑telegraf --config xxx.conf --test。有指标出来问题在输出端没有问题在配置。[agent]里打开debug true看启动日志哪些插件加载了、哪些输出起来了。盯输出插件的报错连接拒绝、401、TLS 证书错误报错信息基本能直接指向原因。服务跑在系统里时用journalctl -u telegraf -f看实时日志不确定某个插件是否在你的构建里用telegraf -usage列出全部可用插件核对一下。⚠️ 三个高频坑插件名必须和插件目录名一致且小写。写成[[inputs.Cpu]]会静默不加载日志里也看不到明显报错。namepass、fieldpass写太严数据被全过滤光。先撤掉过滤看有没有数据再逐项加回。输出端出现字面量$INFLUX_TOKEN而不是变量值说明环境变量没导出写库全部 401。规划下一步让监控跑得更久找插件浏览 plugins/inputs/ 目录每个插件目录里都有带注释的 sample.conf比如 plugins/inputs/cpu/sample.conf复制出来改参数就能用。改完先验任何配置改动都先跑telegraf --test配置语法细节看 docs/。自监控加一个[[inputs.internal]]Telegraf 会汇报自己的内存、插件状态和发送统计监控本身也进库。复杂转换字段映射写不动 TOML 时看 plugins/processors/ 里的 starlark 处理器直接在配置里写脚本。【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考