2 分钟

如何构建用于内部工具可靠性跟踪的 Web 应用

学习如何设计并构建一个用于跟踪内部工具可靠性的 Web 应用:包含 SLIs/SLOs、事件工作流、仪表盘、告警与报告功能。

如何构建用于内部工具可靠性跟踪的 Web 应用

为可靠性跟踪设定目标和范围

在挑选指标或构建仪表盘之前,先决定你的可靠性应用负责什么——以及不负责什么。清晰的范围能防止工具变成没人信任的“运维门户”。

定义你要跟踪的内容

从列出应用将覆盖的内部工具开始(例如:工单系统、工资、CRM 集成、数据流水线)以及拥有或依赖它们的团队。明确边界:比如“面向客户的网站”可能不在范围内,而“内部管理控制台”在范围内。

就“可靠性”的含义达成共识

不同组织对这个词的理解不一。用白话写下工作定义——通常会包含:

  • 可用性:用户需要时能否访问?
  • 延迟:是否快到足以可用?
  • 错误:是否以用户可感知的方式失败(超时、作业失败、错误响应)?

如果团队意见不一致,你的应用最终会把不同事物拿来横向比较。

决定期望的结果

选择 1–3 个主要结果,例如:

  • 更快检测问题(缩短“发现时间”)
  • 为管理者和干系人提供更清晰的报告
  • 通过更好的跟进减少重复事件

这些结果将指导后续测量与呈现方式。

识别用户与角色

列出谁会使用应用以及他们做出的决策:调查事件的工程师、升级问题的支持、审查趋势的经理、需要状态更新的干系人。它会影响术语、权限和每个视图应显示的细节层级。

选择重要的可靠性指标(SLI / SLO)

如果大家不同意“好”的定义,可靠性跟踪就行不通。先区分三个容易混淆的术语。

SLI、SLO 与 SLA(通俗)

SLI(服务等级指标) 是一个度量:"多少百分比的请求成功?" 或者 "页面加载花了多长时间?"

SLO(服务等级目标) 是该度量的目标:"30 天内 99.9% 成功率。"

SLA(服务等级协议) 是带有后果的承诺,通常面向外部(赔偿、罚则)。对于内部工具,常常设置 SLO 而非正式的 SLA——既能对齐期望,又不把可靠性变成合同法问题。

每个工具选小而一致的 SLI 集合

保持各工具可比且易于解释。一个实用的基线是:

  • 可用性/正常运行时间:工具是否可达?
  • 响应时间:关键页面或端点的响应速度如何?
  • 错误率:检查或请求失败的比例(5xx、超时、已知失败状态)?

在能回答“该指标会驱动什么决策?”前,避免添加更多指标。

选择与思维方式匹配的时间窗口

使用滚动窗口,让记分卡持续更新:

  • 7 天:快速捕捉回归
  • 30 天:月度报告与趋势
  • 90 天:季度层面的稳定性

用明确的严重级别定义事件

你的应用应把指标转化为可操作项。定义严重级别(如 Sev1–Sev3)和明确触发条件,例如:

  • Sev1:工具宕机或关键工作流被阻塞超过 X 分钟
  • Sev2:主要降级(例如错误率在 Z 分钟内高于 Y%)
  • Sev3:轻微或间歇性故障

这些定义使告警、事件时间线和错误预算跟踪在各团队间一致。

规划数据来源与摄取方式

可靠性跟踪应用的可信度取决于其背后的数据。在构建摄取管道前,映射出你将视为“真实”的每个信号,并写明它回答了哪个问题(可用性、延迟、错误、部署影响、事件响应)。

映射已有数据源

大多数团队可以使用混合手段覆盖基础:

  • 状态检查 / 合成探针(正常运行时间与基础响应时间)
  • 指标(延迟百分位、错误率、饱和度)
  • 日志(错误计数、失败最多的端点)
  • 追踪(延迟在依赖间的分布)
  • 工单/事件工具(事件开始/结束、严重度、负责人、事后复盘链接)

明确哪些系统是权威来源。例如,你的“可用性 SLI”可能仅来自合成探针,而不是服务器日志。

决定 pull 还是 push(以及频率)

  • Pull 适合 API(Prometheus、云监控、工单):应用按计划轮询。
  • Push 适合高频事件(部署、事件、告警):系统将 webhook/事件推送到应用。

