一、监控体系概述:为什么需要监控、黄金指标与分层架构

大家好,我是你们的讲师。今天咱们聊聊监控体系。

说实话,我见过太多团队把监控当成「装个 Prometheus + Grafana 就完事了」。结果呢?线上出了故障,翻半天仪表盘找不到根因。为什么?因为没搞懂监控的本质。

这一章,我会把监控的「为什么」、「看什么」、「怎么搭」讲透。嗯,都是我在生产环境里摔过的坑换来的经验。

1.1 为什么需要监控?

先问个问题:没有监控,你能活吗?

能。但活不久。

我早年带过一个项目,上线后一切正常。直到有一天,用户反馈「页面打不开」。我们登录服务器一看——磁盘满了。日志文件把 500GB 的盘撑爆了。你说尴尬不尴尬?

监控的核心价值,说白了就三件事:

  • 发现问题:别等用户骂上门,你才知道系统挂了
  • 定位问题:出故障了,能快速缩小范围,而不是全员瞎猜
  • 预测问题:磁盘快满了、内存快爆了,提前告警,别等崩了再救

一句话总结:监控不是给老板看的仪表盘,而是你作为 SRE 的「眼睛」和「手」。

1.2 监控的黄金指标

指标那么多,看哪些才管用?

业界总结了三套方法论:USERED四大黄金信号。我一个个说。

1.2.1 USE 方法(资源视角)

USE 是 Brendan Gregg 提出的,专门用来排查资源瓶颈。三个字母对应:

  • Utilization(利用率):资源忙了多久?比如 CPU 90%
  • Saturation(饱和度):资源排队了没?比如 CPU 运行队列长度
  • Errors(错误):资源出错了没?比如磁盘 I/O 错误

我习惯用 USE 来快速判断「是不是资源问题」。举个例子:

有一次线上接口变慢,我第一反应是看 CPU 利用率——不高。再看磁盘饱和度——IO 队列深度飙到 200+。嗯,找到根因了:磁盘 I/O 饱和。加个 SSD 缓存就解决了。

我的经验:USE 适合基础设施层(服务器、网络、存储)。应用层不太适用。

1.2.2 RED 方法(服务视角)

RED 是 Google 的 SRE 团队提出的,专门看服务健康度:

  • Rate(速率):每秒多少请求?
  • Errors(错误):失败请求占比多少?
  • Duration(持续时间):响应时间多长?

说白了,RED 就是问三个问题:

  • 你的服务忙不忙?(Rate)
  • 你的服务稳不稳?(Errors)
  • 你的服务快不快?(Duration)

我在项目中,每个微服务必须暴露 RED 指标。没有这三个,别想上线。

1.2.3 四大黄金信号

Google 在《SRE 运维解密》里还提了四大黄金信号,比 RED 更全面:

信号 说明 我常用的指标
延迟(Latency) 请求处理耗时 p50、p95、p99 延迟
流量(Traffic) 系统负载量 QPS、TPS、带宽
错误(Errors) 显式/隐式错误 HTTP 5xx、超时、业务错误码
饱和度(Saturation) 资源耗尽程度 CPU 队列、内存使用率、磁盘 IO 等待

避坑指南:我曾经只监控平均延迟,结果 p99 延迟已经 10 秒了,平均值才 200ms。后来我改成监控 p95 和 p99,才真正看到问题。

1.3 监控系统的分层架构

监控系统不是一个大锅烩。我习惯把它分成四层,每一层各司其职。

下面这张图是我自己画的,你看完就明白了:

监控系统分层架构 第1层:数据采集层 Exporter / Agent / 日志采集器 / 链路追踪探针 采集指标、日志、链路、事件 第2层:数据传输与处理层 消息队列(Kafka) / 流处理(Flink) / 日志传输(Filebeat) 缓冲、过滤、聚合、格式转换 第3层:存储与计算层 Prometheus / Elasticsearch / InfluxDB / ClickHouse 时序数据存储、日志索引、聚合计算、告警规则评估 第4层:可视化与告警层 Grafana / Alertmanager / 钉钉/企微/邮件通知

这四层,每一层都有讲究:

第1层:数据采集层

这是最底层,也是最容易被忽视的。我见过有人用 shell 脚本采集指标,结果采集器本身把 CPU 打满了。嗯,这里要注意:采集器要轻量,不能影响业务。

  • 指标采集:Prometheus Exporter、Node Exporter、cAdvisor
  • 日志采集:Filebeat、Fluentd、Logstash
  • 链路采集:Jaeger Agent、SkyWalking Agent

第2层:数据传输与处理层

数据量大了,直接写存储会崩。所以中间要加一层缓冲和处理。

  • 缓冲:Kafka 扛住突发流量
  • 过滤:去掉无用日志,减少存储成本
  • 聚合:比如 1 秒内的指标聚合成 1 分钟平均值

我的经验:曾经日志量太大,ES 集群直接 OOM。后来加了 Kafka 做削峰填谷,再也没出过问题。

第3层:存储与计算层

这一层是核心。选型很关键:

  • 时序数据:Prometheus(适合指标)、InfluxDB(适合 IoT)
  • 日志数据:Elasticsearch(全文搜索强)
  • 链路数据:Jaeger、Zipkin

告警规则也在这里评估。比如「CPU > 80% 持续 5 分钟」就触发告警。

第4层:可视化与告警层

数据存好了,得让人看得懂。Grafana 是标配。告警通知要分级:

  • P0 故障:电话 + 短信,5 分钟内必须响应
  • P1 警告:钉钉/企微群,30 分钟内处理
  • P2 通知:邮件,日清

避坑指南:我曾经把所有告警都发到同一个群,结果大家全麻木了,真正出故障反而没人看。后来我按级别分群,P0 单独拉群,效果好了很多。

1.4 小结

这一章,我们聊了:

  • 监控的三大目的:发现问题、定位问题、预测问题
  • 黄金指标:USE(资源)、RED(服务)、四大黄金信号(全面)
  • 分层架构:采集 → 传输 → 存储 → 可视化,每一层都有坑

你想想看,如果连「为什么监控」都没想清楚,直接上 Prometheus,那跟闭着眼睛开车有什么区别?

下一章,我会手把手带你搭建一套生产级的监控系统。嗯,到时候咱们再细聊。


专注资料整理