在 Docker 中部署 Alertmanager(通常與 Prometheus 告警系統配合使用)的步驟如下:
一、拉取鏡像prom/alertmanager
docker pull prom/alertmanager
二、 創建 Alertmanager 配置文件
首先準備Alertmanager的配置文件 alertmanager.yml(如存放在 ./alertmanager/ 目錄下):
# ./alertmanager/alertmanager.yml
global:resolve_timeout: 5msmtp_smarthost: 'smtp.example.com:25'smtp_from: 'alertmanager@example.com'
route:group_by: ['alertname']group_wait: 10sgroup_interval: 5mrepeat_interval: 3hreceiver: 'email-notifications'
receivers:
- name: 'email-notifications'email_configs:- to: 'team@example.com'
三、創建 Docker 運行命令
使用以下命令啟動 Alertmanager 容器:
docker run -d \--name alertmanager \--network prometheus-net \ # 可選:與 Prometheus 同一網絡-p 9093:9093 \ # 暴露 Alertmanager 默認端口-v $(pwd)/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \-v $(pwd)/alertmanager/data:/alertmanager \ # 持久化數據(如靜默規則)prom/alertmanager:latest \--config.file=/etc/alertmanager/alertmanager.yml \--storage.path=/alertmanager/data
參數說明:
–network:如果與 Prometheus 容器互通,建議使用同一 Docker 網絡。
-v:掛載配置文件和數據目錄(確保本地目錄存在)。
–config.file:指定配置文件路徑(容器內路徑)。
–storage.path:持久化數據存儲路徑。
四、驗證部署
檢查容器狀態:
docker ps | grep alertmanager
訪問 Web 界面:
打開瀏覽器訪問 http://<服務器IP>:9093,應看到 Alertmanager 的 Web UI。
五、集成 Prometheus
在 Prometheus 的配置文件 prometheus.yml 中添加 Alertmanager 的地址:
alerting:alertmanagers:- static_configs:- targets: ["alertmanager:9093"] # 若在同一 Docker 網絡,可直接用容器名
重啟 Prometheus 容器使配置生效。
六、使用 Docker Compose
創建 docker-compose.yml 文件簡化管理:
version: '3'
services:alertmanager:image: prom/alertmanager:latestcontainer_name: alertmanagerports:- "9093:9093"volumes:- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml- ./alertmanager/data:/alertmanagercommand:- '--config.file=/etc/alertmanager/alertmanager.yml'- '--storage.path=/alertmanager/data'restart: unless-stopped
啟動服務:
docker-compose up -d
通過以上步驟,Alertmanager 即可在 Docker 中運行并接收 Prometheus 的告警通知。根據實際需求調整配置文件中的路由規則和接收器(如 Webhook、Slack 等)。
常見問題
1)配置文件錯誤:
使用 --log.level=debug 參數啟動容器,查看日志排查配置錯誤:
docker logs alertmanager
2)持久化數據:
確保 data 目錄掛載正確,否則重啟后靜默規則等數據會丟失。
3)網絡互通:
若 Prometheus 無法連接 Alertmanager,檢查兩者是否在同一 Docker 網絡
PS:需要筆記資料可以聯系老師獲取
VX:chuansinfo_sz