按用例设定更新频率:仪表盘可每 1–5 分钟刷新,记分卡可每小时/每天计算一次。

规范标识符与归属

工具/服务环境(prod/stage)和 负责人 创建一致的 ID。尽早达成命名规则,以免出现 “Payments-API”、“payments_api” 和 “payments” 成为三个不同实体的情况。

保留期与隐私

规划保存哪些数据以及保存多长时间(例如:原始事件 30–90 天,日聚合 12–24 个月)。避免摄取敏感负载;仅存储可靠性分析所需的元数据(时间戳、状态码、延迟桶、事件标签)。

设计数据模型与数据库 schema

你的 schema 应让两件事变得容易:回答日常问题(“这个工具健康吗?”)和在事件中重建发生了什么(“症状何时开始,谁改了什么,哪些告警触发?”)。从一小组核心实体开始,并显式定义关系。

核心实体(从最小开始)

  • Tool/Service:被跟踪的内部工具(名称、描述、环境、关键性)。
  • Check:与工具绑定的具体可用性或合成检查(类型、目标 URL、调度、启用状态)。
  • Metric:与工具或检查关联的时序数据点(延迟、成功率、错误计数)。
  • SLO:目标与评估窗口(如 30 天内 99.9%)以及错误预算设置。
  • Incident:影响可靠性的事件(严重度、状态、开始/结束、摘要)。
  • Event:事件时间线记录(状态更改、备注、收到告警、采取的缓解措施)。
  • Owner:负责该工具的团队或个人。

使查询简单的关系

一个实用的基线是:

  • Tool 有多个 Check(并且可以有多个 SLO)。
  • Check 有多个 Metric(或多个指标流)。
  • Incident 属于 Tool,并且 Incident 有多个 Event 作为时间线。
  • Tool 属于 Owner(如果常见共享归属,可用多对多)。

该结构支持仪表盘(“tool → 当前状态 → 最近事件”)和下钻(“incident → events → 相关检查与指标”)。

审计字段与标签系统

在需要问责与历史记录的地方加入审计字段:

  • created_by, created_at, updated_at
  • status 以及 状态变更追踪(可以放在 Event 表或专门的历史表中)

最后,加入灵活的 标签 以便筛选和报告(比如 team、criticality、system、compliance)。一个 tool_tags 连接表(tool_id, key, value)能保持标签一致,并简化后续记分卡与汇总统计的实现。

选择技术栈与部署模型

你的可靠性跟踪器应该是“无惊喜”的:易运行、易变更、易维护。对你的团队而言“正确”的栈通常是能被团队在不做英雄式救火下维护的方案。

从团队熟悉的技术开始

选用团队熟悉的主流 Web 框架 —— Node/ExpressDjangoRails 都是稳妥的选项。优先考虑:

  • 清晰约定(便于新贡献者上手)
  • 良好的认证、后台任务与图表库
  • 可预测的升级路径

如果要与公司内部系统(SSO、工单、聊天)集成,选择集成最便捷的生态。

若想加速首个迭代,像 Koder.ai 这样的低代码/聊天驱动平台可以作为开始:你可以在对话中描述实体(tools、checks、SLOs、incidents)、工作流(告警 → 事件 → 事后复盘)与仪表盘,然后快速生成可运行的 Web 应用脚手架。Koder.ai 通常面向前端 React、后端 Go + PostgreSQL,与很多团队偏好的“易维护”默认栈契合——且可以导出源码以便后续迁移到完全手动的流水线。

以数据库为中心,逐步添加配套组件

对大多数内部可靠性应用,PostgreSQL 是默认正确选择:它擅长关系型报告、基于时间的查询与审计。

仅在确实解决现实问题时添加额外组件:

  • 缓存(如 Redis)——当面板变慢或受上游 API 速率限制时
  • 队列/后台任务(Redis + worker、Sidekiq、Celery、BullMQ)——用于轮询、发送通知与生成报告

托管与部署模型

在以下之间权衡:

  • 内部云 / Kubernetes:当需更紧密访问内部服务时
  • PaaS:当你想简化运维并快速迭代时

无论选择哪种方式,标准化 dev/staging/prod 并自动化部署(CI/CD),以免更改悄然影响可靠性数据。如果使用平台型方案(包括 Koder.ai),关注环境隔离、部署/托管与快速回滚(快照)等功能,这样可以在不破坏跟踪器本身的前提下安全迭代。

