在Docker中更新Prometheus主机/端口

时间:2018-10-01 13:21:13

标签: docker salt-stack prometheus

问题:如何将Prometheus容器的主机地址从默认的0.0.0.0:9090更改为192.168.1.234:9090

背景:我正在尝试使一个Prometheus容器在远程服务器上的生产环境中安装和启动。由于服务器使用的IP不是Prometheus的默认IP(0.0.0.0),因此我需要更新Prometheus容器使用的主机地址。如果没有,则无法登录UI并查看任何指标。远程服务器的IP由用户在应用程序的安装过程中提供。

根据我从Prometheus的config document./prometheus -h的输出中了解到,主机地址是不可变的,因此需要使用--web.listen-address=命令行标志进行更新。我的问题是我不知道如何将该标志传递给我的Prometheus容器。我不能简单地运行./prometheus --web.listen-address="<remote-ip>:9090",因为这不是Docker命令。而且我无法将其传递给docker run ...命令,因为Docker无法识别该标志。

环境:

  • 使用SaltStack进行配置管理
  • 我不能使用Docker Swarm(即每个容器都必须使用自己的Dockerfile

1 个答案:

答案 0 :(得分:0)

您不需要更改容器化的普罗米修斯的监听地址。 0.0.0.0/0是容器内的Anynet。

默认情况下,甚至无法从您的主机网络访问它,更不用说任何周围的网络(例如Internet)了。
不过,您可以将其映射到主机接口上的端口。该命令看起来像这样:

docker run --rm -p 8080:9090 prom/prometheus

这将在您的主机

上的127.0.0.1:8080处公开服务

您也可以使用公共(例如,面向Internet)界面来执行此操作,尽管由于存在大量操作隐患,我通常建议不要暴露这样的容器,但这些操作超出了此答案的范围。您至少应该考虑使用反向代理设置,在该设置中,仅允许用户与某些重型Web服务器进行通信,然后再与Prometheus通信,而不是让他们直接访问您的后端,即使这只是一个小型开发部署。

出于生产容器设置生产的一般考虑,我建议使用this

this尽管是clickbaity标题,但还是很有用。