Prometheus 警报管理器

Prometheus 警报管理器

我正在尝试让 Prometheus 通过 Docker 容器中的警报管理器发送警报。我已成功让 Prometheus 发出警报,但这些警报未传递到同一主机上的警报管理器

两个容器都启动正常,配置从指定卷正确挂载,您可以使用 WebUI 检查。但是,当我触发警报时,它显示为正在触发。警报管理器中没有出现任何警报

下面是我用来启动两个容器的 docker 命令

docker run -d -p 9090:9090 --name=prom_server -v /prometheus-data/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus-data/alert.rules:/etc/prometheus/alert.rules prom/prometheus -config.file=/etc/prometheus/prometheus.yml -alertmanager.url=http://10.1.1.10:9093

这是 alertmanager docker 实例

docker run -d -p 9093:9093 --name=prom_alertmanager -v /prometheus-data/alertmanager.conf:/alertmanager.conf prom/alertmanager -config.file=/alertmanager.conf

当我使用 docker inspect 检查时,我可以看到传递的参数

[root@myserver]# docker inspect prom_server
...
"Cmd": [
                "-config.file=/etc/prometheus/prometheus.yml",
                "-alertmanager.url=http://10.196.106.41:9093"
            ],
...

我检查了一下,在 Prometheus 服务器配置中没有看到任何指定警报管理器 URL 的地方。但是,警报并没有从一个服务器传递到另一个服务器。我没有运行 iptables。我是不是漏掉了什么?

答案1

我设法解决了这个问题。我对网络的想法完全错误。我应该使用 --link 参数将两个容器链接在一起,而不是尝试通过主机网络进行路由

docker run -d -p 9090:9090 --name=prom_server --link prom_alertmanager -v /prometheus-data/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus-data/alert.rules:/etc/prometheus/alert.rules prom/prometheus -alertmanager.url=http://promalertmanager:9093 -config.file=/etc/prometheus/prometheus.yml

相关内容