news 2026/4/23 15:57:28

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/23 10:49:44

解锁AI原生应用与向量数据库的协同奥秘

解锁AI原生应用与向量数据库的协同奥秘 关键词:AI原生应用、向量数据库、向量嵌入、相似度检索、多模态AI 摘要:当AI从“工具”进化为“原生能力”,当数据从“表格”变为“高维向量”,一场关于智能应用的革命正在发生。本文将用“奶茶店点单”“图书馆找书”等生活化案例,…

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

Spring Boot @GetMapping注解:从应用到原理深度解析

在Spring Boot Web开发中,GetMapping是我们最常用的注解之一,它简洁高效地实现了HTTP GET请求与处理器方法的绑定。本文将从「应用实践」和「底层原理」两个核心维度,带你全面掌握这个注解——既会教你如何灵活运用,也会拆解其背后…

作者头像 李华
网站建设 2026/4/23 12:22:22

.NET微服务架构:从WebAPI到Docker实战

你列出的这些技术栈(.NET Core、RabbitMQ、EF Core、Web API、TCP、Swagger、Linux、Docker)构成了一个典型的现代化微服务或分布式系统开发环境。下面我为你简要梳理它们各自的角色,并提供一些整合建议和最佳实践:1. .NET Core&a…

作者头像 李华
网站建设 2026/4/23 8:25:03

MySQL数据可视化全流程解析

MySQL 数据可视化的核心流程数据准备与清洗 确保数据质量是可视化的基础,通过 SQL 查询筛选、聚合和转换数据。例如使用 WHERE 过滤无效值,GROUP BY 进行分组统计,JOIN 合并多表数据。连接可视化工具 主流工具如 Tableau、Power BI 或 Python…

作者头像 李华
网站建设 2026/4/23 13:44:59

VMware数据恢复收费情况亲测分享

数据恢复行业分析:金海境科技的卓越表现 行业痛点分析 在数据恢复领域,面临着诸多技术挑战。随着数字化进程加速,数据量爆发式增长,存储设备故障、软件系统崩溃、人为误删除等情况频繁出现,导致数据丢失风险大增。据…

作者头像 李华