@Docker Compose部署Alertmanager

文章目录

    • [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: 'alertmanager@example.com'  # 发件人邮箱
  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: 'user@outlook.com'
    send_resolved: true  # 发送恢复通知
    headers:
      subject: '[Alert] {{ .CommonLabels.alertname }} ({{ .CommonLabels.severity }})'

- name: 'critical-alerts'
  email_configs:
  - to: 'user@outlook.com'
  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. 安全建议

  1. 建议配置TLS加密访问
  2. 建议配置基础认证或OAuth2认证
  3. 定期备份配置文件和数据
  4. 限制访问端口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的标准操作流程。根据实际环境调整配置参数

相关推荐
天一生水water7 小时前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
Qayrup9 小时前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
郭庆汝10 小时前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵11 小时前
Ubuntu24.04安装Docker过程记录
docker
黑黍12 小时前
如何在k8s中配置并使用nvidia显卡
云原生·容器·kubernetes
梁正雄12 小时前
6、prometheus资源规划
运维·服务器·服务发现·prometheus·监控
冷血~多好12 小时前
使用docker部署elk,实现日志追踪
elk·docker·容器
会飞的小蛮猪12 小时前
SkyWalking运维之路(Java探针接入)
java·运维·经验分享·容器·skywalking
天一生水water13 小时前
docker-compose安装
运维·docker·容器
蓝象_14 小时前
docker安装配置mysql
mysql·docker·容器