运行概览
所有启用中的项目共用同一套检查频率和判定规则。系统每 15 分钟寻找已到期的项目,再由异步队列执行实际检查;每个项目的常规定时检查间隔为 4 小时。
- 1寻找任务定时扫描、立即检查或异常复检
- 2抓取页面跟随跳转并读取有限大小的 HTML
- 3分析结果检查响应、内容、基线变化与 CSS
- 4协调事件建立疑似事件、确认故障或判定恢复
- 5更新状态写入历史并刷新公开状态数据
页面状态定义
“正常、网站故障、CSS 异常、确认中、疑似拦截、等待”描述的是当前状态;“最近 24 小时故障”描述的是一段时间内确认过的独立事件,两者不能直接互换。
| 页面显示 | 含义 | 是否计入异常网站 |
|---|---|---|
| 正常 | 项目已检查,当前没有已确认故障、疑似故障或监控拦截。 | 否 |
| 网站故障 | 页面访问、HTTP 响应、页面内容或健康基线故障已连续两次出现。 | 是 |
| CSS 异常 | 样式表消失、加载失败或返回了错误内容;与网站本身的访问故障分开展示。 | 是 |
| 确认中 | 第一次发现真实故障迹象,系统已安排约 90 秒后的快速复检。 | 否,复检确认后才计入 |
| 疑似拦截 | 监控端只取得限流、防火墙或整页人机验证响应,无法检查真实业务页面。 | 否,单独统计 |
| 等待检查 | 项目已经启用,但尚未完成首次检查。 | 归入“等待 / 暂停” |
| 已暂停 | 项目被人为暂停,不再参加定时检查和整体可用率计算。 | 归入“等待 / 暂停” |
它只说明监控请求未能越过防火墙、限流或整页验证。系统会单独展示这一状态,不将它计入当前异常、故障事件或可用率分母。
GA4 / GTM 监控保存为站点级追踪状态,不会把“新增待确认”直接算作网站故障。normal 表示当前标识集合与基准一致;change_pending 表示只发现新增标识,后台可点击“忽略变更”建立新基准;anomaly_missing 表示基准中的标识缺失;anomaly_replaced 表示标识被替换。后两者会生成 tracking_identifier_anomaly 高严重度异常标记,并沿用现有的故障确认与恢复流程;首次尚无基准时的 scan_error,或已有基准本轮的解析未完成,都只表示扫描不完整,不直接认定追踪代码缺失。
故障确认与恢复
系统使用故障指纹区分不同事件。指纹会综合故障类型、相关资源地址和 HTTP 状态等信息;只有同一个指纹再次出现,才会确认原来的疑似故障。
防火墙、限流或整页验证会立即显示为“疑似拦截”并安排复检,但不会被当成真实网站故障;一旦取得完整健康页面,拦截状态会立即解除。
当前检查范围
每次任务会检查页面本身,并在条件允许时抽查少量样式资源。下列问题会形成真实故障发现:
网络错误、连接失败或请求超过 15 秒。
最终响应状态低于 200 或达到 400 以上。
首页不是 HTML、内容为空或显示常见程序错误页。
虽然返回 HTTP 200,但内容与该网站学习到的 404 页面高度相似。
页面 HTML 和文字量相对近期健康基线同时显著减少。
原有样式表全部消失,或抽查到 CSS 无法加载、内容类型错误;资源请求会携带原页面来源以兼容常见防盗链规则。
从 HTML 收集 GA4 与 GTM 标识,并对每页最多 3 个 GTM 容器解析最多 512 KB 的 gtm.js;不执行脚本。新增标识等待后台确认,既有标识缺失或替换会形成异常标记。
这项检查只针对可取得的正常 HTML 页面运行;系统不要求用户预先填写 Measurement ID,而是从页面和 GTM 容器中建立、保存并比较实际发现的标识集合。
从原始 HTML 静态提取 G-...(GA4 Measurement ID)和 GTM-...(GTM 容器 ID);对 HTML 中发现的 GTM 容器请求公开的 https://www.googletagmanager.com/gtm.js?id=...,再从返回的 JavaScript 文本中提取可能的 GA4 ID。相同 ID 去重后按 ga4:G-...、gtm:GTM-... 的类型化形式保存。
每个页面最多请求 3 个 GTM 容器,容器请求并行执行,单个请求超时为 10 秒,单个 gtm.js 最多读取 512 KB;因此最多增加 3 个有界的公开资源请求,不启动浏览器,也不执行页面或 GTM JavaScript。
只有页面本身是正常的 2xx HTML,且所有发现的容器均成功返回非空、未超限的脚本,容器数量和标识总量也在上限内,才会把本轮结果作为完整扫描用于比较。首次完整扫描自动建立基准。
当前集合与基准相同为正常;只有新增标识时进入“新增待确认”;基准标识有缺失时进入追踪异常,同数量的新旧标识替换会单独标记为“替换异常”。系统记录完整 ID 和新增 / 移除列表,便于区分“增加”与“被覆盖”。
“忽略变更”只对完整扫描且没有移除旧标识的“新增待确认”生效:它会把当前观察到的集合写成新的基准并恢复正常。缺失或替换异常不能通过该按钮静默确认。
这项逻辑保存用于差异比较的 GA4 / GTM 标识、扫描结果和异常证据;标识本身来自公开页面配置,不是 GA4 数据或 API 密钥。系统不主动采集 GA4 事件、Cookie、用户标识,也不执行浏览器运行时埋点。
系统先判断是否已经取得 HTTP 2xx、正常标题和足量业务正文;完整正常内容优先判定为正常。页面仅仅包含 reCAPTCHA、hCaptcha、Turnstile 或“captcha”字样,不足以触发拦截。只有 HTTP 403/429、异常的极短 202 响应、挑战标题或文案、Cloudflare 挑战令牌和页面内容极少等证据形成可信组合时,才会显示“疑似拦截”。
拿到完整业务页面时,即使联系表单内嵌验证码,也按正常页面继续执行错误页、软 404、内容基线和 CSS 检查。
不会依赖单个关键词;状态码、挑战特征、标题、正文与页面体积会共同决定是否属于整页拦截。
只能取得挑战响应时显示“疑似拦截”,表示监控能力受限,不表示网站已经宕机。
历史色块与统计口径
每个色块是一条实际检查记录,最新结果位于最右侧。绿色代表正常,红色代表网站故障,紫色代表 CSS 异常,红紫双色表示两类问题同时存在,橙色代表疑似拦截,灰色代表尚无记录。
“监控概况”中的“追踪代码变更”统计纯新增标识的启用站点;“追踪代码异常”统计基准标识缺失的启用站点,同数量的标识替换也属于异常。解析未完成时沿用上次完整扫描的追踪状态;暂停站点不计入这两项。
追踪代码变更时名称显示为橙色,追踪代码异常时显示为红色;悬停名称可查看说明。历史色块只呈现页面、CSS 与拦截检查;仅有追踪异常的检查不会把色块涂成网站故障色。追踪异常仍按现有普通故障事件和可用率口径统计。
最近最多 90 次检查中,正常检查数除以正常与各类故障检查总数。无法确认的检查不进入分母。
所有启用项目最近最多 90 次有效检查合并计算;暂停项目和无法确认的检查不参与。
按确认时间统计独立故障事件,包括仍在异常和已经恢复的事件。同一个故障反复检查失败仍只算一件,不等于异常网站数或失败检查数。
当前异常网站为 0,但最近 24 小时故障为 2,表示这两件故障已在统计窗口内确认,随后均已恢复。
调度、历史与数据更新
- 新建项目加入后立即排入首次检查,不必等待下一轮 4 小时周期。
- 修改名称保留原有检查历史、故障事件和健康基线。
- 修改网址清空旧目标的历史、故障状态和健康基线,并立即检查新网址。
- 定时任务Cron 每 15 分钟扫描到期项目;实际网络检查由 Cloudflare Queue 异步处理。
- 额外复检定时或手动检查需要确认时,最多安排一次约 90 秒后的额外检查;复检本身不会继续派生复检。
- 追踪基准首次完整 HTML + GTM.js 扫描自动建立 GA4/GTM 标识基准;系统记录类型化 ID、数量以及新增 / 移除差异。仅新增标识进入“新增待确认”,后台点击“忽略变更”后才把当前集合确认为新基准;缺失或替换既有标识会生成追踪异常。修改监控网址会删除旧追踪基准,由新网址重新建立。
- 历史保留每个网站最多保留最近 90 条检查结果;较旧结果和相关证据会被清理。
- 公开页面浏览器每 15 分钟自动重新读取状态;检查或项目变化后会切换到新的缓存版本。
能力边界
网站哨兵是一套轻量的静态可用性与页面完整性监控,不等同于真实用户浏览器或完整的端到端测试。
- 不会执行页面 JavaScript,因此无法验证登录、结账、表单提交等交互流程。
- 会跟随 HTTP 跳转,但主要判断最终页面的静态响应与内容。
- 单次只读取有限大小的 HTML,并最多轮换抽查少量 CSS 资源。
- GTM.js 仅做有限大小的静态文本解析;无法获取、超出读取上限或容器过多时标记为解析未完成,保留上一份基准,不直接判定 GA4 缺失。
- 这不是 GTM 管理 API 或浏览器运行检查:运行时拼接、接口下发、服务端 GTM 或未出现在 HTML / 返回脚本文本中的 ID 可能无法发现;发现不到 ID 也不等于 GA4 实际一定没有生效。
- 页面被拦截、返回非正常 HTML 或已有其他页面故障时,不把不完整的追踪结果拿来覆盖基准;本功能只对能稳定取得的页面源码尽力判断。
- 系统记录完整标识而不只是数量,因此同数量的 ID 替换也能被识别;标识只用于追踪配置差异,不代表 GA4 后台的实际收数状态。
- 健康基线来自近期成功检查;新项目需要积累样本后,内容坍缩判断才会生效。
- 监控端可访问不代表所有地区、网络和真实用户均可访问。
- “正常”表示当前规则没有发现异常证据,不是对网站所有业务功能的保证。