news 2026/9/9 15:06:15

Telegraf 指标采集容器化部署实战指南:Docker 与 K8s 3 步跑通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Telegraf 指标采集容器化部署实战指南:Docker 与 K8s 3 步跑通

Telegraf 指标采集容器化部署实战指南:Docker 与 K8s 3 步跑通

【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf

Telegraf 是 InfluxData 的插件式指标采集代理(Agent),负责收集、处理并写入系统与服务指标。本文带你完成 Telegraf 容器化部署:先在 Docker 里用最小配置跑通第一次采集,再把它以 DaemonSet 形式部署到 Kubernetes 集群,并处理好最常见的锁内存告警与指标过滤问题。

为什么容器化:先选对基础镜像

Telegraf 提供两种官方 Docker 镜像,维护策略是 InfluxData 为最近三个次要版本持续提供安全更新(见 docs/DOCKER.md):

镜像拉取命令特点适用场景
Debiandocker pull telegraf依赖完整,兼容性好生产环境,稳定性优先
Alpinedocker pull telegraf:alpine体积小,资源占用低边缘设备、资源受限节点

选型决策点只有一个:是否依赖 glibc 生态下的系统工具。没有特殊需求就选 Debian;节点资源紧张、只需采集指标时选 Alpine。

第一次跑起来:用 telegraf config 生成最小配置

让 Telegraf 自己生成配置

不要手写配置,先让程序打印出厂配置(docs/COMMANDS_AND_FLAGS.md):

docker run --rm telegraf config > telegraf.conf

加过滤参数可以只导出你需要的插件段落:

telegraf config --input-filter cpu:mem --output-filter file

最小可用配置长什么样

一个能启动的配置只需要三行:至少一个输入、一个输出(docs/QUICK_START.md):

[[inputs.cpu]] [[inputs.mem]] [[outputs.file]]

[[outputs.file]]的默认值是把指标写到stdout/tmp/metrics.out(见 plugins/outputs/file/sample.conf),stdout 输出到容器日志,正好用来肉眼验证数据流。

Docker 启动:三步验证指标真的在流动

  1. 拉镜像:docker pull telegraf
  2. 生成配置:docker run --rm telegraf config > telegraf.conf,删掉不需要的插件段,保留上面的最小三段
  3. 挂载配置启动:
docker run --rm \ --volume $PWD/telegraf.conf:/etc/telegraf/telegraf.conf \ telegraf

启动日志会先打印加载的配置路径、版本和已加载插件,几秒后 stdout 开始输出 InfluxDB 行协议格式的指标(如cpu,host=xxx,cpu=cpu0 usage_system=...)。看到这一行,采集链路就算通了。

踩坑处理:锁内存告警与 --unprotected

Docker 部署中最常见的告警是:

W! Insufficient lockable memory 64kb when 72kb is required

原因是 Telegraf 默认把密钥保存在锁定内存中,而容器内默认的可锁定内存(memlock)配额往往不够。两种处理方式(docs/DOCKER.md):

推荐:启动时用--ulimit提高配额:

docker run --rm --ulimit memlock=8192:8192 \ --volume $PWD/telegraf.conf:/etc/telegraf/telegraf.conf telegraf

备选:给容器追加--unprotected参数,放弃内存锁定。密钥可能随页面交换写入磁盘,安全性降低,仅建议在测试环境使用。

如果告警升级成panic: could not acquire lock ... limit reached?导致容器退出,按同样方式处理即可。

部署到 Kubernetes:kubernetes 插件为什么要求 DaemonSet

Telegraf 的 kubernetes 插件 通过 kubelet API 读取每个节点上 Pod 与容器的指标。插件官方说明明确要求:它必须作为 DaemonSet 运行在集群的每个节点上,并且 URL 指向本节点的 kubelet:

[[inputs.kubernetes]] url = "http://127.0.0.1:10255" bearer_token = "/var/run/secrets/kubernetes.io/serviceaccount/token"

