网站监控工程师实际使用的最佳实践

最后更新:
运维工程师查看包含区域检查点、延迟时间表和实时警报的全球网站监控仪表盘
良好的监控能在客户发现问题之前告诉你是什么坏了、哪里坏了以及为什么坏了。

大多数团队都有网站监控。真正能在客户、销售和支持团队发现问题之前捕捉到问题的网站监控少之又少。差距很少是工具的原因,而是围绕工具的实践:检查什么、从哪里检查、多久检查一次、什么触发通知、以及谁决定检查失败是检测点坏了还是网站坏了。

本操作手册收集了八条将SRE和DevOps团队信赖的监控设置与最终沦为噪音的设置区分开的最佳实践。每条都是具体的:阈值、间隔、反模式,以及一旦有效后该持续做什么。这些实践无论是对营销网站运行正常运行时间监控,还是跨SaaS结账流程做完整的合成事务监控,都适用。

“好”监控的标准(及大多数设置为何达不到)

一个可用的定义是:如果团队能从监控中首先得知所有面向客户的问题,而不是从客户那里得知,同时所收到的告警几乎都能执行行动,这就是好的监控。这个标准就是全部。

有三项指标评估:平均检测时间(MTTD)告诉你监控是否够快;平均恢复时间(MTTR)告诉你监控提供的数据是否足以修复问题;告警精准度——即真实且需立即处理的告警比例——则决定团队六个月后是否还会信任这些告警。大多数SRE团队会测量MTTD和MTTR,但大多数团队不测量精准度。这也是为什么许多值班轮换最终沦为无声确认和习得性无助。

接下来的内容将介绍如何同时推动这两个数字朝正确方向发展。

在完整请求路径上分层检查

单一的HTTPS检查就像只有一个传感器的烟雾报警器。它能告诉你有问题,但无法定位在哪里。当用户输入你的URL并等待页面渲染时,请求至少经过六个层面:DNS解析、TCP握手、TLS协商、HTTP响应、资源加载和客户端渲染最终视图。每层失败方式不同,根因也各异。

从DNS到事务的分层网站监控堆栈示意图,每一层对应其失败模式和推荐的检查类型
每层一个检查。每层有独特的失败面和修复方法。

实际设置如下:

  • DNS:从多个解析器检查A、AAAA、CNAME和MX记录是否解析到预期值。DNS问题最容易被忽视,事后排查最痛苦。最佳DNS监控工具可监测未授权记录变更、传播延迟和解析器特定故障。
  • TCP和ICMP:确认端口开放且网络路径健康。防火墙屏蔽443端口不会在相同网络段的HTTP检查中体现。
  • TLS:验证证书链、过期时间、主机名匹配和密码套件支持。大多数证书故障可预防——比如证书周日过期。应在60、30、14和3天时明确提醒。见如何监控SSL证书过期了解配置细节。
  • HTTP:状态码、响应时间及内容断言。状态200但响应体为空视为失败检查,不是成功。
  • 渲染和事务:驱动真实浏览器完成用户流程,断言最终状态的已知元素,并测量交互时间。合成监控使用真实浏览器能捕捉协议检查无法发现的问题——JavaScript错误、挂起的第三方脚本、缺失导致购物车按钮不可见的CSS文件。
  • API:API视为一流终端。站点加载成功但支付API超时导致无法完成结账,依然视为故障。API监控需要独立于依赖它的页面的检查计划。

出问题时,最先告警的层就是排查根因的起点。只监控HTTP的团队只能得到单一信息:故障;而全层监控团队拥有故障树。

合成监控和RUM并行运行,而非互相替代

两种方法回答不同问题,且并非相互替代。下表汇总了多数团队试用两季度后决定的配置分布。

能力 合成监控 真实用户监控(RUM)
数据源 受控地点的脚本化检查 真实访客浏览器
可在无流量时工作
稳定基线 是—相同脚本,相同地点 否—随流量结构变化
在用户前捕捉回归
反映真实设备和网络多样性 有限
最佳用途 SLA报告,主动告警,正常运行时间监控 真实体验分析,修复优先级排序
常见失败模式 遗漏未脚本化的边缘案例 通过Twitter获知故障

合成监控在固定时间表和地点运行脚本化检查。数据随时间保持一致,不受流量中断影响。它还能在凌晨3点在无真实用户注意到登陆页面崩溃时运行。这就是为何合成监控适合SLA报告、回归检测和主动告警。