值得信赖的配置管理

把环境变量、密钥与功能开关的配置文档集中管理。保留清晰的“如何本地运行”指南与最小化运行手册(当摄取停止、队列积压或数据库达上限时该怎么做)。一个放在 /docs 的简短页面通常就足够了。

设计 UX:仪表盘、下钻与工作流

构建前先规划范围
使用规划模式映射工具、角色和边界,让首个版本保持聚焦。

可靠性跟踪应用的成功在于人们能否在几秒内回答两个问题:“我们还好吗?”和“下一步我该做什么?”围绕这些决策设计视图,确保从概览 → 具体工具 → 具体事件的导航清晰。

主页:快速健康读数

把主页做成紧凑的指挥中心。以整体健康摘要为首(例如:满足 SLO 的工具数量、活跃事件、当前最大风险),然后展示最近事件与告警的状态徽章。

让默认视图保持冷静:仅突出需要关注的项。每个卡片都应直接下钻到受影响的工具或事件。

工具页:从状态到行动

每个工具页应回答“这个工具是否可靠?”和“为什么/为什么不?”包括:

  • 当前 SLO 状态(简单的通过/未通过)与剩余错误预算
  • 可选时间范围内的可用性、延迟或错误率图表
  • 最近变更(部署、配置编辑、检查更新),以便模式一目了然
  • 运行手册与负责人:突出“该做什么”的部分,并提供链接和联系人

为非专家设计图表:标注单位、标出 SLO 阈值,并添加小的解释(提示),而非密集的技术控件。

事件页:共享上下文与时间线

事件页是一个活的记录。包括时间线(自动捕获的事件如告警触发、确认、缓解),人工更新、受影响用户与所采取的行动。

让更新易于发布:一个文本框、预定义状态(Investigating/Identified/Monitoring/Resolved)与可选内部备注。事件关闭后,提供“开始事后复盘”操作,并用时间线预填事实。

管理页面:归属与一致性

管理员需要简单的界面来管理工具、检查、SLO 目标与负责人。以正确性为优化目标:合理默认值、验证规则以及在更改影响报告时的警告。显示明显的“最后编辑”轨迹,让人们信任数据。

实现认证、权限与审计轨迹

只有在数据可信时可靠性数据才有用。这意味着把每次变更与身份绑定,限制谁能做高影响修改,并保留清晰的历史以便在复盘中回溯。

认证:使用公司已有的方案

对内部工具,默认使用 SSO(SAML)或通过身份提供商的 OAuth/OIDC(Okta、Azure AD、Google Workspace)。这样能降低密码管理负担并自动完成入职/离职。

实用细节:

  • 强制 IdP 提供的 MFA(不要重做实现)。
  • 在登录时将 IdP 组映射到应用角色。
  • 设置较短的会话时长并支持手动登出。

权限:基于角色,保护高影响操作

从简单角色开始,仅在必要时再引入更细粒度规则:

  • Viewer:只读仪表盘与记分卡
  • Editor:创建/更新检查、事件与备注
  • Admin:管理 SLO 定义、阈值、集成与用户/角色映射

保护会影响可靠性结果或报告叙事的操作:

  • 仅 Admin 能修改 SLO 目标、告警阈值或数据源映射
  • 限制谁能关闭事件或将其标记为“已解决”,并要求填写解决摘要

审计轨迹:不可变的变更历史

记录所有对 SLO、检查与事件字段的编辑,包括:

  • 做变更的人(用户 + 角色)
  • 变更时间(时间戳)
  • 变更内容(前/后值)
  • 来源(UI、API、自动化)

使审计日志可搜索并在相关详情页可见(例如事件页显示其完整变更历史)。这有助于复盘时以事实为依据,减少来回争论。

构建监测检查与正常运行时间采集

监测是可靠性应用的“传感层”:它把真实行为转成可被信任的数据。对于内部工具,合成检测通常是最快的路径,因为你可以控制“健康”的定义。

为每个工具定义合成检查

从覆盖大多数内部应用的一小组检查类型开始:

  • HTTP ping:确认服务有响应(状态码、TLS、基础头部)
  • 端点验证:访问已知 URL 并验证有意义的内容(期望的 JSON 结构、HTML 中的关键字符串或健康端点返回)
  • 无登录“烟雾”路径:如果可能,测试反映用户体验的只读流程(例如加载仪表盘页面并验证渲染)

