线上崩了,谁先知道?

0 阅读10分钟

先问一句:线上出问题的时候,是你们先发现,还是用户先发现?

如果答案是后者,这篇就是写给你的。

一、我们曾经面对的窘境

业务越做越大,监控却各搞各的。没有统一标准,没有统一平台,一个团队N套监控,结果就是:

  • 告警要么不来,要么半夜乱炸
  • 阈值全靠人拍脑袋,流量一波动就误报
  • 人工配置繁琐,维护成本居高不下
  • 没有监控标准,想起来就加,想不起来就裸奔。用户都投诉到客服了,技术才反应过来

发现滞后,响应更滞后。

我们给自己定了一条线:出现问题,30分钟内必须解决!

要做到这一点,靠零散的监控远远不够。我们需要一套面向业务场景、能分钟级感知异常的智能监控与告警体系。

于是有了「星盾」。

二、星盾是什么?一句话说清

面向业务场景的智能监控报警系统。

  • 对业务全链路做分钟级监控 + 即时告警
  • 覆盖前端页面、服务端功能:前端用「lego」采集用户行为数据,服务端用 Prometheus 和 k=s 看接口与性能
  • 目标只有一个:异常早发现、早响应、早定位、早解决

核心逻辑只有十个字:监控 → 告警 → 响应 → 定位 → 解决,形成闭环。

三、凭什么能「分钟级」?架构与能力撑腰

整体架构

从数据采集到展示运营,星盾采用清晰的四层架构:

数据采集 → 数据处理 → 监控告警 → 展示运营,各司其职,统一收口。

配置有多简单?三步搞定

一句话:先告诉系统「要盯哪块业务」(监控项),再配个「能看趋势的图」(看板),最后定「啥情况算异常、通知谁」(报警项)。配完就自动跑,有问题就分钟级提醒。

PS: 开启「AI通用分析」后,前两步配完即可,第三步可跳过。

下面分别说明每一步要做什么、怎么配。

第一步:创建监控项

如图所示:

把「看什么」说清楚——要监控哪个业务场景、看哪些指标、怎么算这部分数据。

1. 先把数据收全

覆盖前端、服务端等多端数据,在同一平台内统一配置与告警。

数据源典型用途
lego前端/客户端页面曝光、按钮点击、关键行为(PV/UV、曝光、点击等)
Prometheus服务端指标:QPS、延迟、错误率等,接口、服务、中间件可用性与性能
服务端 k=s业务服务端自定义指标/上报,与 Prometheus 互补

2. 用户行为指标:规模、转化、占比

先把「用户行为」本身看清楚:有多少人来(UV)、做了多少次行为(PV)、其中有多少转化(占比)。

维度含义典型用法
PV(次数)按次数统计看规模与总量:接口调用次数、页面曝光次数、点击次数
UV(人数)按人数/设备去重看覆盖与体验面:多少用户受影响、多少人完成某行为
单指标当前监控项自身的统计值(可以是 PV 或 UV)看某一行为的绝对值:首页曝光 PV、某接口 QPS
占比指标本监控项 ÷ 关联监控项,得到占比看比例与转化:区域曝光占比、成功率;流量波动时更稳,减少误报

做转化率类报警(如区域曝光 PV / 页面曝光 UV)时,分子分母会分别用到 PV、UV,两种都要支持;占比指标需要在配置时关联一个已有监控项作为分母,系统自动计算占比并报警。

3. 精确到终端/页面/模块:基础条件 + 条件匹配 + 分组筛选

  • 基础条件: 先圈出「哪一类事件、哪一块页面/模块」(如商品曝光、App 首页_推荐),对应埋点中的事件类型 + 模块/页面,是最粗的一层场景圈选。
  • 条件匹配: 在基础条件上再做精细过滤,如 sectionId=108、firsttab=精选、终端类型等,实现同一模块下不同 tab、不同区域、不同终端分别监控。
  • 分组筛选字段: 指定按哪一维度分组(如渠道、终端),方便在看板和告警里对比不同终端/页面/模块,并按具体实体下钻。

第二步:添加看板

如图所示:

为监控项配置可视化看板,用于查看该监控项的数据趋势。

看板主要有两个作用:

  1. 配置报警阈值时参考实际值: 创建报警项、设定手动阈值时,需先在看板查看该监控项的历史曲线与量级,再根据实际数据设定,避免阈值过松或过紧。
  2. 日常出问题时帮助定位: 线上出现问题后,可查看看板看趋势、发生时间等,辅助判断异常时段与影响范围,便于定位问题。

第三步:创建报警项

如图所示:

在监控项与看板的基础上,定义「什么情况下算异常、如何通知到人」,把观测能力转化为可执行的告警策略,实现「监控 — 告警 — 响应」闭环。

