Skip to content

核心概念 早期试点 ​

见证只有一个差异点:证据强度是一等字段。 每个组件的版本和健康都必须附带来历,界面必须把来历显示出来。

部署与组件 ​

部署是我们受托运维的一套系统,其中可以一个 Lurus 产品都没有。

组件是观测的最小单位。它不等于「我们的某个产品」——可以是一个服务、一个开源数据库、一个 nginx 站点、一个静态目录,或一张证书。组件类型是开放字符串,界面遇到不认识的类型必须照常显示,不得隐藏。

每个部署还带一个关系标签:internal(自有环境)、managed(受托运维的客户环境)、self_hosted(客户自持,汇聚服务在客户网络内)。

版本从哪来:version.source ​

版本号从不单独出现,总是和来源成对。

取值界面文案含义
self_report版本来自服务自报组件自己公布的版本,可比对
image_tag版本来自镜像标签从部署所用镜像的标签读出;说明「部署了什么」,不说明容器里实际在跑什么
blackbox_inferred版本为黑盒推断从外部特征推测;不能用来判断「升级了没有」
unknown版本未知(组件不自报)显示为 ?,绝不显示成 latest
两条写进代码的规则
  • 哨兵值不是版本。 组件返回 unknown、dev、unset、n/a、none、null 这类字面量时,一律降级为 unknown,值置空。否则一个占位字符串会在卡片上被渲染成可比对的真版本。
  • 版本号别做字符串比对。 不同组件的版本格式天生不同:有的是裸提交号,有的带分支前缀,有的按镜像摘要固定、根本没有可读标签。「两个字符串不一样」不等于「升级失败」。

健康从哪来:health.evidence_class ​

取值界面文案怎么来的强度
introspected健康来自自省实证组件自己的健康 / 就绪接口回答了最强
host健康来自宿主证据在它所在的主机上看到的:容器状态、服务单元、磁盘用量、备份文件时间、编排控制器的副本数中
blackbox健康为黑盒推断只有外部可见信号:HTTP 状态码、证书到期日、端口是否接受连接最弱

黑盒推断的「正常」只证明能连上,不证明功能对。

「连不上」不是自省

就绪接口返回 503,是自省实证——组件自己回答了「我没就绪」。连接失败则不是:我们只知道连不上,证据降级为 blackbox。把后者标成 introspected,等于声称我们并不拥有的证据。

五个状态词 ​

状态是五值的。其中两个值存在的意义,是阻止仪表盘最常见的那种撒谎。

状态意思对客户怎么说
正常 ok按当前证据看是好的「按【证据强度】看是正常的」——把证据强度念出来
降级 degraded在响应,但没达到应有的样子「在服务,但有异常,正在确认」
故障 down有明确证据表明它不工作「确认异常,已升级处理」
未知 unknown我们的探针没测到「我们这条测不到,正在恢复观测能力」——不要说客户系统坏了
陈旧 stale读数超过判定窗口,太旧不能用「这条读数太旧不能用,正在恢复」——不要说一切正常

未知和陈旧都不是故障,也都不是正常。它们是「不知道」。

未知 ≠ 故障

宿主类探针的命令失败、超时或输出解析不出来,结果一律是 unknown,绝不是 down。down 必须来自证据,比如容器报已退出、服务单元报失败、备份目录里一个匹配文件都没有。把探针自己的故障渲染成红色,会让人分不清「目标真的挂了」和「我们连不上目标」。

陈旧 ≠ 正常 ​

这是整个产品承重的一条规则。

  • 判定窗口 TTL = max(3 × 上报间隔, 180 秒),默认上报间隔 60 秒。连续漏掉两次上报仍可容忍,第三次就承认不知道。
  • 超过窗口的组件一律显示为「陈旧」,不得沿用上一次的绿色。
  • 窗口按部署各算各的:每分钟上报的主机和每小时上报的机器可以出现在同一屏上。
  • 时间戳超前于服务端时钟、且超前幅度超过判定窗口的,也按陈旧处理:对不上的时钟不能用来声称数据新鲜。超前 5 分钟以上的快照在入库时直接拒收。
为什么要在两端各判一次

陈旧判定在服务端做一次,在大屏 / 手机端用本机时钟再做一次,取更悲观的结论。

故障谁能发现
采集器不再上报服务端
汇聚服务自己卡死只有客户端
中间缓存重放旧响应只有客户端

两端的常量(上报间隔、窗口下限、契约版本)由测试对照比对,漂移即失败。

推送通知 ​

状态转移时可以推一行文本到你指定的通知地址。

  • 会推:组件从正常或降级变为故障、从故障恢复为正常、首次观测即为故障、采集器离线 / 恢复。同一状态连续不重发。
  • 不推:陈旧(离线已由「采集器离线」覆盖)、从故障变为降级、首次观测为降级、首次观测为未知。
  • 推送是尽力送达,不会拖慢入库。每条已派发的通知可以落一行留档,包括没送到的那些。

所以,手机没响不代表一切正常,只代表上面那几件事没有发生。

Powered by Lurus Technologies