对应的部署骨架是一个 DaemonSet 加一个 ConfigMap 卷:

kind: DaemonSet spec: template: spec: containers: - name: telegraf image: telegraf

两个容易忽略的点:

  • 高基数警告:该插件会按 Pod 维度产出大量标签组合,官方 README 明确提示要先做指标过滤,否则会给数据库带来高基数压力。过滤配置见 docs/CONFIGURATION.md 的 Metric filtering 一节。
  • 敏感信息走环境变量:配置里可用${VAR}引用环境变量(字符串需带引号),把输出地址、Token 等通过 K8s Secret 注入,避免写死在 ConfigMap 里。

按需调整:过滤指标与自监控

跑通之后再考虑三件事:

  1. 减少数据量:用namepass/tagpass等过滤选项只保留关心的指标与标签,规则在 docs/CONFIGURATION.md 中有完整说明。
  2. 监控 Telegraf 自身:启用[[inputs.internal]]并打开collect_memstats = true,可采集其内存与 goroutine 指标。
  3. 拆分配置:用--config-directory指向一个目录,目录内所有.conf文件都会被合并加载,适合按插件逐个拆文件管理;主配置默认位置是/etc/telegraf/telegraf.conf

到这里,单机验证和集群部署两条路径都走完了。下一步建议阅读 docs/CONFIGURATION.md 了解全局标签与插件排序,以及 docs/DOCKER.md 中的 Nightly 镜像与镜像构建细节。

【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 15:06:11

主键与外键约束:数据库数据完整性的基石与实战指南

很多刚接触数据库的同学,都会在同一个地方栽跟头:表建好了,数据也能插入,查询也能跑,但用着用着,表里的数据就变得不可控了——重复记录删不掉,关联数据对不上,删一个学生竟然把考试…

作者头像 李华
网站建设 2026/9/9 15:06:01

STM32万年历Proteus仿真:DS1302与LCD1602完整实战

简介:一套基于STM32F103C8T6单片机的多功能电子万年历完整设计资源,配套Proteus仿真工程,适合课程设计、毕业设计及电子设计竞赛参考。系统以DS1302时钟芯片为计时核心,可记录年月日、时分秒与星期,具备闰年补偿&#…

作者头像 李华
网站建设 2026/9/9 15:04:16

Immich 数据库迁移全链路:从 generate 到 revert 的 5 个关键动作

Immich 数据库迁移全链路:从 generate 到 revert 的 5 个关键动作 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 在 Immich 里做数据库迁移&…

作者头像 李华
网站建设 2026/9/9 15:03:37

从零实现Rollup:以太坊Layer2扩容原理与工程实践

如果你在2021年那轮行情里用以太坊做过转账,一定记得一次简单Transfer动辄几十美元Gas费的酸爽。我后来做链上数据分析工具时,发现不少项目已经开始把业务从主网迁移到Layer 2,而Layer 2赛道里最被主流认可的方案就是Rollup。这篇文章不打算重…

作者头像 李华
网站建设 2026/9/9 15:02:57

光储充换电站优化调度:用户负荷与分时电价互动建模及Matlab实现

光储充换电站的优化调度,我去年下半年花了挺长时间在折腾这个方向。最近有位读者给我发来一个复现需求,标题很长:"考虑用户充电负荷与最优分时电价互动的光储充换电站优化模型研究",要求用Matlab代码实现。拆开看其实就…

作者头像 李华
网站建设 2026/9/9 15:02:47

JMeter数据服务性能基准测试实战:从脚本编写到结果分析

JMeter这个东西,我在数据服务性能测试里用了好多年了。说实话,提起性能基准测试,很多人第一反应是上LoadRunner,或者直接写脚本用wrk、ab去压。但如果你测的是数据服务——不管是内部REST API、微服务网关,还是某种数据…

作者头像 李华