配置项含义 / 用途
关联监控项告警绑定到具体监控项(曝光率、接口 QPS 等)
报警条件按维度过滤,只对符合条件的数据做统计与触发(如 t值[终端类型])
统计周期(秒)按多少秒聚合再判断(如 60 秒),减少瞬时抖动
触发条件最大值/最小值/平均值/求和、连续发生、环比变化率等,适配不同场景
分组条件告警触发时按某维度展示(如按 t值),便于定位
告警方式企微通知、语音报警等,重要告警多通道触达

触发条件怎么用?常见几种:连续发生(连续 N 个周期才告警,减少误报)、统计周期内最大/最小值环比变化率(发现相对基线的突然变差)。

而触发条件里最核心的是阈值——什么算异常、多少才报?两种配置方式,告别「拍脑袋」:

阈值配置方式说明
手动配置(自己设阈值)单指标: 对单一指标(如首页曝光 PV、某接口 QPS)直接设阈值,超过或低于即告警,适合量级、绝对值类监控。转化率: 用组合指标(如区域曝光 PV / 页面曝光 UV)算转化率再报警,流量高峰、低谷波动再大,也能更稳地判断是不是真异常,减少误报。
自动对比(AI)基于历史数据自动学习业务规律,对异常波动做智能识别 + 实时告警。该设多少阈值、什么时候报,系统自己学,人工配置和维护成本都降下来。

四、手动阈值的两个坑,我们用 AI 填上了

前面说到可以通过手动配置或 AI 自动对比来设阈值。如果只靠手动设阈值,很容易踩两个坑:

  1. 报警配置滞后: 阈值要参考看板历史曲线与量级,往往得先收集一周左右数据,才能配出合适阈值。
  2. 无法应对流量持续变化: 业务调整后数值持续升高或下降并稳定在新范围,若不及时改阈值,就会误报或该报不报。

举例: 大促期间某核心转化率从平时的 5% 提升到 8% 并稳定下来。若阈值仍按 5% 设「低于 4% 报警」,大促后回落到 6% 本属正常,却可能被误报;反之若按 8% 设,平时 5% 时又可能该报不报。人工改阈值总存在时间差。

为此我们接入了 AI 通用分析能力

接下来用大白话讲清楚:系统怎么知道「出问题了」并发出告警。

判定为异常之后,还要明确一点:往哪边偏才需要告警? 有的指标我们只关心「掉下去了」(如转化率、曝光量),有的只关心「飙上去了」(如错误率、延迟)。星盾支持按业务诉求配置指标方向,避免双向波动都报、噪音过多。

一句话总结: 星盾先用历史数据算出「正常范围」,再拿当前数据和它比;只有偏离够大、持续够久才判定为异常,并根据严重程度给出正常 / 警告 / 严重,从而减少误报、又能及时发现问题。

真实例子:报警长什么样?

App 搜索结果页短暂进不去时,从图中可以清晰看出 17:10–17:18 左右出现问题并触发告警,方便快速定位与恢复。

五、监控从哪来?创建与补充机制

配好了报警,还要问一句:监控数据从哪来?

历史功能怎么补、新需求怎么跟上?下面就是我们的补充机制。

1.历史功能补充(先覆盖哪些已有场景):

  • 按公司链路等级优先覆盖核心链路(APP 首页、商品发布、浏览、下单支付等)
  • 访问量:PV/UV topN页面、曝光 topN功能模块

2.新增功能补充(新需求怎么跟上):

  • 需求阶段评估是否需增加监控;开发或上线后及时补充
  • 按周统计新上线业务需求,通知 QA 负责人,评估本周是否有需补充的监控报警

这样历史场景不遗漏、新需求能跟上,监控和业务一起迭代。

六、上线之后,数字会说话

1.APP平台内部:

  • 50+ 条报警已接入,App 核心场景 100% 覆盖
  • 自 2025 年 4 月底上线至今,累计发现线上问题 20 个(运营配置问题 5 个,内部 bug 3 个,外部 bug 7 个,业务规则调整 1 个,业务正常波动 4 个)
  • 避免 2 次三级事故

2.其他业务方:

  • 过期页面: 累计发现 2 个线上投放问题,分钟级感知 + 自动下架,有效阻止持续曝光
  • 魔方专题构建失败: 成功预警并推动处理 10 余起故障,保障运营活动稳定上线

用户还没发现,我们先知道了;该下架的下架,该修的被修。这就是「星盾」要达成的效果。

写在最后

线上质量监控,从来都不是一个团队中某个职能的事,而是整个业务维度的事,关注用户真实业务感受。

星盾要做的,就是把这件「业务维度」的事,用统一平台、统一标准、分钟级感知串起来,让各职能都能在同一套体系里看问题、响应问题、定位问题。

如果你也经历过「线上崩了,用户先知道」的尴尬,不妨试试!

转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。 关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~