@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: '[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. 安全建议

  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的标准操作流程。根据实际环境调整配置参数

相关推荐
沙滩小岛小木屋1 小时前
docker中,容器时间和宿机主机时间不一致问题
运维·docker·容器
IT里的交易员3 小时前
【C盘瘦身】Docker安装目录占用C盘过大,一键移动给C盘瘦身
运维·docker·容器
一张假钞10 小时前
Linux 系统 Docker Compose 安装
linux·运维·docker
Twilight-pending12 小时前
K8s工作流程与YAML实用指南
云原生·容器·kubernetes
zhanglb1214 小时前
liunx - 麒麟系统v10 SP1 执行脚本文件
linux·docker
k8s-open15 小时前
跨架构镜像打包问题及解决方案
macos·docker·容器·架构
xrz27717 小时前
docker部署ELK,ES开启安全认证
elk·elasticsearch·docker
mosaicwang19 小时前
创建ipv6 only和ipv6+ip4的k8s集群的注意事项
云原生·容器·kubernetes
KubeSphere 云原生1 天前
基于 KubeKey 3.1.9,快速部署 K8s 1.33.0 高可用集群
云原生·容器·kubernetes
MyikJ1 天前
Java 面试实录:从Spring到微服务的技术探讨
java·spring boot·微服务·kafka·spring security·grafana·prometheus