@Docker Compose部署Alertmanager

news2025/6/3 12:26:21

文章目录

    • Docker Compose部署Alertmanager
      • 1. 准备工作
        • 1.1 系统要求
        • 1.2 目录结构准备
      • 2. 配置文件准备
        • 2.1 创建docker-compose.yml文件
        • 2.2 创建Alertmanager配置文件
      • 3. 部署Alertmanager
        • 3.1 启动服务
        • 3.2 验证服务状态
        • 3.3 检查日志
      • 4. 服务验证
        • 4.1 访问Web UI
      • 4.2 API健康检查
      • 5. 维护操作
        • 5.1 停止服务
        • 5.2 更新服务
        • 5.3 备份数据
      • 6. 集成配置(可选)
        • 6.1 与Prometheus集成
        • 6.2 配置告警规则
      • 7. 安全建议
      • 8. 故障排查
        • 8.1 常见问题
        • 8.2 检查工具

Docker Compose部署Alertmanager

1. 准备工作

1.1 系统要求
  • 已安装Docker Engine (版本18.06.0+)
  • 已安装Docker Compose (版本1.25.0+)
  • 服务器资源:
    • CPU: 至少1核
    • 内存: 至少512MB
    • 磁盘空间: 至少100MB
1.2 目录结构准备
mkdir -p /app/alertmanager/{config,data}
chmod -R 777 /app/alertmanager/data

2. 配置文件准备

2.1 创建docker-compose.yml文件
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配置文件
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 启动服务
cd /app/alertmanager
docker-compose up -d
3.2 验证服务状态
docker-compose ps

预计输出:
     Name                    Command               State           Ports
--------------------------------------------------------------------------------
alertmanager   /bin/alertmanager --config.f ...   Up      0.0.0.0:9093->9093/tcp
3.3 检查日志
docker-compose logs -f

4. 服务验证

4.1 访问Web UI

打开浏览器访问: http://<服务器IP>:9093

4.2 API健康检查

curl http://localhost:9093/api/v2/status
预期输出应包含Alertmanager的运行状态信息

5. 维护操作

5.1 停止服务
docker-compose down
5.2 更新服务
docker-compose pull
docker-compose up -d
5.3 备份数据
tar -czvf alertmanager_backup_$(date +%Y%m%d).tar.gz /app/alertmanager/data /opt/alertmanager/config

6. 集成配置(可选)

6.1 与Prometheus集成

在Prometheus的配置文件中添加以下内容:

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 检查工具
docker exec -it alertmanager amtool check-config /etc/alertmanager/alertmanager.yml

以上为使用Docker Compose部署Alertmanager的标准操作流程。根据实际环境调整配置参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2394943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试-jmeter实战1

课程&#xff1a;B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战1 为什么需要性能测试呢&#xff1f;性能测试的作用&#xff1f;性能测试体系性能测试基础性能测试工具性能监控…

杏仁海棠花饼的学习日记第十四天CSS

一&#xff0c;前言 第二天&#xff0c;今天看CSS。 二&#xff0c;CSS简介及导入方式 CSS简介 CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于描述 HTML 或 XML&#xff08;包括 SVG、XHTML 等&#xff09;文档呈现效果的样式语言。…

ESP8266远程控制:实现网络通信与设备控制

概述&#xff1a; 最近一直在弄esp8266的网络通信&#xff0c;但是一直都还没搞懂到底esp8266可不可以通过连接一个网络过后&#xff0c;在很远的地方使用网络将其关掉 在网上找了两个教程都有程序&#xff0c;都跑通了 第一个 第二个找不到了&#xff0c;但是程序有 CSDN上放文…

【机器学习基础】机器学习入门核心算法:隐马尔可夫模型 (HMM)

机器学习入门核心算法&#xff1a;隐马尔可夫模型 &#xff08;HMM&#xff09; 一、算法逻辑与核心思想二、算法原理与数学推导核心问题与算法推导 三、模型评估四、应用案例1. 语音识别 (Speech Recognition)2. 自然语言处理 (Natural Language Processing - NLP)3. 手写体识…

Leetcode 2819. 购买巧克力后的最小相对损失

1.题目基本信息 1.1.题目描述 现给定一个整数数组 prices&#xff0c;表示巧克力的价格&#xff1b;以及一个二维整数数组 queries&#xff0c;其中 queries[i] [ki, mi]。 Alice 和 Bob 去买巧克力&#xff0c;Alice 提出了一种付款方式&#xff0c;而 Bob 同意了。 对于…

AI炼丹日志-25 - OpenAI 开源的编码助手 Codex 上手指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完毕目前开始更新 Spring&#xff0c;一起深入浅出&#xff01; 大数据篇 300&#xff1a; Hadoop&…

C# 类和继承(使用基类的引用)

