第1章:远程监控体系设计

监控体系设计,说白了就是给系统装上一双「眼睛」。我做了这么多年运维,见过太多团队一上来就堆监控工具,结果告警比业务流量还猛。嗯,今天咱们就聊聊怎么把这双眼睛装得既看得清、又不瞎报警。

1.1 监控分层模型

我个人习惯把监控分成三层:基础设施、应用、业务。这三层缺一不可,就像盖房子,地基不稳、墙不牢、屋顶漏雨,哪个都住不了。

基础设施层

这是最底层,也是最容易出问题的地方。CPU、内存、磁盘、网络,这些是硬指标。我在项目中遇到过,有一次磁盘IO被打满,应用层监控一切正常,但用户就是觉得慢。后来查了半天,才发现是隔壁团队在跑大数据任务。

  • 计算资源:CPU使用率、负载、上下文切换
  • 存储资源:磁盘容量、IOPS、读写延迟
  • 网络资源:带宽、丢包率、连接数
  • 虚拟化层:宿主机资源争抢、虚拟机漂移

应用层

这一层关注的是服务本身的状态。比如进程是否活着、接口响应时间、错误率。我曾经踩过一个坑:进程监控显示正常,但实际已经死锁了。所以光看进程存活是不够的,还得看它能不能正常处理请求。

关键指标

  • 服务可用性(UP/DOWN)
  • 接口响应时间(P50/P95/P99)
  • 错误率(4xx/5xx)
  • 连接池/线程池状态

业务层

这是最接近用户感受的一层。比如电商网站的订单成功率、支付转化率、用户登录耗时。业务监控的难点在于,很多指标需要从日志里提取,而且业务逻辑变了,监控也得跟着改。

我的建议:业务监控最好和产品团队一起定义。别自己闷头搞,否则搞出来的指标没人看。

1.2 监控数据采集方式

数据怎么来?主要有三种方式:Agent、API、日志。每种方式都有适用场景,我一般混合使用。

Agent方式

在目标机器上装一个代理程序,由它主动采集数据上报。这种方式最常用,比如Prometheus的Exporter、Telegraf。优点是实时性好,缺点是每台机器都要装,维护成本高。

# 一个简单的Prometheus Node Exporter配置示例
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

API方式

通过调用目标系统的API来获取数据。比如云厂商的监控API、数据库的监控视图。这种方式不需要装Agent,但受限于API的调用频率和返回格式。

注意:API调用要注意限流。我曾经因为并发调API,被云厂商封了IP,教训深刻。

日志方式

从日志里提取监控指标。比如统计Nginx日志里的请求量、错误码。这种方式适合业务监控,但需要做日志解析,延迟会高一些。

采集方式 优点 缺点 适用场景
Agent 实时性好,数据全面 维护成本高 基础设施监控
API 无需安装,灵活 受限于调用频率 云资源、第三方服务
日志 信息丰富,可回溯 延迟高,解析复杂 业务监控、审计

1.3 监控指标设计:黄金信号

Google的SRE团队提出了四个黄金信号:延迟、流量、错误、饱和度。这四个指标基本能覆盖大部分场景。我自己的经验是,再加一个「可用性」会更完整。

延迟(Latency)

请求处理的时间。注意,不是平均值,而是分位值。P99延迟比平均值更有意义。你想想看,平均延迟100ms,但P99可能是5秒,那用户体验其实很差。

流量(Traffic)

系统承载的请求量。比如QPS、TPS、带宽使用率。流量突然飙升,可能是好事(活动大促),也可能是坏事(被攻击)。

错误(Errors)

请求失败的次数。包括显式错误(5xx)和隐式错误(返回成功但内容不对)。我建议把错误率按类型分开监控,方便定位问题。

饱和度(Saturation)

资源被用到了什么程度。比如CPU使用率80%以上、内存剩余不足10%。饱和度指标能帮你提前发现瓶颈,避免系统崩溃。

实战经验:我曾经负责一个电商平台,双十一当天流量暴增10倍。幸好提前设置了饱和度告警,在CPU达到85%时就自动扩容了。要是等到100%再处理,那可就晚了。

1.4 知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你可以把它当作监控体系设计的「地图」。

远程监控体系设计核心逻辑 监控分层模型 基础设施层 应用层 业务层 数据采集方式 Agent方式 API方式 日志方式 黄金信号指标 延迟(Latency) 流量(Traffic) 错误(Errors) 饱和度(Saturation) 设计原则 1. 分层采集:每层独立采集,互不影响 2. 多路采集:Agent/API/日志互为补充 3. 指标精简:黄金信号为主,避免指标爆炸 4. 告警分级:P0/P1/P2,别让运维半夜被叫醒 5. 持续优化:监控体系不是一次建成的,要迭代

小提示:刚开始做监控,别贪多。先把基础设施和黄金信号搭起来,再慢慢加应用和业务监控。我见过太多团队一开始就想搞「全栈监控」,结果半年过去了,连CPU告警都没配好。

专注资料整理