如何设置alertmanager.service以便在docker容器中运行



我在docker容器中运行prometheus,我想配置一个AlertManager,使其在服务关闭时向我发送电子邮件。我创建了alert_rules.ymlprometheus.yml,并使用以下命令运行所有操作,将这两个yml文件安装到路径/etc/prometheus:的docker容器上

docker run -d -p 9090:9090 --add-host host.docker.internal:host-gateway -v "$PWD/prometheus.yml":/etc/prometheus/prometheus.yml -v "$PWD/alert_rules.yml":/etc/prometheus/alert_rules.yml prom/prometheus

现在,我还希望普罗米修斯在出现警报时给我发一封电子邮件,这就是我遇到一些问题的地方。我将alertmanager.yml配置如下:

route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: email-me
receivers:
- name: 'gmail'
email_configs:
- to: 'my_email@gmail.com'
from: 'askonlinetraining@gmail.com'
smarthost: smtp.gmail.com:587
auth_username: 'my_email@gmail.com'
auth_identity: 'my_email@gmail.com'
auth_password: 'the_password'

实际上,我不知道smarthost参数是否配置正确,因为我找不到任何关于它的文档,也不知道它应该包含哪些值我还创建了一个alertmanager.service文件:

[Unit]
Description=AlertManager Server Service
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=Simple
ExecStart=/usr/local/bin/alertmanager 
--config.file /etc/alertmanager.yml
[Install]
WantedBy=multi-user.target

我认为这里有些地方搞砸了:我认为我传递给ExecStart的第一个参数是一个容器中不存在的路径,但我不知道应该如何替换它。我尝试使用以下命令将最后两个文件装载到docker容器中,该容器位于我装载前两个yml文件的同一目录中:

docker run -d -p 9090:9090 --add-host host.docker.internal:host-gateway -v "$PWD/prometheus.yml":/etc/prometheus/prometheus.yml -v "$PWD/alert_rules.yml":/etc/prometheus/alert_rules.yml -v "$PWD/alertmanager.yml":/etc/prometheus/alertmanager.yml -v "$PWD/alertmanager.service":/etc/prometheus/alertmanager.service prom/prometheus

但是邮件警报不起作用,我不知道如何修复配置,以便将所有这些顺利运行到docker容器中。正如我所说,我认为主要问题在于alertmanager.service中的ExecStart命令,但也许我错了。我在网上找不到任何有用的东西,因此我非常感谢的帮助

容器的最佳实践是针对每个容器运行一个进程。

在您的容器中,这为prom/prometheus建议一个容器,为prom/alertmanager建议另一个容器。

您可以使用docker作为运行这些

docker run 
--detach 
--name=prometheus 
--volume=${PWD}:/prometheus.yml:/etc/prometheus/prometheus.yml 
--volume=${PWD}:/rules.yml:/etc/alertmanager/rules.yml 
--publish=9090:9090 
prom/prometheus:v2.26.0 
--config.file=/etc/prometheus/promtheus.yml
docker run 
--detach 
--name=alertmanager 
--volume=${PWD}:/rules.yml:/etc/alertmanager/rules.yml 
--publish=9093:9093 
prom/alertmanager:v0.21.0

当你运行多个容器时,一个好的工具是Docker Compose,在这种情况下,你的docker-compose.yml可能是:

version: "3"
services:
prometheus:
restart: always
image: prom/prometheus:v2.26.0
container_name: prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml
- ${PWD}/rules.yml:/etc/alertmanager/rules.yml
expose:
- "9090"
ports:
- 9090:9090
alertmanager:
restart: always
depends_on:
- prometheus
image: prom/alertmanager:v0.21.0
container_name: alertmanager
volumes:
- ${PWD}/alertmanager.yml:/etc/alertmanager/alertmanager.yml
expose:
- "9093"
ports:
- 9093:9093

你可以:

docker-compose up

在任何一种情况下,您都可以浏览:

  • 主机端口9090上的普罗米修斯,即localhost:9090
  • 主机端口9093上的Alert Manager,即localhost:9093

最新更新