我试图让 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
这是警报管理器 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 服务器配置中指定 alertmanager URL 的其他任何地方。然而,没有警报从一个传递到另一个。我没有运行 iptables。我在这里错过了什么吗?
我设法解决了这个问题。我在想网络都错了。我应该使用 --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