LurusTech

构件

Lurus Witness · 见证

成熟度:早期试点

回答一个问题:你环境里的这套系统现在是什么状态,以及我们对这个判断有多确定。

platform-corev1.4.2 正常版本来自服务自报 · 健康来自自省实证12 秒前

示例 · 每条读数都带着它的来历

证据强度

同样是「正常」,分量不同。

platform-corev1.4.2 正常版本来自服务自报 · 健康来自自省实证12 秒前

app/postgres15.8 正常版本来自镜像标签 · 健康来自宿主证据(容器状态)40 秒前

客户自建 supabase? 正常(推断)版本未知 · 健康为黑盒推断(仅可达性)40 秒前

示例 · 自省实证、宿主证据、黑盒推断,由强到弱

每个组件的版本和健康都必须附带来历,界面必须把来历显示出来。 我们不承诺全绿,只承诺每个绿点都标明它的证据强度。

版本从哪来:version.source

版本号从不单独出现。self_report 是组件自报;image_tag 读自镜像标签,只说明部署了什么;blackbox_inferred 从外部特征推测,不能用来判断升级了没有;unknown 显示为 ?,绝不显示成 latest。

组件返回 dev、unknown 这类占位字面量时,一律降级为未知。 很多组件本来就不自报版本,显示 ? 是准确,不是缺陷。

健康从哪来:health.evidence_class

introspected:组件自己的健康或就绪接口回答了。host:在它所在的主机上看到的,如容器状态、服务单元、磁盘用量、备份文件时间。blackbox:只有外部信号,如状态码、证书到期日、端口是否接受连接。

黑盒推断的「正常」只证明能连上,不证明功能对。连接失败也不算自省: 我们只知道连不上,证据降级为黑盒。

陈旧不是正常,未知不是故障

nginx vhost— 陈旧采集器 3 小时未上报 —— 这不是「正常」,是「不知道」

读数超过判定窗口 max(3 × 上报间隔, 180 秒) 即显示陈旧, 不沿用上一次的绿色。服务端判一次,大屏再用本机时钟判一次,取更悲观的结论。

探针自己的命令失败、超时或解析不出来,结果是未知,不是故障。 故障必须来自证据,比如容器报已退出、服务单元报失败。

三种看法

同一份只读数据,三种看法。

大屏:会议室投屏或电脑上盯。

浏览器打开,粘一次只读令牌。一个部署一段,段首写明采集器上次上报距今多久, 卡片按严重度排序:故障、降级、未知、陈旧、正常。

现状:已在我们自己的预发布环境常驻运行。

手机:随身、值班。

用手机打开同一块大屏,或在移动端扫运维出示的一次性绑定码。绑定码短时效,扫过即作废。

现状:手机端的接入链路还没有完成验证。

整机进内网:数据不出网。

汇聚服务整体搬进客户自己的网络,同一个二进制,只换配置和网络位置。 大屏在该部署的标题旁显示「数据不出网」。另一种形态是采集器向外推送快照, 被观测主机不需要开放任何入站端口。

现状:试点目前只运行在我们自己的环境里。安装包与镜像尚未公开发布; 采集器能交叉编译到国产 CPU 架构,但能编译不等于验证过,交付前需在目标环境实测。

恢复演练

备份可用,只认真恢复。

把备份真的恢复出来,再逐表核对行数。备份文件存在、压缩包校验通过、能列出目录,都不算。

演练怎么做
  1. 期望值从备份文件本身逐表数出来,不经过恢复路径。
  2. 恢复进一次性隔离容器:无网络、不映射端口,跑完连数据目录一起删除。
  3. 实际值逐表 count(*);附件另行核对文件数与元数据行数。
  4. 全部相等才算通过。期望清单为空不算通过,那说明判据本身失效了。
负对照:判据要能报失败

演练脚本带一个开关,故意用有缺陷的恢复流程再跑一遍,判据必须报失败。 一个从没见过它报失败的检查,不能当作证据。

这不是假设:我们遇到过恢复命令退出码为 0,关键表却恢复成 0 行。只看退出码,那次会被记成成功。

月度证据报告

每个数字旁边,写着它是怎么测的。

可用率分本机与外部两路并列;外部一路缺样本的时段记为「未采样」,不计为成功。

报告里有什么
  • 外部探测每 5 分钟一次;报告同时写出成功、失败、未采样三个数。
  • 备份恢复演练每月一次;最近一次演练超过 35 天,报告标为异常,不留空。
  • 证书读线上实际在用的那张;备份写明校验方式。
  • 指标在生成报告时现场采集,不含人工填写的数字;人工部分只有本月完成、下月计划、需要贵方配合三段文字。
为什么从另一台机器测

服务器自己探测自己,整机宕机时探针一起停,那段时间会被记成正常。测量与被测不能同源。

边界

它不是什么。

  • 不是运维控制台。v1 没有任何写操作:采集器只发 GET / HEAD,唯一例外是提交自己的快照; 契约里预留的操作接口恒返回 501,界面上没有操作按钮。
  • 不只认自家产品。组件可以是一套开源数据库、一个 nginx 站点、一张快过期的证书,不认识的类型照常显示。
  • 不采集业务数据,也不是性能监控。按上报间隔观测,不叫「实时」。

细节在 文档;我们怎么工作,见 方法。