使用基类的引用 派生类的实例由基类的实例和派生类新增的成员组成。派生类的引用指向整个类对象&#xff0c;包括 基类部分。 如果有一个派生类对象的引用&#xff0c;就可以获取该对象基类部分的引用&#xff08;使用类型转换运算符把 该引用转换为基类类型&#xff09;。类…

进程间通信(消息队列)

目录 一 原理 二 API 1. ftok 2. msgget 3. msgctl 4. msgsnd 5. msgrcv 三 demo代码 四 基于责任链模式和消息队列对数据处理 1. 什么是责任链模式 2. 下面基于责任链模式来对消息队列获取的消息进行处理 前置 其实system v 版本的进程间通信&#xff0c;设计的接…

Nginx--手写脚本压缩和切分日志(也适用于docker)

原文网址&#xff1a;Nginx--手写脚本压缩和切分日志&#xff08;也适用于docker&#xff09;_IT利刃出鞘的博客-CSDN博客 简介 本文介绍nginx如何手写脚本压缩和切分日志。 1.创建切分日志的脚本 创建脚本文件&#xff1a;/work/tmp/nginx-log_sh&#xff08;后边要用run-…

OpenCv高阶(十八)——dlib人脸检测与识别

文章目录 一、dlib库是什么&#xff1f;二、opencv库与dlib库的优缺点对比1、opencv优缺点2、dlib库优缺点 三、dlib库的安装1、在线安装2、本地安装 四、dlib库的人脸检测器1. 基于 HOG 的检测器2. 基于 CNN 的检测器 五、dlib人脸检测的简单使用1、导入必要库2、初始化人脸检…

中山大学无人机具身导航新突破!FlightGPT:迈向通用性和可解释性的无人机视觉语言导航

作者&#xff1a;Hengxing Cai 1 , 2 ^{1,2} 1,2, Jinhan Dong 2 , 3 ^{2,3} 2,3, Jingjun Tan 1 ^{1} 1, Jingcheng Deng 4 ^{4} 4, Sihang Li 2 ^{2} 2, Zhifeng Gao 2 ^{2} 2, Haidong Wang 1 ^{1} 1, Zicheng Su 5 ^{5} 5, Agachai Sumalee 6 ^{6} 6, Renxin Zhong 1 ^{1} …

WIN11+CUDA11.8+VS2019配置BundleFusion

参考&#xff1a; BundleFusion:VS2019 2017 ,CUDA11.5,win11&#xff0c;Realsense D435i离线数据包跑通&#xff0c;环境搭建 - 知乎 Win10VS2017CUDA10.1环境下配置BundleFusion - 知乎 BundleFusionWIN11VS2019 CUDA11.7环境配置-CSDN博客 我的环境&#xff1a;Win 11…

WPF prism

Prism Prism.Dryloc 包 安装 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空间, 继承由 Application → PrismApplication&#xff0c;删除默认启动 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

[Redis] Redis:高性能内存数据库与分布式架构设计

标题&#xff1a;[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis&#xff1f;一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构&#xff08;应用程序 数据库服务器&#xff09;2、应用程序和数据库服务器分离3…

React 第四十九节 Router中useNavigation的具体使用详解及注意事项

前言 useNavigation 是 React Router 中一个强大的钩子&#xff0c;用于获取当前页面导航的状态信息。 它可以帮助开发者根据导航状态优化用户体验&#xff0c;如显示加载指示器、防止重复提交等。 一、useNavigation核心用途 检测导航状态&#xff1a;判断当前是否正在进行…

【JavaEE】Spring事务

目录 一、事务简介二、Spring事务的实现2.1 事务的操作2.2 分类2.2.1 Spring编程式事务2.2.2 Spring 声明式事务 Transactional2.2.2.1 Transactional 详解2.2.2.1.1 rollbackFor2.2.2.1.2 Isolation2.2.2.1.3 propagation 一、事务简介 事务&#xff1a;事务是⼀组操作的集合…

Android15 userdebug版本不能remount

背景描述&#xff1a; 最近调试Android Vendor Hal的时候发现一个奇怪的现象: android userdebug版本刷到设备中&#xff0c;执行adb root没提示错误&#xff0c;但是没有获取到root权限。 Android设备运行的系统版本有三种情况&#xff1a;user版本、userdebug版本和eng版本…

R包安装报错解决案例系列|R包使用及ARM架构解决data.table安装错误问题

有不少同学是Mac系统的&#xff0c;分析过程中会发现部分R包总是安装不成功&#xff0c;这是因为部分R包基于windowsx86架构编译的&#xff0c;最常见的就是含 C/C/Fortran 的包&#xff0c;对于初学者都是建议linux和win去做&#xff0c;Windows 通常直接安装预编译好的二进制…

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…

Redis最佳实践——安全与稳定性保障之访问控制详解

Redis 在电商应用的安全与稳定性保障之访问控制全面详解 一、安全访问控制体系架构 1. 多层级防护体系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…