本文档描述了数据如何在 Uptime Kuma 系统中流动,重点关注客户端和服务器组件之间的通信、监控数据收集和处理以及通知。有关系统架构组件的信息,请参阅 架构,有关监控功能,请参阅 监控系统。
Uptime Kuma 使用 Socket.IO 作为客户端和服务器之间的主要通信协议,支持实时更新和双向通信。这种方法无需刷新页面即可实现即时状态更新和通知。
来源
数据流始于客户端和服务器之间建立 Socket.IO 连接。
来源
客户端在应用程序初始化期间建立 Socket.IO 连接。连接设置由 socket 混入(mixin)处理。
来源
在服务器端,UptimeKumaServer 类初始化 Socket.IO 服务器并处理客户端连接。
来源
监控器是收集外部服务数据的核心组件。监控数据从被监控服务流向客户端 UI。
来源
心跳是流经系统的基本监控数据单元。
来源
数据通过定义的 Socket 事件在客户端和服务器之间流动。
这些是服务器向客户端发送数据的主要事件。
| 事件 | 目的 | 数据 |
|---|---|---|
info | 服务器信息 | 服务器版本、主机名等。 |
monitorList | 监控列表 | 以监控 ID 作为键的对象。 |
heartbeat | 监控状态更新 | 监控 ID、状态、消息等。 |
heartbeatList | 历史心跳 | 监控的心跳数据数组。 |
notification | 通知数据 | 通知配置。 |
avgPing | 平均 ping 数据 | 监控 ID 和 ping 统计信息。 |
uptime | 正常运行时间统计 | 监控 ID 和正常运行时间数据。 |
certInfo | SSL 证书信息 | 证书过期数据。 |
来源
这些是客户端发出的向服务器发送命令的主要事件。
| 事件 | 目的 | 数据 |
|---|---|---|
login | 身份验证 | 用户名,密码 |
loginByToken | Token 认证 | JWT token |
add | 添加监控器 | 监控配置 |
editMonitor | 更新监控器 | 监控 ID 和新配置 |
deleteMonitor | 删除监控器 | 监控 ID |
getMonitorList | 请求监控器列表 | - |
getHeartbeats | 请求心跳 | 监控 ID |
clearEvents | 清除监控事件 | 监控 ID |
来源
Uptime Kuma 支持多种数据库类型,数据通过以下路径在应用程序和数据库之间流动。
来源
监控器及其心跳以这种数据流方式存储在数据库中。
来源
前端从服务器接收数据并相应地更新其状态。
来源
数据以这种方式流经 Vue 组件。
来源
当监控器状态发生变化时,通知会流经系统。
来源
Uptime Kuma 实施了多项策略来优化数据流。
来源
Uptime Kuma 使用事件驱动架构进行数据流,其中 Socket.IO 事件驱动了大部分应用程序。
来源
在 Uptime Kuma 中,数据主要通过客户端和服务器之间的 Socket.IO 事件流动。监控系统生成心跳,这些心跳被存储在数据库中并实时发送给客户端。当状态发生变化时,会触发通知并发送到客户端界面和外部通知服务。
这种事件驱动的架构确保用户无需刷新页面即可获得关于其监控器的实时更新,从而提供响应迅速且高效的监控体验。