监控体系概述:为什么需要监控?

说实话,我刚开始做运维那会儿,对监控这事儿挺不以为然的。

觉得不就是装个软件,配几个告警嘛。直到有一次,凌晨三点被电话吵醒——线上服务挂了,日志全丢,连什么时候挂的都不知道。嗯,从那以后,我再也不敢轻视监控了。

监控说白了,就是给系统装个“仪表盘”。你开车不看仪表盘,油表亮了都不知道,迟早抛锚。系统也一样。没有监控,你就是在盲开。

我个人习惯把监控的价值归纳为三点:

  • 发现问题——服务挂了、磁盘满了、内存泄漏了,你得第一时间知道
  • 定位问题——出问题了,是代码的锅?还是资源的锅?监控数据帮你说话
  • 预测问题——比如磁盘使用率每天涨5%,三天后肯定爆,提前扩容才是高手
一个小建议: 别等出事了再搭监控。我见过太多团队,项目上线半年了,连个CPU使用率都查不到。等老板问“最近系统稳不稳定”的时候,你只能尬笑。

监控的分类:白盒 vs 黑盒

很多新手会问:监控到底要监控什么?其实就两大类——白盒和黑盒。

黑盒监控

黑盒监控,就是站在用户视角看系统。我不关心你内部怎么实现的,我只关心你对外提供的服务是不是正常的。

举个例子:我访问你的网站,返回200还是502?响应时间是1秒还是10秒?这就是黑盒。

我在项目中经常用黑盒监控来做“烟雾测试”——每隔几分钟模拟一次用户请求,看看服务是不是活着。说白了,用户能感知到的,才是真问题。

白盒监控

白盒监控,是站在系统内部看自己。CPU高不高?内存够不够?JVM的GC次数是不是异常?

白盒监控的价值在于“提前发现”。比如我遇到过的一个案例:某服务的GC时间突然从50ms涨到500ms,黑盒监控完全没反应(因为服务还能响应),但白盒数据已经报警了。等黑盒报警的时候,服务其实已经快挂了。

我的经验: 黑盒和白盒不是二选一,而是互补。黑盒保底线,白盒保体验。两者都得上。

监控的核心指标:USE 和 RED 方法

指标那么多,到底该看哪些?这里有两个经典方法论,我几乎每天都在用。

USE 方法(面向资源)

USE 是 Brendan Gregg 提出的,适用于基础设施层(CPU、内存、磁盘、网络)。

  • Utilization(利用率)——资源忙了多久?比如CPU使用率80%
  • Saturation(饱和度)——资源排队了没?比如CPU的run queue长度
  • Errors(错误)——资源出错了没?比如磁盘I/O错误

说白了,你检查任何一台服务器,先看这三个维度就够了。我排查性能问题的时候,第一件事就是打开USE仪表盘,基本能定位80%的问题。

RED 方法(面向服务)

RED 是 Tom Wilkie 提出的,适用于微服务和应用层。

  • Rate(速率)——每秒多少请求?
  • Errors(错误)——请求失败了多少?
  • Duration(持续时间)——请求耗时多长?

你想想看,一个接口的RED数据如果都正常,那这个服务基本就是健康的。我曾经用RED方法帮一个团队定位过慢查询问题——Rate正常,但Duration突然飙升,最后发现是数据库索引失效了。

避坑指南: 别贪多。我见过有人一个面板放50个指标,结果真正出问题的时候根本看不清。USE和RED加起来,每个服务盯5-8个核心指标就够了。

Prometheus vs Zabbix vs Nagios 对比

选监控工具,是每个团队都要面对的问题。这三款我都用过,说说我的真实感受。

维度 Prometheus Zabbix Nagios
数据模型 多维时间序列(标签) 传统数值型 插件式,数据格式不统一
采集方式 拉模式(Pull) 推模式(Push) 推/拉均可
扩展性 强,支持联邦集群 中,分布式部署较复杂 弱,单机为主
告警能力 强(Alertmanager) 中(内置告警) 弱(插件依赖)
容器支持 原生支持K8s 需额外配置 基本不支持
学习曲线 中(PromQL需学习) 低(界面配置) 高(配置文件复杂)
社区活跃度 极高(CNCF毕业项目) 低(已逐渐边缘化)

我个人习惯这样选型:

  • 新项目、云原生、K8s环境——无脑选Prometheus。我在多个K8s集群里都用它,配合Grafana,体验非常好。
  • 传统IDC、网络设备监控——Zabbix更合适。它的模板库很丰富,交换机、防火墙直接套用就行。
  • Nagios——说实话,我现在基本不推荐了。除非你维护的是十年以上的老系统,否则别给自己找麻烦。
我的建议: 如果你还在纠结,直接上Prometheus。原因很简单——未来是云原生的时代,而Prometheus就是为这个时代设计的。Zabbix和Nagios更像是上一个时代的产物。

好了,这一章就聊到这儿。下一章我们会深入Prometheus的架构和数据模型,到时候我会分享一些我在生产环境中踩过的坑,保证让你少走弯路。