如何在现有的 docker 容器上安装 Prometheus 节点导出器?

Adr*_*gru 1 monitoring docker prometheus prometheus-node-exporter

我有 3 个节点在单独的 Docker 容器中运行,我想使用 Prometheus 监控它们。我已经部署了带有 Prometheus 服务器的 docker 容器,但需要在容器中安装节点导出器以将指标导出到服务器。这些容器是使用 Ubuntu 映像构建的,并且在每个容器中运行一个 .jar。

  1. 如何在已经运行的容器上安装节点导出器二进制文件?
  2. 如何确保重启后自动安装node exporter?

Dav*_*aze 7

Prometheus节点导出器收集“*NIX 内核公开的硬件和操作系统指标”。由于给定主机上的所有 Docker 容器共享相同的主机内核,因此在每个容器中运行它是没有意义的。运行一次,并考虑到它收集的统计数据的性质,直接在主机上运行它。(对设备统计信息、进程和 NTP 守护程序状态等内容的探测在容器内部无法正常工作。)

如果您只想监控应用程序,则需要添加Prometheus Java 库并让您的应用程序在/metrics. 您不需要节点导出器,并且此设置没有任何 Docker 特定的内容。

一般来说,你永远不要在正在运行的容器中安装任何东西,因为一旦容器退出并被删除,它就会丢失(这是一种非常常见的情况)。“如何在容器中安装 X”的一般答案是将其添加到您的映像中Dockerfile,重新运行docker build以重建映像,停止并删除现有容器,然后docker run针对新映像重新运行。

另外,作为一般规则,不鼓励在 Docker 容器中运行多个进程:这会显着增加复杂性和操作难度。(使用 shell 脚本有一种快速而肮脏的方法,但您不会注意到一个进程或另一个进程是否失败;有一种复杂的方法涉及类似supervisord的东西,但它可以隐藏进程输出,您可能不知道严重的麻烦。)如果您确实想在 Docker 中运行节点导出器(几乎禁用了所有 Docker 控件),您通常会在单独的容器中运行它。