Mac 不支持 brew 部署 Alertmanager,改为用 Docker 部署 Alertmanager,这是最简洁、隔离性最好的方式之一。
下面是完整可用的命令、挂载配置和与 Prometheus 的联动示例。
🧩 一、准备工作
在你的 macOS 上确保:
docker --version
输出版本信息即可。
创建配置目录:
mkdir -p ~/alertmanager
cd ~/alertmanager
手动下载 Alertmanager(macOS 手动方式)所需要的配置文件:
cd ~/Downloads
curl -LO https://github.com/prometheus/alertmanager/releases/latest/download/alertmanager-0.29.0-rc.1.darwin-amd64.tar.gz
tar -xvf alertmanager-0.29.0-rc.1.darwin-amd64.tar.gz
mv alertmanager-0.29.0-rc.1.darwin-amd64 ~/alertmanager
cd ~/alertmanager
这样 ~/alertmanager 目录下就有了对应的配置
~/alertmanager/alertmanager
~/alertmanager/amtool
~/alertmanager/alertmanager.yml (模板配置)
如果 curl 下载失败,可以使用代理模式:
export https_proxy=http://127.0.0.1:8118
export http_proxy=http://127.0.0.1:8118
⚙️ 二、创建配置文件 alertmanager.yml
vim 修改~/alertmanager/alertmanager.yml:
global:
smtp_smarthost: 'smtp.qiye.aliyun.com:465'
# smtp_smarthost: 'smtp.mxhichina.com:465' # 阿里邮箱SMTP服务器
smtp_from: 'you.chang@antank.com' # 发信邮箱
smtp_auth_username: 'you.chang@xxx.com' # 登录用户名
smtp_auth_password: 'xxxxxxx' # 登录密码(见下方说明)
smtp_require_tls: false # 若使用465端口(SSL),需关闭TLS,否则报错
route:
receiver: 'email-alert'
receivers:
- name: 'email-alert'
email_configs:
- to: 'changyou0730@163.com'
send_resolved: true
# 若想先测试,可以改成简单日志输出版本:
# receivers:
# - name: "default-receiver"
# webhook_configs:
# - url: "http://127.0.0.1:5001"
🚀 三、启动 Alertmanager 容器
删除旧容器(推荐)
docker stop alertmanager
docker rm alertmanager
重新运行命令:
docker run -d \
--name alertmanager \
-p 9093:9093 \
-v ~/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
prom/alertmanager:latest
说明:
-
-d后台运行 -
-p 9093:9093映射本地端口 -
-v挂载配置文件 -
prom/alertmanager:latest是官方镜像(Prometheus 官方维护)
🌐 四、访问 Web UI
浏览器打开:
http://localhost:9093
如果显示 Alertmanager 界面(空白列表),说明启动成功 ✅
🔗 五、与 Prometheus 联动
在 prometheus.yml 中添加:
alerting:
alertmanagers:
- static_configs:
- targets:
- "host.docker.internal:9093"
💡 macOS 上用 Docker 时,
Prometheus 若运行在宿主机,访问容器时使用host.docker.internal,
若 Prometheus 也运行在 Docker 内,可用容器名alertmanager:9093。
🧠 六、(可选)定义测试告警规则
例如在 alert_rules.yml:
groups:
- name: test_rules
rules:
- alert: TestAlert
expr: vector(1)
for: 30s
labels:
severity: warning
annotations:
summary: "测试告警"
description: "Prometheus 触发测试告警"
Prometheus 启动后 30 秒内就会触发一个测试告警,
Alertmanager 页面就能看到。
或者,手动测试一下:
curl -XPOST http://localhost:9093/api/v2/alerts \
-H 'Content-Type: application/json' \
-d '[
{
"labels": {
"alertname": "EmailTest",
"severity": "critical"
},
"annotations": {
"summary": "This is a test alert from Alertmanager Docker"
},
"startsAt": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"
}
]'
📊 七、查看日志
docker logs -f alertmanager
可以看到告警接收、抑制、发送的详细日志。
🧩 八、常见问题
| 问题 | 解决方法 |
|---|---|
| 修改配置不生效 | 重新加载配置:docker exec alertmanager kill -HUP 1 或重启容器 |
| 宿主机 Prometheus 无法连接容器 | 使用 host.docker.internal 而非 localhost
|
| Web 页面无告警 | 确认 Prometheus 已触发告警并正确配置 alertmanagers 目标 |
✅ 总结
| 目标 | 命令 |
|---|---|
| 启动 Alertmanager | docker run -d -p 9093:9093 -v ~/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager |
| 查看 Web UI | http://localhost:9093 |
| 查看日志 | docker logs -f alertmanager |
| 停止容器 | docker stop alertmanager && docker rm alertmanager |