如何用 Docker 首次运行 Telegraf 并确认指标开始输出?
【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf
这篇文章面向第一次使用 Telegraf 的读者:拉取官方 Docker 镜像,写一个最小的 TOML 配置文件,挂载进容器启动 Telegraf,然后确认 CPU 和内存指标确实开始输出。完成后的结果是:容器启动几秒后,终端(stdout)持续打印 CPU、内存指标的 influx 行。
整个过程只需要一个已安装 Docker 的环境,不需要在宿主机上安装 Telegraf 本体。官方镜像由 InfluxData 维护,DockerHub 上有 Debian 和 Alpine 两个基础版本,文档同时维护最近三个 minor release 的镜像(见 docs/DOCKER.md)。
拉取 Telegraf 镜像
docker pull telegraf这条命令拉取最新的 Debian 基础镜像。如果需要 Alpine 基础镜像,文档给出的对应命令是:
docker pull telegraf:alpine具体可用的 tag 以文档指向的 Telegraf DockerHub 页面为准;本文主路径使用默认 tag。
编写最小配置文件
Telegraf 启动前必须提供一份配置文件,且配置中至少要有一个输入插件和一个输出插件,文件格式为 TOML。快速上手文档给出的最小示例只启用三个插件:
[[inputs.cpu]] [[inputs.mem]] [[outputs.file]][[inputs.cpu]]、[[inputs.mem]]:采集本机 CPU 和内存指标;[[outputs.file]]:file 输出插件,"stdout"是一个被特殊处理的目标文件名,指标会打印到标准输出,而不是写到某个磁盘文件。
注意插件定义是 TOML 的 array of tables,同一个插件可以定义多次,例如需要连接不同端点时。
把这段内容保存为当前目录下的config.toml。如果你希望指标同时落到文件里,可以把 file 输出插件的 sample.conf 中的配置加进配置,例如:
[[outputs.file]] files = ["stdout", "/tmp/metrics.out"] data_format = "influx"此时指标除了打印到 stdout,也会写入容器内的/tmp/metrics.out。
挂载配置并启动容器
在config.toml所在目录执行:
docker run --rm --volume $PWD/config.toml:/etc/telegraf/telegraf.conf telegraf各参数含义:
--volume $PWD/config.toml:/etc/telegraf/telegraf.conf:把宿主机的配置文件挂载为容器内 Telegraf 的默认配置路径;$PWD指你当前执行命令的目录,即 config.toml 所在目录;--rm:容器退出后自动删除容器;telegraf:上一步拉取的镜像。
启动后终端会先打印一些初始信息:加载了哪个配置文件、版本信息、加载了哪些插件。再过几秒,指标开始持续打印出来。
确认指标开始输出
成功判据就是终端输出本身:初始信息之后,stdout 上按周期出现 influx 格式的指标行。文档中 cpu、mem 插件 README 给出的示例输出(文档示例,实际数值会不同)长这样:
cpu,cpu=cpu0,host=loaner usage_active=31.249999981810106,usage_guest=2.083333333080696,usage_guest_nice=0,usage_idle=68.7500000181899,usage_iowait=0,usage_irq=0,usage_nice=0,usage_softirq=0,usage_steal=0,usage_system=4.166666666161392,usage_user=25.000000002273737 1568760922000000000mem active=9299595264i,available=16818249728i,available_percent=80.41654254645131,buffered=2383761408i,cached=13316689920i,...,total=20913917952i,used=3335778304i,used_percent=15.95004011996231,... 1574712869000000000看到这类带时间戳的cpu、mem行,就说明采集和输出链路已经通了。采集频率由 agent 的interval决定(见 docs/CONFIGURATION.md),如果不想等默认间隔,可以在配置里加[agent]表并设置interval = "10s"。
如果配置了/tmp/metrics.out输出,也可以在容器运行期间进入容器查看该文件,确认文件在增长。
遇到 lockable memory 报错怎么办
docs/DOCKER.md 明确说明 Telegraf 默认需要使用可锁定内存(lockable memory)。部分 Docker 部署中容器的 memlock 限额不够,会出现如下警告:
W! Insufficient lockable memory 64kb when 72kb is required. Please increase the limit for Telegraf in your Operating System!或者直接报错:
panic: could not acquire lock on 0x7f7a8890f000, limit reached? [Err: cannot allocate memory]文档给出两个处理方式,任选其一:
提高容器的 ulimit。用
ulimit -l查看和设置该值;在 Docker 中可以用--ulimit参数,例如:docker run --rm --ulimit memlock=8192:8192 \ --volume $PWD/config.toml:/etc/telegraf/telegraf.conf telegraf在启动参数中加
--unprotected,改用非锁定内存存放 secrets。文档强调这不如锁定内存安全(secrets 可能被换页到磁盘、以明文写盘),所以是显式选择的降级项。Docker 场景下需要修改镜像启动时使用的CMD来带上这个参数。
边界与下一步
- 本文的最小配置只有 cpu/mem 输入和 file 输出,用于验证"指标开始输出"这一件事;换成其他采集源或目标系统不属于本场景。
- 完成验证后,官方 Quick Start 给出的后续方向是:确定要采集的数据源并浏览 输入插件、确定指标发送目标并浏览 输出插件、按 安装指南 选择正式的部署方式。
- 镜像的具体 tag、版本明细请以 docs/DOCKER.md 中指向的 DockerHub 页面为准,本文不罗列具体版本号。
【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考