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 上画出折线图。

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

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

相关文章

Canvas 性能极限:如何渲染 10 万个动态粒子而不掉帧?OffscreenCanvas 是关键

标签&#xff1a; #FrontEnd #Canvas #Performance #WebWorker #OffscreenCanvas #Visualization&#x1f422; 前言&#xff1a;主线程的“堵车”现场 在传统的 <canvas> 动画中&#xff0c;我们通常使用 requestAnimationFrame。 function loop() {updatePhysics(); //…

基于SpringBoot的实习实践系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的实习实践系统&#xff0c;以满足现代企业对实习生管理及实践需求。具体研究目的如下&#xff1a;构建一个功能完善…

鸿蒙 Map Kit 实战:调用华为地图服务,开发一个“周边美食搜索”原子化服务卡片

标签&#xff1a; #HarmonyOS #MapKit #SiteKit #元服务 #ArkTS #LBS&#x1f371; 前言&#xff1a;当 LBS 遇上万能卡片 传统的找店流程&#xff1a;解锁手机 -> 找 App -> 点击启动 -> 等广告 -> 搜索“美食” -> 筛选附近。 鸿蒙元服务流程&#xff1a;点亮…

R语言的贝叶斯网络模型的实践

在现代的生态、环境以及地学研究中&#xff0c;变量和变量间的因果关系推断占据了非常重要的地位。在实践中&#xff0c;变量间的因果关系研究往往求助于昂贵的实验&#xff0c;但所得结果又经常与天然环境中的实际因果联系相差甚远。统计学方法是研究天然环境中变量间关系的好…

收藏!5个递进式AI项目,让你从普通开发者跃升15万年薪架构师

AI领域正经历深刻分化&#xff0c;大多数开发者仍构建简单API封装&#xff0c;而市场急需能处理生产级复杂性的系统架构师。两者薪资差距高达15万美元。本文系统介绍5个递进式项目&#xff1a;从入门级移动应用到大师级自主工作流&#xff0c;帮助掌握编排、记忆系统和本地推理…

Bigtreetech M8P + CB2 烧写klipper 详细指南

文章目录烧写前准备烧写系统烧录系统到 eMMC1、下载烧录文件2、确保“烧录前准备完成”3、安装驱动烧录完成后调整参考链接启用Klipper系统&#xff0c;调整配置打开系统串口通讯MobaXterm串口连接&#xff0c;根据图来操作成功连接效果Wifi连接操作记得往CB2上按上天线&#x…

R3nzSkin英雄联盟皮肤修改终极指南:从新手到高手的完整教程

R3nzSkin英雄联盟皮肤修改终极指南&#xff1a;从新手到高手的完整教程 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL).Everyone is welcome to help improve it. 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款功能强大…

通信原理篇---数字通信系统

核心比喻&#xff1a;从“送手写信”到“发电报”还记得模拟通信是 “邮差送手写信” 吗&#xff1f; 数字通信完全不同&#xff0c;它更像是 “发电报”。过程对比&#xff1a;你想说的话&#xff08;比如&#xff1a;“明天9点见面”&#xff09;模拟送信&#xff1a;把这句话…

提示工程架构师实战:用提示工程解决数字化转型中的「数据-业务断层」问题

提示工程架构师实战:用提示工程解决数字化转型中的「数据-业务断层」问题 一、前言:数字化转型的「隐痛」——数据与业务的「平行宇宙」 在过去10年的数字化转型浪潮中,我见过太多企业陷入这样的困境: 数据团队花费数百万搭建了数据仓库/湖,生成了几百张报表,但业务团队…

Verilog 概述

Verilog 概述 Verilog 是一种硬件描述语言&#xff08;Hardware Description Language&#xff0c;HDL&#xff09;&#xff0c;用于描述数字电路的行为和结构。它广泛应用于 FPGA、ASIC&#xff08;专用集成电路&#xff09;的设计流程中。Verilog 的设计流程通常包括设计、仿…

Rust CLI 实战:用 clap + tokio 写一个多线程“m3u8 视频下载器”,速度跑满宽带

