SpO₂ 是血氧饱和度,用于医疗人员监测。
我是 Kerollmops,我是 Meili 的 CTO,今天我发布了 SpO₂。
在 Meili,我们需要一个工具来监控我们的 pod。我们已经有了 vigil,它可以对我们的首页和后端进行健康检查,但这些服务的数量有限。目前我们不会动态地弹出新的前端或后端服务器。当我们为用户创建新的搜索引擎时,我们会实例化一个 Kubernetes pod,我们需要监控此服务的健康状况。在 vigil 配置文件中手动添加所有这些 URL 并不是一个解决方案。
因此,我们决定我们需要一个简单的工具,一个可以接受 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,一个微不足道的小型反向代理服务器,我们用基本身份验证对其进行了配置。这并非易事,而且因为我们很酷,所以我们制作了文档来帮助你做同样的事情。
请随时分享或加星此项目,欢迎贡献代码 😊
另外,需要注意的是,我们实际上测量的不是人,而是机器。