RUM 捕捉真实浏览器的性能和错误数据,反映真实用户的设备、网络和地理分布。它是唯一能告诉你某移动运营商下2%的安卓用户首次字节时延达9秒的来源。RUM是了解真实体验和优先级排序的正确工具。

用合成监控确保站点在线并表现正常。用RUM了解这种表现如何映射到付费用户。选用其一而忽略另一方的团队,要么被边缘案例突袭(只用合成监控),要么从Twitter获知故障(只用RUM)。

同时看见你网站的两面

Dotcom-Monitor从全球检查点网络运行真实浏览器合成监控,并集成前端团队已收集的RUM数据。一个平台,两种视角。

开始免费试用 →

从创收地区监控

邻近的数据中心检查只能告诉你数据中心是否在线,却不能告诉你圣保罗的用户体验如何。

规则简单:在所有有显著收入贡献的地区部署检查点,外加一到两个控制地区。如果35%的销售来自EMEA,至少需两个EMEA检查点——一个设在主要市场如法兰克福或伦敦,一个设在次要市场如马德里或斯德哥尔摩。单点EMEA覆盖掩盖了区域ISP故障和CDN边缘节点故障。

三种值得配置的模式:

  1. 多地区确认后再通知。要求至少两个不同地区在60秒内重复失败才通知。单一区域故障通常是区域运营商或单点故障,而非网站故障。
  2. 区域基线设定。东京和爱荷华的访问速度不同,不应使用统一阈值。应按地区跟踪p95延迟,依据区域偏离触发告警,而非全球平均。
  3. 企业网络内的私有代理。若向企业销售服务,且其从自有防火墙后访问,需在其环境内运行检查点。私有代理捕捉由客户网络引起的问题,这些问题对客户来说仍是你的问题。

Dotcom-Monitor检查点网络覆盖30多个国家;开启的具体节点取决于收入来源,而非数据中心所在。

基于基线而非圆整数字设置阈值

最常见的监控错误是“响应时间>3秒报警”。3秒是个圆整数字。你的网站不在意圆整数字。若实际p95为4.2秒且稳定,你每天会因正常行为被呼叫24次;若实际p95为0.8秒降至2.5秒,你却没有任何告警因为2.5秒低于3秒。

解决方案是基于基线的阈值:

当10分钟窗口内持续p95超过(baseline p95 × 1.5) (baseline p95 + 2σ)中更大值,且条件持续两个连续评估窗口时触发告警。

该公式同时实现三点。1.5倍因子使不同快慢页面共享规则。2σ因子抑制正常波动。“两个连续窗口”规则屏蔽大多数因突发峰值而迅速恢复的虚假告警。

大多数团队跳过基线计算。应每周重算过去14天的基线,排除部署窗口和已知事件期。若不愿手动管理,可用自动基线的异常检测产品,但必须验证其排除逻辑。被上周事故污染的基线比无基线更糟。

正常工作时间检查的等效规则是:须两次连续且来自不同地区的失败检查才通知。单点失败基本都是监测点故障。双点故障才是真实故障。

设计告警,而不仅仅是检查

检查告诉你事件发生了。告警驱使人来处理。两者是不同问题,但多数团队只设计了前者。

告警设计的任务是把正确的信息以能在60秒内行动的形式送达正确的人。阻碍通常是:

  • 告警过多。如果值班工程师每班被叫超过三次,下一次告警会被敷衍应对。这不是道德问题,而是人类注意力的自然表现。
  • 无情境的告警。“结账慢”不可执行;“结账p95 4.8秒(基线1.1秒),欧洲地区,14:32 UTC开始,关联14:30部署abc123”则可执行。
  • 渠道错误。Slack非呼叫告警;邮件非呼叫告警;短信、推送或电话才是呼叫。混用渠道会稀释信号。

有效模式:

  1. 三级严重性、三种渠道。严重(网站宕机、支付失效)→短信或电话。警告(持续降级)→推送或带值班标记的聊天。信息(单次失败、基线漂移)→仪表盘或日报。信息不呼叫。
  2. 依赖抑制。DNS失败时不同时呼叫依赖DNS的14个HTTP检查。告警分组和依赖抑制是基本功能,不支持即是失眠之源。
  3. 升级网络非链条。主值班5分钟未确认,呼叫次值班并通知频道。串行升级耗时长,网站故障期间每跳耗时5分钟。
  4. 非关键告警静音时间。周日凌晨2点的性能回归通常不需要叫醒。关键告警需要。配置规则时要诚实区分两者。

