SpO₂:小巧的动态监控工具

SpO₂ 是血氧饱和度,用于医疗人员监控。
我是 Kerollmops,我是 Meili 的 CTO,今天我发布了 SpO₂。
在 Meili,我们需要一个工具来监控我们的 Pod。我们已经有了 vigil,它可以健康检查我们的前端页面和后端,但是这些服务的数量是有限的。我们不会动态地弹出新的前端或后端服务器(目前是这样)。当我们为用户创建新的搜索引擎时,我们会实例化一个 Kubernetes Pod,我们需要监控这项服务的健康状况。手动将这些 URL 添加到 vigil 配置文件中不是一个解决方案。
因此,我们决定我们需要一个简单的工具,一个可以接受 HTTP 请求来注册/注销要进行健康检查的 URL 的工具。我们使用了 新的 async/await Rust 语法 以及 tide 作为 http 服务器,这里没什么大不了的。
我们当前的云服务提供商是 Digital Ocean,因此,我们无法在那里托管我们的 SpO₂ 服务。我们选择了 Scaleway,因为它更便宜,而且开箱即用。我们需要持久存储要进行健康检查的 URL。如果这些 URL 仅存储在 RAM 中,您会怎么做?如果服务器重启了怎么办?我之前已经开发过 一个名为 Sled 的 Rust 磁盘后备键值存储。因此,我们选择依赖它。
@qdequele 使用原生 JavaScript 构建了前端。使用 WebSocket,我们能够实时显示 Pod 状态。由于大多数人不会整天站在电视机前,发现颜色变化来通知运维人员,因此我们决定实施通知功能。我们所有的监控工具都使用 Slack,而且因为它实现起来就像一个 Webhook 一样简单,所以我们就选择了它。
在最新版本中,我们对 Slack 通知系统进行了一些改进。我们现在将状态更改事件批量处理为 40 个;这意味着 SpO₂ 会发送一条最多包含 40 个事件的消息,并调节频道垃圾信息。它还显示与不健康的测量相关的 HTTP 状态,以及在无法访问的测量上的错误消息。
SpO₂ 本身不支持 SSL/TLS,HTTP 和 WebSocket 端点也不支持。我们需要这种安全性,因此我们研究了 NGINX,这是一个小巧的、不起眼的反向代理服务器,我们使用基本身份验证对其进行了配置。这不是一项容易的任务,而且因为我们很酷,所以我们编写了文档来帮助您也这样做。
请随时分享或点赞这个项目,欢迎提交 Pull Request 😊
另外,只是作为旁注,我们实际上并没有测量人类,而是测量机器。