news 2026/4/15 15:21:44

SRE 运维体系:Prometheus + Grafana + AlertManager,从零搭建企业级监控告警平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SRE 运维体系:Prometheus + Grafana + AlertManager,从零搭建企业级监控告警平台

标签:#SRE #Prometheus #Grafana #DevOps #监控告警 #运维


🛡️ 前言:为什么选择“黄金三角”?

  • Prometheus:基于Pull (拉取)模型的时序数据库。哪怕你的应用挂了,Prometheus 依然活着,能准确记录“死亡时刻”。
  • Grafana:颜值即正义。它能把枯燥的 metrics 数据变成老板爱看的高大上大屏。
  • AlertManager:告警收敛神器。防止一出故障手机被 1000 条短信轰炸,它能通过分组、抑制、静默,只发最关键的那一条。

🏗️ 一、 架构设计:数据流是如何跑通的?

监控的核心逻辑:采集 -> 存储 -> 计算 -> 展示/告警

监控体系架构图 (Mermaid):

展示与通知层

核心服务层

数据采集层 (Exporters)

Pull (每15秒)

Pull

Pull

查询数据

触发阈值 (Push)

发送告警

发送邮件

Node Exporter (主机指标)

MySQL Exporter (数据库)

Java/Go App (业务埋点)

Prometheus Server (TSDB存储)

AlertManager (告警处理)

Grafana (可视化大屏)

钉钉/企微机器人

邮件/短信


🛠️ 二、 极速部署:Docker Compose 一键拉起

为了方便管理,我们将所有组件编排在一个docker-compose.yml中。

目录结构:

monitor/ ├── docker-compose.yml ├── prometheus/ │ └── prometheus.yml ├── alertmanager/ │ └── config.yml └── grafana/ └── provisioning/ (可选)

docker-compose.yml:

version:'3.8'services:# 1. Prometheus: 大脑prometheus:image:prom/prometheus:latestcontainer_name:prometheusvolumes:-./prometheus/:/etc/prometheus/-prometheus_data:/prometheuscommand:-'--config.file=/etc/prometheus/prometheus.yml'-'--storage.tsdb.retention.time=15d'# 数据保留15天ports:-"9090:9090"# 2. Grafana: 脸面grafana:image:grafana/grafana:latestcontainer_name:grafanaports:-"3000:3000"volumes:-grafana_data:/var/lib/grafana# 3. AlertManager: 喉舌alertmanager:image:prom/alertmanager:latestcontainer_name:alertmanagerports:-"9093:9093"volumes:-./alertmanager/:/etc/alertmanager/command:-'--config.file=/etc/alertmanager/config.yml'# 4. Node Exporter: 采集器 (监控本机)node-exporter:image:prom/node-exporter:latestcontainer_name:node-exporterports:-"9100:9100"volumes:prometheus_data:grafana_data:

🧠 三、 配置 Prometheus:连接采集器与告警器

编写prometheus/prometheus.yml

global:scrape_interval:15s# 每15秒抓一次数据# 关联 AlertManageralerting:alertmanagers:-static_configs:-targets:['alertmanager:9093']# 告警规则文件 (后面会写)rule_files:-"rules/*.yml"# 抓取目标scrape_configs:-job_name:'prometheus'static_configs:-targets:['localhost:9090']-job_name:'node'static_configs:-targets:['node-exporter:9100']# 抓取本机指标

📊 四、 配置 Grafana:点亮监控大屏

  1. 启动服务:docker-compose up -d
  2. 访问http://localhost:3000(默认账号 admin/admin)。
  3. 添加数据源:Configuration -> Data Sources -> Add -> 选择 Prometheus -> URL 填http://prometheus:9090-> Save & Test。
  4. 导入仪表盘 (Dashboard)
  • 不要自己画图!去 Grafana 官网找现成的模板。
  • 推荐 ID:1860(Node Exporter Full)。
  • 点击 Import -> 输入 1860 -> Load -> 选择刚才的数据源 -> Import。

效果:瞬间拥有了一个包含 CPU、内存、磁盘 IO、网络流量的专业级服务器监控面板。


🚨 五、 告警实战:从“CPU 飙高”到“钉钉通知”

监控不告警,等于没监控。

1. 定义告警规则 (prometheus/rules/host.yml)

我们在 Prometheus 端定义“什么是故障”。

