每 5 分钟刷新 · 数据来自 status.json

正在读取节点状态…

这一页存在的唯一目的:出故障时,让用户自己查得到,而不是给你开工单。 一个公开的状态页能挡掉相当比例的"是不是只有我连不上"类咨询。

在线节点 – 异常 – 覆盖国家 – 平均延迟 –
01

当前状态

状态怎么定的:
  • 正常 — 延迟 < 120ms 且丢包率 < 2%
  • 降级 — 延迟 120–250ms,或丢包率 2–10%(能连,但会卡)
  • 离线 — 连续探测超时,或丢包 > 10%
  • 维护中 — 你手动标记的,不算故障
  • 这四个等级是给用户看的措辞,比"丢包率 7.3%"更容易理解,也避免了用户拿精确数字来质疑你。
    02

    节点清单

    覆盖 – 个国家 / – 个城市。点表头可排序,输入可搜索。

    国家城市状态 延迟负载大区

    03

    接上你自己的真实数据

    页面读的是同目录下这个 status.json。你只要让某个进程定期把它写对就行, 不需要后端、不需要数据库。

    一个关键取舍:延迟从哪儿测
    从你自己的监控机 ping 各节点,测到的是监控机到节点的延迟,不是用户到节点的。 两者可能差很多。所以更诚实的做法是多区域部署几个探测点(美西、欧洲、新加坡各一台), 取各地区结果的平均值,并在页面上写明"延迟为探测点均值,仅供参考"。 别把单一探测点的数字当成用户体验——那是给自己挖坑。
    跑起来只要三步:
  • 把脚本放到一台监控机上,编辑开头的目标清单(国家代码-城市代码 与 IP 的对应表)
  • 先手动跑一次,确认生成的 status.json 内容对
  • 加一条 crontab:*/5 * * * * /path/status-probe.sh >/dev/null 2>&1,然后让 Web 服务器把这个文件暴露出去
  • 负载字段需要节点本地配合(脚本默认填 null,页面显示"—")。 想显示真实负载,就在节点上跑一个只返回 {"load":42} 的小 HTTP 服务,脚本里会去取。
    状态判定阈值(120ms / 250ms / 2% / 10%)是可调的建议值,在探测脚本顶部改。 真实阈值应该按你实测的用户体验来定:先跑一周,看什么数值开始有用户投诉,再回来调。