保持检查的确定性。如果验证可能因内容变动而失败,就会产生噪音并侵蚀信任。

收集正常运行时间与延迟(并明智存储)

每次检查运行时,采集:

  • 时间戳(开始与结束)
  • 结果:up/down/unknown
  • 延迟:总耗时(可选测量 DNS/connect/TTFB)
  • 原因:错误码、超时、验证失败或异常信息

事件级时序(每次检查一行)或聚合区间(例如每分钟汇总计数与 p95 延迟)形式存储。事件数据利于调试;聚合利于快速仪表盘展示。许多团队两者并存:保留原始事件 7–30 天,长期使用汇总数据。

明确区分宕机与缺失数据

缺失的检查结果不应自动等同于“宕机”。添加明确的 unknown(未知) 状态以覆盖诸如:

  • 检测器 worker 停止
  • 检测器与目标间网络分区
  • 配置在运行中被移除

这样可防止停机被夸大,并将“监测缺口”作为独立的运维问题暴露。

用后台任务按计划运行检查

使用后台 worker(类 cron 调度、队列)在固定间隔运行检查(例如对关键工具每 30–60 秒)。内置超时、退避重试与并发限制,以免检测器压垮被测内部服务。持久化每次运行结果(即便失败),以便你的正常运行时间仪表盘既能显示当前状态也能展现可靠的历史。

创建告警与通知流程

从 Go 和 Postgres 开始
生成可维护的后端,PostgreSQL 模式与工具、检查、SLOs 和事件对齐。

告警是可靠性跟踪转化为行动的地方。目标很简单:在合适的时间把合适的上下文发送给合适的人——且不淹没所有人。

将告警与 SLO 关联(而非仅仅阈值)

先定义直接映射到你 SLIs/SLOs 的告警规则。两个实用模式:

  • 燃烧率告警(Burn-rate):当错误预算被快速消耗时触发,若不改变将导致 SLO 失败
  • 阈值违背:当指标在明确边界上越过时发出警告(例如 15 分钟内可用性低于 99.5%)

为每条规则保存“为什么”与“是什么”:受影响的 SLO、评估窗口与意图严重度。

让通知具有可执行性

通过团队常用渠道发送(邮件、Slack、Microsoft Teams)。每条消息应包含:

  • 一行摘要(服务 + 症状 + 严重度)
  • 指向相关仪表盘视图的直接链接(例如 /services/payments?window=1h)
  • 若创建事件,提供事件链接(例如 /incidents/123)

避免直接丢原始指标;提供简短“下一步”建议,如“检查最近部署”或“查看日志”。

通过去重、分组与静默时段减少噪音

实现:

  • 去重(相同告警指纹 → 更新现有线程)
  • 分组(一个事件可以收集多个相关告警)
  • 静默时段 和 路由规则,使低严重度告警不打扰值班人员

支持升级与值班路由

即便是内部工具,人们也需要控制权。添加手动升级按钮(在告警/事件页)并集成值班工具(PagerDuty/Opsgenie 等),或至少在应用里存储可配置的轮值列表。

添加事件管理与事后复盘功能

事件管理把“我们收到了告警”变成可共享、可跟踪的响应。把它内建到可靠性应用中,让人员无需切换工具即可从信号走到协调。

一键创建事件

应能从告警、服务页或正常运行时间图表直接创建事件。预填关键字段(服务、环境、告警来源、首次出现时间)并分配唯一事件 ID。

一套良好的默认字段保持轻量:严重度、客户影响(受影响的内部团队)、当前负责人与触发告警的链接。

状态生命周期与协作

使用与团队实际工作匹配的简单生命周期:

  • OpenInvestigatingMitigatedResolved

每次状态变更应记录执行者与时间。添加时间线更新(简短、带时间戳的备注),并支持附件与运行手册和工单链接(例如 /runbooks/payments-retries 或 /tickets/INC-1234)。这成为“发生了什么与我们做了什么”的单一线程。

带行动项的事后复盘

事后复盘应易于启动且可一致复核。提供模版,包含:

  • 摘要、影响、检测与根因
  • 促成因素(包括流程缺口)
  • 有效/无效之处
  • 跟进行动与负责人及截止日期

把行动项与事件关联,跟踪完成情况,并在团队仪表盘上显示逾期项。如果支持“学习回顾”,允许“无责怪”模式,侧重系统与流程层面的改进而非个人错误。

