Skip to content

快速参考

支持的标签及各自的 Dockerfile 链接

快速参考(续)

什么是 Telegraf?

Telegraf 是一个用于收集、处理、聚合和写入指标的开源代理。基于插件系统,使社区中的开发人员能够轻松添加对其他指标收集的支持。有五种不同类型的插件:

  • 输入插件从系统、服务或第三方 API 收集指标
  • 输出插件将指标写入到各种目标位置
  • 处理器插件对指标进行转换、修饰和/或过滤
  • 聚合器插件创建聚合指标(例如,均值、最小值、最大值、分位数等)
  • Secret Store 插件用于从配置文件中隐藏机密信息

Telegraf 官方文档

logo

如何使用此图像

暴露的端口

  • 8125 用户数据报协议(UDP:User Datagram Protocol)
  • 8092 UDP
  • 8094 TCP

配置文件

用户需要提供有效的配置以使用该图像。有效的配置至少指定了一个输入插件和一个输出插件。以下将逐步介绍开始操作的一般步骤。

基础示例

配置文件是基于 TOML 的文件,用于声明要使用哪些插件。一个非常简单的配置文件 telegraf.conf ,它从系统 CPU 收集指标并将指标输出到 stdout ,如下所示:

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

一旦用户拥有自定义配置文件,他们就可以在预期位置挂载该文件来启动 Telegraf 容器:

$ docker run -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf

$PWD 修改为您想要存储配置文件的目录。

在此处阅读更多有关 Telegraf 配置的信息。

示例配置

用户可以使用 config 子命令生成示例配置。这将为用户提供一个基本配置,其中启用了一些从系统收集数据的输入插件。然而,在文件准备好使用之前,用户仍需要配置至少一个输出:

$ docker run --rm telegraf telegraf config > telegraf.conf

支持的插件参考

以下是在 Telegraf 中可用的各种插件的链接:

示例

监控 Docker 引擎主机

Telegraf 的一个常见用例是从容器内部监控 Docker Engine 主机。推荐的技术是将主机文件系统挂载到容器中,并使用环境变量来指示 Telegraf 在何处查找文件系统。

需要提供的精确文件因插件而异。以下是一个展示全套支持位置的示例:

$ docker run -d --name=telegraf \
    -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
    -v /:/hostfs:ro \
    -e HOST_ETC=/hostfs/etc \
    -e HOST_PROC=/hostfs/proc \
    -e HOST_SYS=/hostfs/sys \
    -e HOST_VAR=/hostfs/var \
    -e HOST_RUN=/hostfs/run \
    -e HOST_MOUNT_PREFIX=/hostfs \
    telegraf

监控 Docker 容器

要监控其他 Docker 容器,您可以使用 Docker 插件并将 Docker 套接字挂载到容器中。下面是一个示例配置:

[[inputs.docker]]
  endpoint = "unix:///var/run/docker.sock"

然后您可以启动 telegraf 容器。

$ docker run -d --name=telegraf \
      --net=influxdb \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
      telegraf

有关更多信息,请参考 Docker 插件文档。

安装额外的软件包

一些插件需要安装额外的软件包。例如, ntpq 插件需要 ntpq 命令。建议创建一个自定义衍生镜像来安装任何所需的命令。

作为一个示例,此 Dockerfile 将 mtr-tiny 镜像添加到基础镜像中,并将其保存为 telegraf-mtr.docker

FROM telegraf:1.12.3

RUN apt-get update && apt-get install -y --no-install-recommends mtr-tiny && \
    rm -rf /var/lib/apt/lists/*

构建派生图像:

$ docker build -t telegraf-mtr:1.12.3 - < telegraf-mtr.docker

创建一个 telegraf.conf 配置文件:

[[inputs.exec]]
  interval = "60s"
  commands=["mtr -C -n example.org"]
  timeout = "40s"
  data_format = "csv"
  csv_skip_rows = 1
  csv_column_names=["", "", "status", "dest", "hop", "ip", "loss", "snt", "", "", "avg", "best", "worst", "stdev"]
  name_override = "mtr"
  csv_tag_columns = ["dest", "hop", "ip"]

[[outputs.file]]
  files = ["stdout"]

运行您的衍生图像:

$ docker run --name telegraf --rm -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf telegraf-mtr:1.12.3

图像变体

telegraf 图像有多种类型,每种都针对特定的用例而设计。

telegraf:<version>

这是事实上的映像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以作为构建其他映像的基础。

telegraf:<version>-alpine

此图像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中获取。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此总体上会生成更精简的镜像。

当您首要关注的是最终图像大小尽可能小的时候,此变体是有用的。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及相关库,因此软件往往会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的图像的一些利弊比较的更多讨论,请参阅此 Hacker News 评论线程。

为尽量减小镜像大小,在基于 Alpine 的镜像中通常不会包含其他相关工具(例如 gitbash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。

许可证

查看此映像中所包含软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 telegraf/ 目录中找到。

对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。