测量精准度。每月统计触发的告警,标记为真实事件、误报、无需行动。精准度低于80%时,先修复最噪声告警再新增。

覆盖不可控部分

你的网站不仅是你的代码。现代结账页加载支付处理、标签管理、分析、聊天、小工具、A/B测试、CDN,甚至欺诈检测等第三方脚本。任何一方故障都能导致整页崩溃。

第三方依赖需独立监控:

  • 每区域CDN边缘响应时间。CDN确实会在区域事件中失效。
  • 支付网关往返时间。作为针对支付网关状态端点或沙箱的合成API检查。
  • 标签管理和分析脚本加载时间。作为合成事务一部分测量。阻塞性分析标签每页会加2秒延迟;需知晓。
  • 外部认证提供商(OAuth、SSO)。例如“用谷歌登录”按钮失效,要先知道,别等支持工单炸锅。
  • DNS提供商。从多个解析器进行DNS监控,捕捉传播延迟和部分故障。

记录各第三方阻断哪些用户流程。事件发生时,运行手册需明确正确操作是“回退”、“等待恢复”还是“呼叫供应商值班”。无此映射,所有第三方事件均成为即兴演出。

为每个监控绑定运行手册

事故最贵的五分钟是值班工程师试图理解告警含义的时间。

这项工作只需做一次:每个监控链接至一个运行手册条目。手册无需复杂。三部分足矣:

  1. 检查涵盖内容一句话说明。(“验证法兰克福和阿姆斯特丹的EU结账事务完成时间低于5秒。”)
  2. 触发时首先检查的五件事。状态页面链接、仪表盘、最近部署、相关告警、供应商状态页。
  3. 已知的误报模式,如有。(“法兰克福检查点偶尔因供应商维护窗口(周六UTC 02:00-02:30)超时,已抑制。”)

初次撰写需15分钟,后续每次事故节省15分钟。计算显而易见但多数团队仍未实践。

季度验证监控与覆盖审计

未经测试的监控只是愿望,不是保障。两种做法可发现缺口。

混沌演练告警。每季度有意破坏某检查——关闭测试端点、让阶段环境证书过期、将响应阈值降至0——确认告警触发、升级并送达正确人员。约三成告警首次演练失败。常见原因:过时的值班轮换、过期的集成令牌、无人维护的Slack频道。

季度覆盖图审计。维护一份文档列出所有用户流程、外部依赖和URL分类。标明覆盖的监控。空行即缺口。新功能通常落在缺口行。

审计还会发现反向问题:覆盖已不存在URL的监控。删除它们。针对410端点的监控永远制造噪音,却无保护作用。

告警数量与响应质量关系图,标注出每班约三次告警的疲劳阈值 每班超过三次告警,响应质量下降比告警量增长更快。

监控平台选择要点

多数平台能ping一个URL。真正差异在难题上。评估工具时,超越仪表盘演示,问:

  • 能否脚本化真实浏览器事务并支持条件逻辑?静态录制页面一变即断。可脚本化事务监控(Selenium式或专有)能应对正常产品迭代。
  • 支持多少原生协议?HTTP、HTTPS、DNS、FTP、SMTP、IMAP、POP3、TCP、UDP、ICMP。每外包一个即多一个供应商关系和登录账户。
  • 全球检查点布局如何?200个“检查点”却仅三个云区域的供应商并非全球。要城市列表。
  • 能否在内部网络运行?私有代理必需用于阶段环境、内部应用和客户私有部署监控。
  • 如何处理告警依赖和分组?一个DNS故障却呼叫14次的系统让人暴躁。
  • 数据导出形式?无法导出原始检查结果至自建分析堆栈,将无法排查疑难事件。
  • 与事故工具集成?PagerDuty、Opsgenie、Slack、Microsoft Teams、ServiceNow、Jira。原生集成胜过Webhook拼接。

欲了解更完整买家清单及评分标准,见如何选出最佳网站监控工具Datadog竞品与替代方案,了解各选手定位。

常见失败模式