groups:-name:HostAlertsrules:-alert:HighCpuUsage# 表达式: CPU 使用率 > 80% 持续 1分钟expr:(100-(avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100))>80for:1mlabels:severity:warningannotations:summary:"实例 {{ $labels.instance }} CPU 过高"description:"当前 CPU 使用率: {{ $value }}%"
2. 配置告警发送 (alertmanager/config.yml)

在 AlertManager 端定义“故障发给谁”。推荐使用 Webhook 对接钉钉或企业微信群机器人。

global:resolve_timeout:5mroute:group_by:['alertname']group_wait:10sgroup_interval:10srepeat_interval:1h# 1小时内不重复轰炸receiver:'dingtalk'receivers:-name:'dingtalk'webhook_configs:# 这里推荐使用专门的 prometheus-webhook-dingtalk 转换器# 或者直接写一个简单的 Python/Go 服务接收 JSON 并转发给钉钉-url:'http://webhook-adapter:8060/dingtalk/send'

☕ 六、 企业级 SRE 进阶建议

搭建好只是第一步,要达到企业级标准,还需注意以下痛点:

  1. 服务发现 (Service Discovery)
    不要在prometheus.yml里写死 IP。线上机器经常扩缩容,建议使用ConsulKubernetes (ServiceMonitor)进行自动发现。
  2. 存储瓶颈
    Prometheus 本地存储不适合存长期数据。如果需要查看 1 年前的趋势,建议通过 Remote Write 对接VictoriaMetricsThanos
  3. 告警收敛
    当核心交换机挂了,下面 100 台服务器都会报“网络不可达”。
    需要在 AlertManager 配置inhibit_rules(抑制规则):如果交换机挂了,就屏蔽掉所有服务器的告警,只发一条交换机故障的通知。

🎯 总结

通过 Prometheus + Grafana + AlertManager,我们构建了一套闭环的监控运维体系。

  • 采集:看到系统的每一个毛孔。
  • 可视化:让数据会说话。
  • 告警:在用户投诉前发现问题。

对于 SRE 来说,监控不是为了证明系统有多好,而是为了在系统变坏时,我们能第一个知道。

Next Step:
尝试编写一个简单的Python Exporter。只用不到 20 行代码,通过prometheus_client库,把你关注的业务指标(如“今日订单数”、“接口报错率”)暴露出来,并在 Grafana 上画出折线图。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 10:13:09

python基于flask框架的健身运动比赛服务饮食推荐平台设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 健身运动比赛服务饮食推荐平台基于Flask框架设计,旨在为运动员和健身爱好者提供个性化的饮食建议与赛事服务。平台…

作者头像 李华
网站建设 2026/3/24 4:19:59

炉石传说脚本完整使用指南:从零基础到精通

炉石传说脚本完整使用指南:从零基础到精通 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script …

作者头像 李华
网站建设 2026/4/15 14:45:07

RAG优化策略终极指南:17种方法全对比+选型建议,开发者必藏!

文章详细解析了RAG系统的17种优化策略,包括基础检索、语义切分、小块查大块答等方法,对比各策略的检索精度、响应速度和技术成本,并通过GPT评分评估效果。文章提供了基于应用场景和数据特征的选型建议,帮助开发者根据精度需求和预…

作者头像 李华
网站建设 2026/4/15 14:44:40

MySQL数据可视化实战指南

MySQL 数据可视化的基础概念数据可视化与MySQL的关系:MySQL作为数据存储工具,如何为可视化提供结构化数据常见可视化场景:报表、仪表盘、趋势分析等关键工具与技术栈:MySQL 可视化工具(如Tableau、Power BI、Metabase…

作者头像 李华
网站建设 2026/4/15 14:46:27

玩转Linux命令:创意组合大赛全攻略

Linux命令创意组合大赛技术文章大纲大赛背景与意义Linux命令组合的灵活性与强大功能 创意组合在实际运维、开发中的价值 大赛对技术社区和技能提升的推动作用参赛要求与规则参赛者需使用基础Linux命令进行组合 禁止使用危险命令(如rm -rf /) 评判标准&am…

作者头像 李华
网站建设 2026/4/15 14:46:28

如何在3分钟内为Windows 11 LTSC系统安装微软商店:完整指南

如何在3分钟内为Windows 11 LTSC系统安装微软商店:完整指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 当你在使用Windows 11 LTSC企业…

作者头像 李华