报告与可靠性记分卡

随时导出源码
当你要迁移到自有流水线时,通过导出代码保持完全控制。

报告把可靠性跟踪变成决策依据。仪表盘帮助运营;记分卡帮助领导理解内部工具是否在改善、哪些领域需要投入以及“好”的标准是什么。

记分卡应包含的内容

为每个工具(可选按团队)构建一致、可复现的视图,快速回答:

  • SLO 合规情况随时间变化:展示当前周期(周/月/季度)和相对于 SLO 的趋势线。
  • 最不可靠工具:按未达标 SLO、停机分钟数或最高错误预算消耗排名。
  • MTTR:中位与 p90 恢复时间,避免单次长事件掩盖模式。
  • 事件计数:总事件数并按严重度统计(Sev1–Sev3),与上周期比较。

在可能的地方,添加轻量上下文:“因两次部署导致 SLO 未达”或“大部分停机源自依赖 X”,但不要把报告变成完整事件复盘。

让领导报告可用的筛选器

领导通常不想看“所有东西”。添加 团队工具重要性(例如 Tier 0–3)与 时间窗口 筛选。确保同一工具能出现在多个汇总中(平台团队拥有它,财务依赖它)。

摘要与导出

提供可分享的周报与月报:

  • 一键 CSV 导出 以供电子表格使用
  • 干净的 PDF 导出 用于状态复盘

保持叙述一致(“自上期有何变化?”、“哪些地方超出预算?”)。如果需要为干系人准备入门材料,链到短文档如 /blog/sli-slo-basics。

安全、数据质量与运营加固

可靠性跟踪器很快会成为事实来源。把它当作生产系统对待:默认安全、防止错误数据并在出问题时易于恢复。

保护应用暴露面

锁定每个端点 —— 即使是“仅内部可见”的端点也一样:

  • 在边界验证输入(类型、范围、允许枚举、最大载荷)并拒绝未知字段
  • 为每个用户/服务令牌添加速率限制,防止噪声客户端压垮摄取或仪表盘
  • 使用参数化查询与安全 ORM 模式防止注入问题

密钥与访问控制

把凭据从代码与日志中剥离。把密钥存放在密钥管理器并定期轮换。赋予 Web 应用最小权限的数据库访问:区分读/写角色,仅允许访问必要表,并尽可能使用短期凭证。浏览器↔应用与应用↔数据库之间使用 TLS 加密传输。

数据质量护栏

可靠性指标仅在底层事件可信时有用。添加服务器端校验(时间戳时区/时钟偏差)、必填字段与幂等键以去重重试。将摄取错误记录到死信队列或“隔离”表,避免坏事件污染仪表盘。

基本运维(不可跳过)

自动化数据库迁移与回滚测试。安排备份并定期做恢复测试,记录最小化的灾难恢复计划(谁、什么、需要多久)。

最后,让可靠性应用本身可靠:添加健康检查、队列滞后与数据库延迟监控,并在摄取静默掉到 0 时告警。

推广计划与迭代路线图

可靠性跟踪应用的成功在于人们信任并实际使用它。把首个发布当作学习循环,而不是“大爆炸”式上线。

从聚焦试点开始

选择 2–3 个被广泛使用且有明确负责人内部工具。实现一小组检查(例如:首页可用性、登录成功与关键 API 端点)并发布一个能回答“它是否可用?若不可用,发生了什么变化、谁负责?”的仪表盘。

把试点保持可见但受限:一支团队或一小群高级用户足以验证流程。

在最痛处收集反馈

在最初 1–2 周内,积极收集反馈:

  • 什么感觉令人困惑(指标名、图表、筛选、定义)
  • 哪些噪音太多(与用户影响不对应的告警)
  • 缺什么(归属、运行手册、事件链接)

把反馈转为具体待办。每个图表上放一个“报告此指标问题”按钮,通常能快速暴露最关键的洞见。

逐步迭代集成与自动化

按层次增加价值:先接入聊天工具用于通知,再接入事件工具用于自动建单,随后接入 CI/CD 以添加部署标记。每个集成都应减少手工工作或缩短诊断时间,否则只是增加复杂度。

