一、监控告警概述:从“设备坏了才知道”到“还没坏就预警”

大家好,我是老赵。做运维这行十几年了,今天咱们聊聊监控告警。

说实话,我刚入行那会儿,监控基本靠“吼”。设备宕机了,用户打电话过来骂,我们才知道出事了。那时候的运维,说白了就是“救火队员”。

但现在不一样了。设备监控,就是给我们的服务器、网络设备、数据库这些“哑巴”装上传感器,让它们能主动“说话”。

设备监控的核心价值:从被动响应,变成主动预防。

1.1 什么是设备监控?

设备监控,就是用软件手段,持续采集设备的运行状态数据。比如CPU用了多少、内存还剩多少、磁盘是不是快满了、网络延迟高不高。

我习惯把监控系统比作“医院的体检中心”。设备就是病人,监控指标就是各种体检数据。没有监控,你就像闭着眼睛开车——危险得很。

常见的监控对象包括:

  • 服务器:CPU、内存、磁盘、进程、端口
  • 网络设备:交换机、路由器、防火墙的流量、丢包率
  • 数据库:连接数、慢查询、主从延迟
  • 中间件:Redis命中率、Kafka积压量、Nginx连接数
  • 业务应用:API响应时间、错误率、用户登录成功率

你想想看,如果一台数据库服务器的磁盘使用率已经达到95%,而你完全不知道——那离“写入失败、服务崩溃”就不远了。

1.2 为什么需要告警规则?

光有监控数据还不够。数据是死的,你得告诉系统:什么情况算“异常”?

告警规则,就是给监控数据设定“红线”。

举个例子:

  • CPU使用率超过90%,算不算异常?
  • 如果只持续了10秒呢?
  • 如果持续了30分钟呢?

没有规则,监控系统只会傻傻地记录数据。有了规则,它才能在你睡觉的时候帮你盯着,出事了立刻喊你。

我的经验:告警规则不是越多越好。我曾经接手过一个项目,告警规则配了800多条,结果每天告警上万条,运维团队直接“告警疲劳”,最后连真正的故障都忽略了。

1.3 告警规则的核心三要素

不管多复杂的告警规则,拆开来看,核心就三个东西:指标、阈值、持续时间

要素 说明 举例
指标 你要监控什么? CPU使用率、磁盘IO、HTTP 5xx错误数
阈值 超过多少算异常? 大于90%、小于10GB、大于100次/分钟
持续时间 异常持续多久才触发告警? 持续5分钟、连续3次采样

1.3.1 指标:选对“体检项目”

指标选错了,后面全白搭。

我记得有一次,一个团队监控MySQL,只看了CPU和内存,结果数据库挂了。为什么?因为真正的瓶颈是磁盘IO,他们根本没监控。

选指标有个原则:从业务往下倒推

  • 业务卡了?→ 看API响应时间
  • API慢了?→ 看数据库查询时间
  • 数据库慢了?→ 看慢查询、锁等待、磁盘IO

一层层剥下去,才能找到根因。

1.3.2 阈值:红线划在哪?

阈值设得太低,天天告警,狼来了;设得太高,真出事了没反应。

我个人的习惯是:先宽松,再收紧

比如一个新业务上线,我先设一个比较宽的阈值(比如CPU 95%持续30分钟才告警)。跑两周,看看正常波动范围是多少,然后再把阈值调到合理位置。

避坑指南:我曾经直接把阈值设为“CPU > 80%”就告警,结果业务高峰期每天告警2000多次,运维团队直接屏蔽了告警。后来真的宕机了,没人知道。阈值一定要结合业务周期来调。

1.3.3 持续时间:别被“毛刺”骗了

这是新手最容易忽略的点。

系统指标经常会有瞬间的“毛刺”。比如CPU突然飙到100%,但1秒后就掉下来了。这种瞬间波动,通常不需要告警。

为什么?因为可能是GC(垃圾回收)、定时任务、或者网络抖动。你为这个发告警,就是浪费精力。

所以,持续时间这个参数,就是用来过滤“假警报”的。

  • CPU > 90% 持续 5 分钟 → 告警
  • 磁盘使用率 > 85% 持续 30 分钟 → 告警
  • HTTP 5xx > 1% 持续 3 分钟 → 告警

嗯,这里要注意:持续时间不是越长越好。如果是一个关键业务,比如支付接口,错误率持续30秒可能就已经损失惨重了。所以,持续时间要根据业务重要性来定

1.4 三要素如何配合?一张图看懂

下面这张图,是我自己总结的告警规则决策流程。每次配置新规则,我都会走一遍这个逻辑。

告警规则三要素决策流程 ① 选择指标 CPU / 内存 / 磁盘 / 网络 ② 设定阈值 大于90% / 小于10GB ③ 持续时间 持续5分钟 是否触发告警? 发送告警通知 继续监控 💡 配置建议: • 指标:优先选择与业务强相关的指标(如API响应时间、错误率) • 阈值:先宽后严,结合历史数据动态调整 • 持续时间:关键业务短一些(1-3分钟),非关键业务长一些(5-15分钟)

1.5 一个完整的告警规则示例

光说不练假把式。咱们看一个真实场景:

场景:监控一台Web服务器的CPU使用率。

# Prometheus告警规则示例
groups:
  - name: server_alerts
    rules:
      - alert: HighCpuUsage
        expr: cpu_usage_percent > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "服务器CPU使用率过高"
          description: "{{ $labels.instance }} CPU使用率已超过90%,持续5分钟"

这段规则什么意思?

  • expr:指标是 cpu_usage_percent,阈值是 > 90
  • for:持续时间是 5 分钟
  • severity:严重级别是 warning(警告)

你看,三要素全在里面了。

我的建议:刚开始配规则,别追求“一步到位”。先配3-5条核心规则跑起来,观察一周,再逐步补充。我见过太多人第一天就配了50条规则,结果第二天全删了——因为全是噪音。

1.6 小结

这一章咱们聊了:

  • 设备监控是什么——给设备装“传感器”
  • 为什么需要告警规则——把数据变成 actionable 的信息
  • 核心三要素:指标、阈值、持续时间——缺一不可

说白了,告警规则就是你和系统之间的“契约”。你告诉系统:什么情况该喊我,什么情况别烦我。这个契约定得好,你就能睡个安稳觉;定得不好,要么被吵死,要么被坑死。

下一章,咱们聊聊告警规则的具体配置方法,包括怎么选指标、怎么定阈值、怎么设持续时间。到时候我会拿几个真实案例出来拆解。


公众号:蓝海资料掘金营,微信 deep3321