我有一个在docker-compose中运行Prometheus的新服务器。 我希望能够重新加载配置文件(prometheus.yml),而不必停止并启动容器。
当然,由于我将promethues持久存储在一个卷中,因此停止和启动并不是一个真正的问题,但这似乎有点过头了,尤其是因为prometheus本身具有如此方便的api重新加载配置。
我看到其他人也有类似的问题(例如here),但我一直无法找到适合我的解决方案。也许我正在忽略那里的东西。
docker-compose.yml
version: "3"
services:
grafana:
restart: always
container_name: grafana
image: grafana/grafana:6.2.1
ports:
- 3000:3000
volumes:
- grafanadata:/var/lib/grafana
prometheus:
restart: always
container_name: prometheus
image: prom/prometheus:v2.10.0
privileged: true
volumes:
- ./configuration/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheusdata:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--web.enable-admin-api'
- '--web.enable-lifecycle'
ports:
- 9090:9090
node:
restart: always
container_name: node
image: prom/node-exporter:v0.18.0
ports:
- 9100:9100
volumes:
grafanadata:
prometheusdata:
A,我的结果。
当我运行curl -X POST http://localhost:9090/-/reload
时,docker-compose日志给出:
prometheus | level=info ts=2019-06-17T15:33:02.690Z caller=main.go:730 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
prometheus | level=info ts=2019-06-17T15:33:02.691Z caller=main.go:758 msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml
所以普罗米修斯的结局很好。.到目前为止一切都很好。
但是,当我编辑./configuration/prometheus/prometheus.yml
时,更改不会传播到容器中。
此外,当我尝试在容器中编辑/etc/promethus/prometheus.yml
时,我看到它是只读的(顺便说一句,该容器没有'sudo'命令)。
是否有一种docker native方法将这些配置文件热/实时重新加载到容器目录中?
如前所述,down / start选项目前可以使用,但是我很好奇是否有更优雅的解决方案。
答案 0 :(得分:0)
看起来像
- ./configuration/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
应该颠倒过来。
答案 1 :(得分:0)
我将假定您已经更新了/etc/prometheus/prometheus.yml
文件,而您只是在询问重新加载config。 (尽管配置可以是configmap
的一部分,并且可以避免configmap
更改时pod重新启动。)
运行以下命令以重新加载配置而不停止prometheus进程:
docker exec <prometheus_container_name> sudo killall -HUP prometheus
说明:sudo killall -HUP prometheus
命令向Prometheus进程发送SIGHUP
信号以重新加载配置。
通过以下方式验证更改:
curl -X GET http://localhost:9090/api/v1/status/config
答案 2 :(得分:0)
docker-compose kill -s SIGHUP prometheus
做到了这一点,所以 Vishrant 肯定在那里做点什么。