以下模式几乎贯穿所有监控复盘。均不需新工具即可改正。

  • 多区域站点用单一全局阈值。快区上升,慢区退化,全球均值无异常,告警未触发。
  • 状态200检查无内容断言。CDN错误页空白200响应通过检查,上线即死。
  • 依赖真实账户的合成事务。密码过期、多因子认证激活、账户锁定。用具专属监控权限的服务账户。
  • 仅7天证书告警。7天是截止日非预警。届时多已告急。应在60、30、14、3天告警。SSL证书监控应先在测试环境部署。
  • 无部署关联。告警若未显示“3分钟前部署abc123后触发”,每次事件都需手工查git日志。将CI与监控注解联通。
  • 告警阈值从未收紧。两年前设“>5秒”阈值,现站点速度翻倍,阈值形同虚设。
  • 监控主页未监控关键业务流程。主页可用是虚荣指标,结账、注册和登录可用才是业务指标。

关于应用层细节——尤其是API、脚本化旅程和微服务拓扑,可配合Web应用监控最佳实践阅读。SEO层面为何延迟预算重要,见网站速度如何影响SEO

将操作手册付诸实践

从清单中选三条当前未覆盖的实践,本次迭代实现。完成后用混沌演练验证新监控。30天后审计精准度。

若平台成瓶颈,Dotcom-Monitor一站式覆盖全堆栈:真实浏览器合成监控、多协议检查、全球检查点网络带私有代理,以及针对上述模式打造的告警工程功能。见Web应用监控API监控DNS监控SSL证书监控,或直接看企业监控概览,适用更大环境。

试用本操作手册所用平台

来自30多个国家的真实浏览器监控、多协议检查、脚本化事务和尊重你休息的告警工程。

开始你的免费Dotcom-Monitor试用 → 无需信用卡。或查看价格

常见问题解答

我应该多久在生产网站上运行一次合成检查?
将检查频率与一分钟停机对收入的影响相匹配。结账和支付路径需要来自多个地区的1分钟检查。标准交易流程适合5分钟间隔。营销页面和博客可以设定为10到15分钟。低于1分钟的检查通常会产生噪音而非信号,因为大多数故障无论如何都需要超过一分钟的时间来检测、分类和解决。
合成监控与真实用户监控有什么区别?
合成监控按计划从受控位置运行脚本检查,因此数据一致并且即使流量为零也能工作。RUM 捕获来自实际访问者的性能数据,反映真实设备、网络和地理位置的组合,但仅能看到用户遇到的内容。使用合成监控进行主动检测和 SLA 报告。使用 RUM 了解真实世界体验并优先处理修复。
如何在不遗漏真实事件的情况下避免警报疲劳?
仅在需要人工处理且响应时间为几分钟的情况下发出通知。其他所有情况均转入队列、仪表盘或摘要。在正常运行时间检测中,要求至少两个地区连续发生两次故障后才发出通知。将性能警报设置为 p95 基线加上两个标准差,且持续时间为五到十分钟,而非单次样本超过固定值。在部署和维护窗口期间抑制警报。每月审计通知频率,删除任何超过三次触发但未采取行动的警报。
除了 HTTPS,我还应该监控哪些协议?
至少:DNS解析(A、AAAA、CNAME、MX记录)、TLS证书有效性及链条、应用端口的TCP可达性,以及用于网络路径健康的ICMP。如果依赖电子邮件,监控SMTP和DNS黑名单状态。如果运行API,需将API端点与其支持的网页区分开来监控。每一层的故障表现不同,单一的HTTPS检查无法告诉你是哪一层出现了问题。
合成事务监控应涵盖哪些内容?
实现收入或注册转化的最短路径:加载入口页面,完成用户在该页面上的主要操作,并通过内容断言验证成功状态。对于电子商务,这意味着搜索、加入购物车、开始结账,并确认结账页面正确显示预期商品。对于SaaS,这通常意味着登录、导航到主要工作区视图,并确认已加载已知的数据元素。跳过装饰性点击。每一个交易步骤都会增加运行时间、成本和失败风险。
Matthew Schmitz
About the Author
Matthew Schmitz
Dotcom-Monitor 负载与性能测试总监

作为 Dotcom-Monitor 的负载与性能测试总监,Matt 目前领导着一支由优秀工程师和开发人员组成的团队,共同为最严苛的企业需求打造先进的负载与性能测试解决方案。

Latest Web Performance Articles​

如何监控电话号码

防止电话线路无声中断。了解运营团队如何使用SIP检查和内部拨号测试来保持客户线路的顺畅运行。

立即免费启动Dotcom-Monitor

无需信用卡