标签&#xff1a; #Rust #Tokio #CLI #网络编程 #m3u8 #高性能&#x1f680; 前言&#xff1a;为什么是 Rust&#xff1f; 极速启动&#xff1a;编译成二进制文件&#xff0c;没有任何依赖&#xff0c;即点即用。内存安全&#xff1a;下载几千个分片&#xff0c;不用担心内存泄…

WebAssembly 图像处理:用 Rust 编写 Wasm 模块,在浏览器前端实现“本地图片压缩”

标签&#xff1a; #WebAssembly #Rust #Frontend #ImageProcessing #Wasm #Performance&#x1f4c9; 前言&#xff1a;为什么要用 Wasm 做压缩&#xff1f;方案优点缺点Server 端压缩兼容性好&#xff0c;算法可控浪费上行带宽&#xff0c;服务器 CPU 压力大JS Canvas 压缩简单…

Redis事务相关命令面试必问!

文章目录Redis事务相关的命令有哪几个&#xff1f;什么是 Redis 事务&#xff1f;Redis 事务相关的命令有哪些&#xff1f;第一部分&#xff1a;MULTI —— 开启一个事务示例代码&#xff1a;闫工小贴士&#xff1a;第二部分&#xff1a;EXEC —— 执行事务示例代码&#xff1a…

AgeMem让AI自主管理记忆,性能提升49.59%,超越现有方法8.5%,技术干货必收藏

AgeMem是阿里巴巴与武汉大学团队提出的新型记忆管理系统&#xff0c;将记忆操作通过"工具调用"方式整合进Agent策略中&#xff0c;使Agent能自主决定何时记忆、何时遗忘。该方法采用三阶段渐进式强化学习策略&#xff0c;在多个基准测试上性能提升近50%&#xff0c;显…

Java程序员必看!收藏这篇,AI大模型时代如何突破35岁危机实现自我救赎

Java程序员在AI时代面临技术更新、竞争加剧和年龄焦虑等危机。本文指出AI是赋能工具而非敌人&#xff0c;程序员可通过学习AI技术成为"AIJava"复合型人才。建议从基础概念入手&#xff0c;掌握Python和AI工具&#xff0c;通过实践积累经验&#xff0c;实现从开发者到…

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

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

从焦虑到逆袭:30岁前端开发者的全栈+AI转型实战,干货路线图建议收藏

文章是一位30岁前端开发者的转型自述&#xff0c;讲述了他在AI时代面临的职业焦虑和转型决心。作者认为纯前端技能在AI冲击下护城河太浅&#xff0c;决定转型"全栈AI独立开发"。他详细规划了三阶段学习路线&#xff1a;第一阶段用Next.jsSupabase突破舒适区&#xff…

计算机就业真相:AI岗位暴涨39.62%,传统开发降温!程序员必看,收藏这篇转型指南

2024-2025年计算机就业呈现"冷热分化"现象&#xff1a;AI相关岗位需求暴增(机器学习工程师涨39.62%)&#xff0c;传统开发岗位需求下降。AI不是替代程序员&#xff0c;而是筛选工具&#xff0c;淘汰只会写重复代码的人&#xff0c;留下会用AI提效的人。未来"AI技…

7年前端老鸟的崩溃时刻:AI一天写完我一周的代码,收藏这篇焦虑自救指南

一位7年前端开发者分享使用AI完成项目的震撼经历&#xff0c;表达对职业价值危机的焦虑。AI技术迅猛发展&#xff0c;能快速生成代码&#xff0c;让传统编程技能面临挑战。作者尝试通过跳槽、写博客等方式应对&#xff0c;但仍对未来不确定。文章引发技术人员思考&#xff1a;在…

2026必备!本科生论文难题TOP10 AI论文平台测评

2026必备&#xff01;本科生论文难题TOP10 AI论文平台测评 2026年本科生论文写作工具测评&#xff1a;如何选择高效助手 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI论文平台来提升写作效率、优化内容质量。然而&#xff0c;面对市场上琳琅满目的工具&a…