项目库
脚本与自动化Datadog · 软件工程实习生 · 2023
一个在监控面板数据卡住时给 on-call 发消息的 Slack bot
分享者:J. Alvarez · 前 Datadog 软件工程实习生
分享者在 Datadog 面试里讲的正是这个项目,后来拿到了转正 offer。
走进这场面试
4 个当年真实追问 · 1 个 hard · 约 12 分钟
答完每一题,才翻开当事人当年的接法。
他们当时是怎么讲的
我们团队老是太晚才发现某个监控面板已经停止更新了。我写了个小 bot,让它先一步发现,然后戳一下该负责的人。
展开全文
实习期间我们团队维护着一堆内部监控面板,好几次某个面板背后的数据管道悄悄卡住了——一直没人注意到,直到某个经理来问某个数字怎么冻在那儿不动了。我的 mentor 半开玩笑地说,得有人每天早上挨个检查一遍才行。我就问能不能让我用自动化来搞定。我写了个 Python 脚本,挨个去请求每个面板的 API,把最后更新时间和一个阈值做对比,如果某个面板卡住超过了设定的时限,就往我们团队的 Slack 频道发消息,并 @ 那一周值班的 on-call——值班表是从我们的 PagerDuty 排班里拉的。真正麻烦的不是正常流程,而是怎么做到不烦人:一开始它会重复发消息,因为一次慢一点的刷新在那一分钟里看着就像卡住了,所以我加了个缓冲窗口,还加了条『4 小时内不重复提醒』的规则。我把它挂在一台共用机器的 cron 上跑。在我实习的最后一个月它抓到了两次真的卡壳,我们当天就修好了,而不是拖到好几天以后。我特意把它做得极简,这样我走之后 mentor 真的接得住、维护得了。
当年真实被问到的
如果 bot 自己挂了,或者那台机器宕了,会怎么样?
困难你怎么区分一个面板是真的卡住了,还是只是刷新慢了点?
中等为什么非要搞个 bot——直接手动检查不行吗?
简单还有谁在用它?你走之后它还在跑吗?
中等