文章目录
-
- [Docker Compose部署Alertmanager](#Docker Compose部署Alertmanager)
-
- [1. 准备工作](#1. 准备工作)
-
- [1.1 系统要求](#1.1 系统要求)
- [1.2 目录结构准备](#1.2 目录结构准备)
- [2. 配置文件准备](#2. 配置文件准备)
-
- [2.1 创建docker-compose.yml文件](#2.1 创建docker-compose.yml文件)
- [2.2 创建Alertmanager配置文件](#2.2 创建Alertmanager配置文件)
- [3. 部署Alertmanager](#3. 部署Alertmanager)
-
- [3.1 启动服务](#3.1 启动服务)
- [3.2 验证服务状态](#3.2 验证服务状态)
- [3.3 检查日志](#3.3 检查日志)
- [4. 服务验证](#4. 服务验证)
-
- [4.1 访问Web UI](#4.1 访问Web UI)
- [4.2 API健康检查](#4.2 API健康检查)
- [5. 维护操作](#5. 维护操作)
-
- [5.1 停止服务](#5.1 停止服务)
- [5.2 更新服务](#5.2 更新服务)
- [5.3 备份数据](#5.3 备份数据)
- [6. 集成配置(可选)](#6. 集成配置(可选))
-
- [6.1 与Prometheus集成](#6.1 与Prometheus集成)
- [6.2 配置告警规则](#6.2 配置告警规则)
- [7. 安全建议](#7. 安全建议)
- [8. 故障排查](#8. 故障排查)
-
- [8.1 常见问题](#8.1 常见问题)
- [8.2 检查工具](#8.2 检查工具)
Docker Compose部署Alertmanager
1. 准备工作
1.1 系统要求
- 已安装Docker Engine (版本18.06.0+)
- 已安装Docker Compose (版本1.25.0+)
- 服务器资源:
- CPU: 至少1核
- 内存: 至少512MB
- 磁盘空间: 至少100MB
1.2 目录结构准备
bash
mkdir -p /app/alertmanager/{config,data}
chmod -R 777 /app/alertmanager/data
2. 配置文件准备
2.1 创建docker-compose.yml文件
bash
cat > /app/alertmanager/docker-compose.yml << 'EOF'
version: '3.8'
services:
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
restart: unless-stopped
volumes:
- ./config/alertmanager.yml:/etc/alertmanager/alertmanager.yml
- ./data:/alertmanager
ports:
- "9093:9093"
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
networks:
- alertmanager-net
networks:
alertmanager-net: # 替换为部署的prometheus-net
driver: bridge
EOF
2.2 创建Alertmanager配置文件
bash
cat > /app/alertmanager/config/alertmanager.yml << 'EOF'
global:
# 全局配置
resolve_timeout: 5m # 5分钟内未收到新告警则标记为"已解决"
smtp_smarthost: 'smtp.example.com:587' # SMTP服务器
smtp_from: '[email protected]' # 发件人邮箱
smtp_auth_username: 'usernamem' # SMTP用户名
smtp_auth_password: 'password' # SMTP密码
smtp_require_tls: true # 启用TLS
# 告警路由树配置
route:
receiver: 'default-receiver' # 默认接收组
group_by: ['alertname', 'env'] # 按告警名称和环境分组
group_wait: 30s # 初始等待时间(同一组内新告警等待30秒再发送)
group_interval: 5m # 相同组告警间隔时间
repeat_interval: 4h # 相同告警重复发送间隔
routes: # 子路由(根据标签匹配不同接收方)
- match:
severity: 'critical'
receiver: 'critical-alerts'
continue: true # 继续匹配后续路由
- match_re:
service: '(mysql|redis)'
receiver: 'database-team'
# 接收方配置
receivers:
- name: 'default-receiver'
email_configs:
- to: '[email protected]'
send_resolved: true # 发送恢复通知
headers:
subject: '[Alert] {{ .CommonLabels.alertname }} ({{ .CommonLabels.severity }})'
- name: 'critical-alerts'
email_configs:
- to: '[email protected]'
slack_configs: # Slack通知
- api_url: 'https://hooks.slack.com/services/TXXXXXX/BXXXXXX/XXXXXX'
channel: '#alerts-critical'
title: 'CRITICAL: {{ .CommonLabels.alertname }}'
text: |-
*Description*: {{ .CommonAnnotations.description }}
*Environment*: {{ .CommonLabels.env }}
*Details*:
{{ range .Alerts }} • {{ .Labels.instance }}: {{ .Annotations.summary }}
{{ end }}
- name: 'database-team'
wechat_configs: # 企业微信通知
- api_secret: 'your-wecom-secret'
corp_id: 'your-corp-id'
agent_id: '1000002'
to_user: '@all'
message: |-
**数据库告警**
类型: {{ .CommonLabels.alertname }}
实例: {{ .CommonLabels.instance }}
摘要: {{ .CommonAnnotations.summary }}
# 抑制规则(避免重复告警)
inhibit_rules:
- source_match: # 当存在严重级别为critical的告警时...
severity: 'critical'
target_match: # 抑制严重级别为warning的相同告警
severity: 'warning'
equal: ['alertname', 'env'] # 需匹配的标签
EOF
3. 部署Alertmanager
3.1 启动服务
bash
cd /app/alertmanager
docker-compose up -d
3.2 验证服务状态
bash
docker-compose ps
预计输出:
Name Command State Ports
--------------------------------------------------------------------------------
alertmanager /bin/alertmanager --config.f ... Up 0.0.0.0:9093->9093/tcp
3.3 检查日志
bash
docker-compose logs -f
4. 服务验证
4.1 访问Web UI
打开浏览器访问: http://<服务器IP>:9093
4.2 API健康检查
bash
curl http://localhost:9093/api/v2/status
预期输出应包含Alertmanager的运行状态信息
5. 维护操作
5.1 停止服务
bash
docker-compose down
5.2 更新服务
bash
docker-compose pull
docker-compose up -d
5.3 备份数据
bash
tar -czvf alertmanager_backup_$(date +%Y%m%d).tar.gz /app/alertmanager/data /opt/alertmanager/config
6. 集成配置(可选)
6.1 与Prometheus集成
在Prometheus的配置文件中添加以下内容:
bash
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
6.2 配置告警规则
在Prometheus的告警规则文件中添加相关规则。
7. 安全建议
- 建议配置TLS加密访问
- 建议配置基础认证或OAuth2认证
- 定期备份配置文件和数据
- 限制访问端口9093的IP范围
8. 故障排查
8.1 常见问题
- 端口冲突: 检查9093端口是否被占用
- 配置文件错误: 使用
amtool check-config
验证配置文件 - 权限问题: 确保数据目录有正确权限
8.2 检查工具
bash
docker exec -it alertmanager amtool check-config /etc/alertmanager/alertmanager.yml
以上为使用Docker Compose部署Alertmanager的标准操作流程。根据实际环境调整配置参数