趣味时区

程序员的跨时区值班:凌晨三点的告警谁来接

互联网服务不睡觉,但工程师要睡觉。一个用户遍布全球的系统,告警可能在任意时区的任意时刻响起,值班表因此变成一场关于时间的组织设计。

告警本身没有时区

监控系统通常用 UTC 记录和展示事件,这样可以避免同一场故障在各地日志里出现不同日期。但真正被叫醒的是人,人的作息仍然按本地时间运行。凌晨三点爬起来处理数据库连接池耗尽,和在下午三点处理同一件事,判断力并不相同。

值班表怎么排

  • 以 UTC 为唯一基准标注班次,再换算成每位工程师的本地时间,避免“周几”产生歧义。
  • 采用跟随太阳的轮转:亚太、欧洲、美洲各承担一段,每段覆盖 8 小时左右。
  • 为深夜班设置补偿和次日调休,否则值班会迅速变成离职原因。
  • 把非紧急告警降级为工单,只有影响可用性的问题才触发电话。

交接比接班更重要

跨时区交接最怕“我以为你知道了”。有效的交接要写清当前现象、已排除的可能、正在执行的缓解措施和下一位需要盯的指标。口头说一遍不够,必须留下带 UTC 时间戳的文字记录。交接窗口最好固定,并预留十五分钟问答。

用工程手段减少深夜打断

自动回滚、熔断、限流和告警聚合,能让很多问题在人不介入时自行恢复。把“必须人工确认”的环节压缩到最少,是对跨时区团队最实际的尊重。毕竟值班表可以轮转,生物钟却不能按季度重排。

衡量值班质量,不该只看响应速度,也要看深夜告警占比和恢复后的疲劳程度。