docker - 如何在已经存在的Docker容器上安装Prometheus节点导出器?

标签 docker monitoring prometheus prometheus-node-exporter

我有3个节点在单个Docker容器中运行,我想使用Prometheus对其进行监视。我已经在Prometheus服务器上部署了docker容器,但是需要在容器中安装节点导出器,以将指标导出到服务器。容器是使用Ubuntu镜像构建的,每个容器中都运行.jar。

  • 如何在已经运行的容器上安装Node Exporter二进制文件?
  • 如何确保重新启动后自动安装节点导出器?
  • 最佳答案

    Prometheus node exporter收集“* NIX内核公​​开的硬件和操作系统指标”。由于给定主机上的所有Docker容器共享相同的主机内核,因此没有必要在每个容器中运行它。运行一次,并鉴于其收集的统计信息的性质,直接在主机上运行它。 (有关设备统计信息,进程和NTP守护程序状态的问题在容器内部无法正常工作。)

    如果只想监视您的应用程序,则需要添加Prometheus Java library并让您的应用程序在/metrics上提供其数据。您不需要节点导出器,此设置也没有特定于Docker的内容。

    通常,永远不要在运行中的容器中安装任何东西,因为一旦容器退出并被删除(这是非常例行的事情),它将立即丢失。对“如何在容器中安装X”的一般回答是将其添加到镜像的Dockerfile中,重新运行docker build以重建镜像,停止并删除现有的容器,然后针对新镜像重新运行docker run

    同样,通常不鼓励在Docker容器中运行多个进程:这会增加复杂性和操作难度。 (使用shell脚本有一种快捷方法,但是您不会注意到一个进程或另一个进程是否失败;这是一种复杂的方法,涉及诸如supervisor之类的东西,但是它可以隐藏进程输出,并且您可能不知道如果您确实想在Docker中运行节点导出器(几乎禁用了所有Docker控件),则通常会在单独的容器中运行它。

    关于docker - 如何在已经存在的Docker容器上安装Prometheus节点导出器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562090/

    相关文章:

    JMX_exporter 在 Prometheus 和 Grafana 中显示错误

    kubernetes - 节点导出器和 kubectl top 似乎报告了不同的内存利用率值?

    docker - 如何以root用户身份运行docker-compose Docker Cloud

    docker - 如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?

    reactjs - 如何在 azure devops 构建中读取 azure key Vault 设置并使它们在 Web SPA 中可用

    docker - 在多阶段构建中使用容器时,Docker 是否执行入口点?

    django - 使用django循环后台进程

    monitoring - 超过上下文截止日期 - 普罗米修斯

    java - 使用 visualvm 和 JMX 进行远程监控

    airflow - Prometheus:如何根据任何 Airflow Dag 而不是特定 Airflow Dag 的结果创建警报