如果你在快速原型阶段,考虑使用 Koder.ai 的 planning mode 来映射初始范围(实体、角色与工作流)再生成首个构建。这是在团队细化定义时保持 MVP 简洁的简单方法;且因支持快照与回滚,你可以在不破坏系统的前提下安全迭代仪表盘与摄取逻辑。

定义成功指标并扩展

在向更多团队推广前,定义成功指标,如仪表盘周活用户数、检测时间缩短、重复告警减少或定期的 SLO 审查率。在 /blog/reliability-tracking-roadmap 发布轻量路线图,并按工具逐步扩展,确保有明确负责人和培训环节。

常见问题

在为可靠性跟踪构建仪表盘之前的第一步是什么?

先定义范围(包含哪些工具和环境)以及你们对“可靠性”的工作性定义(可用性、延迟、错误)。然后选 1–3 个你想改进的结果(例如更快的检测、更清晰的报告),并围绕用户需要做出的核心决策设计首批界面:“我们还好吗?”和“下一步我该做什么?”

对于内部工具,SLI、SLO 和 SLA 有何区别?

一个 SLI 是你测量的内容(例如:成功请求的百分比、p95 延迟)。一个 SLO 是该测量的目标(例如:30 天内 99.9%)。SLA 是带有后果的正式承诺(通常面向外部)。对于内部工具,通常使用 SLO 来对齐期望,而不是引入 SLA 那样的法律/合约约束。

大多数内部工具我应该跟踪哪些指标?

使用一组小而通用的基线指标,便于跨工具比较:

  • 可用性/正常运行时间(需要时是否可访问)
  • 延迟/响应时间(是否足够快)
  • 错误率(超时、5xx、作业失败、已知错误状态)

只有在能说清楚该指标将驱动什么决策(告警、优先级、容量工作等)时,才添加更多指标。

哪些时间窗口适用于 SLO 报告?

使用滚动窗口让记分卡持续更新:

  • 7 天:快速发现回归
  • 30 天:月度报告
  • 90 天:季度稳定性

选择与组织审查频率匹配的窗口,使数字直观并被采用。

如何以一致的方式定义事件和严重级别?

将严重级别与用户影响和持续时间绑定,定义明确的触发条件,例如:

  • Sev1:工具宕机或关键流程被阻塞超过 X 分钟
  • Sev2:严重降级(例如错误率在 Z 分钟内高于 Y%)
  • Sev3:轻微或间歇性问题

把这些规则写在系统里,这样告警、事件时间线和报告在各团队间一致。

可靠性跟踪应用应当摄取哪些数据源?

先为每个问题映射“可信来源”:

  • 合成检测用于 正常运行时间 和基础响应时间
  • 指标用于 延迟百分位 和错误率
  • 日志/链路用于 调试上下文
  • 工单/事件工具用于 事件元数据

明确例如“正常运行时间 SLI 仅来自探针”,否则团队会争论哪个数字可被接受。

何时使用 push 与 pull 的数据摄取方式?

对可轮询的系统(监控 API、工单 API)使用 pull;对高频或近实时事件(部署、告警、事件更新)使用 push(webhook/事件)。常见分工是仪表盘每 1–5 分钟刷新一次,而记分卡按小时或每天计算。

可靠性跟踪的实用数据库模式是什么样的?

通常需要的表/实体:

  • Tool/Service(负责人、环境、重要性)
  • Check(被探测项、调度)
  • Metric(时序点或汇总)
  • SLO(目标 + 评估窗口)
  • Incident(严重度、开始/结束、状态)
  • Event(时间线条目)
  • Owner(团队/个人)

显式定义关系(tool → checks → metrics;incident → events)以便“概览 → 下钻”查询简单高效。

我如何添加会让人信任的权限与审计追踪?

对所有高影响变更记录 何时前后变化 以及来源(UI/API/自动化)。并结合基于角色的访问控制:

  • Viewer:只读
  • Editor:创建/更新检查和事件更新
  • Admin:修改 SLO 目标、阈值、集成

这些守则阻止悄然更改,从而维护可靠性数据的信任度。

在正常运行时间计算中我该如何处理缺失的监控数据?

将缺失的监测数据视为单独的 unknown(未知) 状态,而不是自动计为“宕机”。缺失数据可能来自:

  • 检测 worker 停止
  • 检测器与目标间的网络分区
  • 配置在运行中被移除

把“未知”可视化可以避免夸大停机时间,也能把监控缺口当作独立的运维问题暴露出来。

Related posts