监控系统基础:四个黄金信号与工具链入门
聊到监控系统,我脑子里第一个蹦出来的词就是「四个黄金信号」。这玩意儿是 Google 的 SRE 团队总结出来的,说白了就是四个最核心的指标——延迟、流量、错误、饱和度。你想想看,不管你的系统多复杂,只要把这四个维度盯住了,大部分故障都能提前感知到。
四个黄金信号,一个都不能少
延迟,就是请求从发出去到收到响应的时间。我遇到过不少团队只盯着平均延迟看,结果线上出了大问题。为什么呢?因为平均延迟会掩盖那些慢请求。举个例子,99% 的请求都在 100ms 内完成,但剩下那 1% 可能卡了 10 秒。这 1% 的用户体验已经崩了,可你的监控面板上还是一片绿。
所以我建议,延迟指标一定要看分位数。P99、P95、P50 都得有。P99 代表最差的 1% 用户感受,P50 代表大多数用户的体验。两个一对比,问题就出来了。
流量,就是系统承受的请求量。这个好理解,QPS(每秒查询数)、RPS(每秒请求数)都是常见指标。但要注意,流量突然飙升不一定是好事。我记得有一次,某个服务的 QPS 从 1000 飙到了 10000,团队以为是业务爆发,结果一查是爬虫在刷接口。所以流量指标一定要配合其他信号一起看。
错误,这个最直观。HTTP 5xx、4xx 状态码,业务逻辑返回的错误码,都算。但有个坑——错误率低不代表没问题。我曾经遇到过一个服务,错误率只有 0.1%,但每次出错都导致用户数据丢失。这种错误,哪怕只有一次,也是灾难。
饱和度,就是系统还能扛多少。CPU 使用率、内存占用、磁盘 IO、网络带宽,这些都是饱和度指标。我个人的习惯是,饱和度不要等到 100% 才报警。CPU 到 80% 就该关注了,因为一旦打满,延迟会急剧上升。你想想看,系统就像高速公路,车流量到 80% 的时候已经开始堵了,真到 100% 就彻底瘫痪了。
核心要点:四个黄金信号不是孤立的。延迟高了,可能是饱和度导致的;错误多了,可能是流量突增压垮了系统。一定要联动分析。
Prometheus 架构:拉模式才是王道
Prometheus 的架构,说白了就是一个「拉」的模式。它主动去各个目标(Target)上抓取指标数据,而不是等着目标把数据推过来。这个设计有什么好处呢?
- 可控性强:你决定什么时候拉、拉哪些数据,而不是被数据淹没。
- 故障隔离:某个目标挂了,不影响 Prometheus 本身。
- 简单可靠:没有复杂的消息队列,一个 HTTP 请求就能拿到数据。
核心组件有这么几个:
| 组件 | 作用 |
|---|---|
| Prometheus Server | 核心服务,负责拉取数据、存储、查询 |
| Exporter | 暴露指标数据的代理,比如 Node Exporter 暴露机器指标 |
| Alertmanager | 处理告警,去重、分组、发送通知 |
| Pushgateway | 用于短期任务或无法直接拉取的场景 |
我刚开始用 Prometheus 的时候,犯过一个低级错误——把所有指标都拉到同一个 Server 上。结果数据量一大,查询就慢得像蜗牛。后来才明白,Prometheus 是单机架构,数据量大了要分片,或者用 Thanos 这类扩展方案。
小技巧:Exporter 的指标命名要规范。比如 node_cpu_seconds_total,一看就知道是 Node Exporter 暴露的 CPU 指标。命名混乱的话,后期维护会非常痛苦。
Grafana 可视化入门:从数据到图表
Grafana 是 Prometheus 的最佳搭档。它把枯燥的指标数据变成直观的图表,让你一眼就能看出系统状态。我个人习惯,每个服务至少建三个面板:
- 概览面板:四个黄金信号的实时数据,放在最显眼的位置。
- 趋势面板:过去 24 小时、7 天的变化趋势,用于容量规划。
- 明细面板:每个实例的详细指标,排查问题时用。
下面是一个简单的 PromQL 查询示例,用来查某个服务的 P99 延迟:
histogram_quantile(0.99,
sum(rate(http_request_duration_seconds_bucket[5m])) by (le)
)
这段代码的意思是:取过去 5 分钟内,所有请求延迟的 P99 分位数。嗯,这里要注意,le 是 Prometheus 中用于直方图的关键字,代表「小于等于」某个桶的值。
Grafana 的配置也很简单。添加数据源时选 Prometheus,填上地址就行。然后创建 Dashboard,选一个图表类型,比如折线图、柱状图、热力图。我个人最喜欢热力图,因为它能同时展示时间和分布,特别适合看延迟的变化。
避坑指南:我曾经在 Grafana 上设置了一个自动刷新频率为 1 秒的面板,结果 Prometheus 被查得直接 OOM。刷新频率不要太快,5-10 秒就足够了。数据量大的话,30 秒也行。
知识体系总览
下面这张图,是我自己画的监控知识体系结构。你可以把它当作一个地图,随时回来对照。
这张图把整个监控链路串起来了。从四个黄金信号出发,到 Prometheus 采集数据,再到 Grafana 展示。每一步都有它的价值,缺一不可。
好了,这一章的内容就到这里。监控系统的基础打牢了,后面讲告警规则、告警收敛、自动化运维的时候,你就能更快上手了。
公众号:蓝海资料掘金营,微信deep3321