一、监控体系概述:为什么需要监控、黄金指标与分层架构
大家好,我是你们的运维老司机。今天咱们聊聊监控体系——这个听起来有点虚、但实际干起来全是坑的话题。
说实话,我见过太多团队了。一上来就装 Prometheus、配 Grafana,整得花里胡哨的。结果呢?线上挂了,翻半天仪表盘,啥也没看出来。为什么?因为根本不知道自己要监控什么。
所以这一章,咱们先把地基打牢。搞清楚三个问题:为什么要监控?监控什么?怎么组织监控?
1.1 为什么需要监控?—— 别等用户骂你才醒
你可能觉得,监控不就是看看 CPU、内存吗?嗯,没那么简单。
我个人的理解是:监控是运维的眼睛和耳朵。没有监控,你就是在黑灯瞎火里修机器。
具体来说,监控解决三个核心问题:
- 发现问题 —— 系统挂了,你得第一个知道,而不是等用户投诉。
- 定位问题 —— 是数据库慢了?还是网络堵了?监控能帮你缩小范围。
- 预测问题 —— 磁盘快满了、流量在暴涨,提前预警,别等崩了再救火。
我的经验: 有一次线上支付接口超时,用户没投诉,但监控告警先响了。我一看,数据库连接池快满了。赶紧扩容,避免了全站瘫痪。你想想看,要是没监控,等用户骂上门来,那可就晚了。
1.2 监控的黄金指标 —— 到底该看什么?
好,既然要监控,那看什么指标?业界有三大经典方法论,我一个个说。
1.2.1 USE 方法 —— 资源视角
USE 是 Brendan Gregg 大佬提出的,专门针对资源的监控。说白了就是看每个资源:
- Utilization(利用率) —— 资源忙不忙?比如 CPU 用了 90%。
- Saturation(饱和度) —— 资源排队了没?比如磁盘 I/O 队列长度。
- Errors(错误) —— 出错了没?比如网卡丢包。
举个例子,看一台服务器:
| 资源 | 利用率 | 饱和度 | 错误 |
|---|---|---|---|
| CPU | 85% | 运行队列 3 | 0 |
| 内存 | 70% | Swap 使用 200MB | 0 |
| 磁盘 | 60% | I/O 等待 5% | 磁盘坏道 1 |
你看,一眼就能看出磁盘有错误,赶紧换盘。这就是 USE 的威力。
1.2.2 RED 方法 —— 服务视角
RED 是 Google 的 SRE 团队提出的,针对服务的监控。三个字母:
- Rate(速率) —— 每秒多少请求?
- Errors(错误) —— 请求失败了多少?
- Duration(持续时间) —— 请求耗时多久?
说白了,就是看你的 API 接口:
- QPS 多少?
- 5xx 错误率多少?
- P99 延迟多少?
避坑指南: 我曾经只监控了平均延迟,结果 P99 已经 10 秒了,平均才 200ms。用户早骂娘了。记住,永远关注 P99 甚至 P999。
1.2.3 四大黄金信号 —— 全局视角
Google SRE 还提出了四大黄金信号,比 RED 更全面:
- 延迟 —— 请求处理时间。慢就是罪。
- 流量 —— 系统负载。比如 QPS、带宽。
- 错误 —— 显式错误(5xx)和隐式错误(返回成功但内容不对)。
- 饱和度 —— 系统还能承受多少?比如 CPU、内存、磁盘。
我个人习惯把这四个信号作为监控仪表盘的首页。一打开 Grafana,先看这四个,心里就有底了。
1.3 监控体系的分层架构 —— 别把所有鸡蛋放一个篮子里
好,指标选好了,怎么组织?我建议按分层来搞。就像盖楼,一层一层来。
我一般把监控体系分成四层:
| 层级 | 监控对象 | 举例 |
|---|---|---|
| 基础设施层 | 服务器、网络、存储 | CPU、内存、磁盘、网卡 |
| 中间件层 | 数据库、缓存、消息队列 | MySQL QPS、Redis 命中率、Kafka 堆积 |
| 应用层 | 业务服务、API | 接口延迟、错误率、JVM 内存 |
| 业务层 | 用户行为、交易数据 | 订单量、注册数、支付成功率 |
为什么要分层?因为不同层的问题,需要不同的工具和告警策略。
- 基础设施层,用 Prometheus + Node Exporter 就够了。
- 中间件层,每个中间件有自己的 Exporter。
- 应用层,需要接入 APM(比如 SkyWalking、Pinpoint)。
- 业务层,往往需要自定义埋点。
注意: 别想着一个工具搞定所有。我见过有人用 Zabbix 监控应用层,结果告警延迟高、定制困难。分层架构的核心是:各司其职,工具选对。
1.4 总结 —— 监控不是终点,是起点
好了,这一章咱们聊了:
- 监控为什么重要 —— 发现问题、定位问题、预测问题。
- 黄金指标 —— USE(资源)、RED(服务)、四大黄金信号(全局)。
- 分层架构 —— 基础设施、中间件、应用、业务,各层独立又协同。
最后说一句:监控不是为了看数据,而是为了做决策。数据摆在那,你得知道下一步该干嘛。下一章,咱们就动手搭建第一个监控组件——Prometheus。到时候手把手教你配。
嗯,今天就到这儿。有问题欢迎留言,咱们下章见。