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

大家好,我是你们的老朋友。今天咱们正式开篇,聊聊监控体系。

说实话,我见过太多团队,系统上线后第一件事就是写业务代码,监控?等出事了再说。结果呢?凌晨三点被报警电话叫醒,手忙脚乱查日志,那种滋味,我经历过不止一次。所以,监控不是锦上添花,它是系统的「安全带」。

1.1 为什么需要监控?

先问大家一个问题:你凭什么相信你的系统是健康的?

凭感觉?凭运气?都不靠谱。监控就是给你一双「透视眼」,让你随时知道系统在干什么。

我个人习惯把监控的目的总结为三点:

  • 发现问题:系统挂了、慢了、错了,第一时间知道。别等用户投诉。
  • 定位问题:出问题了,是数据库慢了?还是网络抖了?监控数据能帮你快速缩小范围。
  • 预测问题:磁盘快满了、内存快爆了,提前预警。我曾经就因为没监控磁盘,导致日志把根目录写满,整个服务挂了半小时……嗯,从那以后我监控里必加磁盘使用率。

说白了,监控就是让你从「救火队员」变成「预防医生」。

1.2 监控的黄金指标

指标那么多,到底该看哪些?别急,业界早就帮我们总结好了。我个人最常用的三套方法论:USE、RED、Four Golden Signals。

1.2.1 USE 方法(资源视角)

USE 是 Brendan Gregg 提出的,专门用来监控「资源」的。比如 CPU、内存、磁盘、网络。

USE 三个字母代表:

  • Utilization(使用率):资源被占用的比例。比如 CPU 用了 80%。
  • Saturation(饱和度):资源排队等待的程度。比如 CPU 运行队列长度。
  • Errors(错误数):资源层面的错误。比如磁盘 I/O 错误。

举个例子,我监控一台数据库服务器:

  • CPU 使用率 90% → 利用率高
  • CPU 运行队列 > 核心数 → 饱和了
  • /var/log/messages 里出现 I/O error → 有错误

这三项一列,资源健康度一目了然。

我的经验:USE 方法最适合基础设施层。我习惯在每台机器上部署一个 agent,定期采集 USE 指标,然后统一汇总到监控平台。

1.2.2 RED 方法(服务视角)

RED 是 Tom Wilkie 提出的,专门用来监控「服务」的。比如你的 API、微服务。

RED 三个字母代表:

  • Rate(速率):每秒请求数。QPS 就是典型的 Rate。
  • Errors(错误数):请求失败的次数。比如 HTTP 500。
  • Duration(持续时间):请求响应时间。比如 P99 延迟。

你想想看,一个服务好不好,就看这三样:

  • Rate 高不高?说明业务量。
  • Errors 多不多?说明稳定性。
  • Duration 长不长?说明性能。

我在项目中遇到过,某个接口 Rate 正常,Errors 也正常,但 Duration 从 100ms 涨到了 2s。用户反馈「页面转圈圈」,但监控没报警。为什么?因为只监控了错误率,没监控延迟。后来我加上了 P99 延迟监控,这类问题再也没漏过。

1.2.3 Four Golden Signals(综合视角)

Google SRE 提出的四个黄金信号,可以说是监控界的「宪法」:

信号 说明 举例
延迟 请求处理时间 P50、P99 延迟
流量 系统负载程度 QPS、并发连接数
错误 请求失败率 HTTP 5xx、业务错误码
饱和度 资源耗尽程度 CPU 使用率、内存使用率

这四个信号覆盖了「用户体验」和「系统资源」两个维度。我个人习惯:

  • 对外接口用 RED + 延迟
  • 内部资源用 USE
  • 整体大盘用 Four Golden Signals
核心原则:不要贪多。每个服务选 3-5 个核心指标就够了。指标太多,反而看不清重点。

1.3 监控分层架构

监控不是单点的事,它是一套分层体系。我习惯把监控分成四层,从下往上:

1.3.1 基础设施层

监控物理机、虚拟机、网络设备、存储。指标包括 CPU、内存、磁盘、网络、温度等。工具:Prometheus + node_exporter、Zabbix。

1.3.2 中间件层

监控数据库、缓存、消息队列、负载均衡。比如 MySQL 的慢查询、Redis 的命中率、Kafka 的堆积量。工具:Prometheus exporter、Grafana 仪表盘。

1.3.3 应用层

监控业务接口、微服务、容器。指标包括 QPS、延迟、错误率、调用链。工具:SkyWalking、Jaeger、Prometheus + 自定义指标。

1.3.4 用户层

监控真实用户体验。比如页面加载时间、JS 错误、白屏时间。工具:自建埋点、Sentry、Google Analytics。

这四层缺一不可。我曾经遇到一个案例:用户反馈「下单慢」,应用层监控显示延迟正常,中间件层也正常。最后查了基础设施层,发现网络带宽被打满了。你看,如果只盯着应用层,这个问题根本发现不了。

避坑指南:分层不是孤立的。上层指标异常,往往根因在下层。比如应用延迟高,可能是数据库慢查询(中间件层),也可能是磁盘 I/O 高(基础设施层)。所以,监控数据要能「下钻」。

1.4 小结

这一章我们聊了:

  • 监控为什么重要:发现问题、定位问题、预测问题。
  • 三大黄金指标:USE(资源)、RED(服务)、Four Golden Signals(综合)。
  • 监控分层架构:基础设施层 → 中间件层 → 应用层 → 用户层。

下一章,我会带大家搭建一个最小可用的监控系统。咱们从 Prometheus 开始,一步步把指标抓起来。到时候,我会分享一些我踩过的坑,比如「怎么避免监控把自己监控死」——嗯,这真不是段子。

好了,今天就到这里。有问题随时交流。