SpO₂ 这个小巧的动态监控工具

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