菜单

数据流

相关源文件

本文档描述了数据如何在 Uptime Kuma 系统中流动,重点关注客户端和服务器组件之间的通信、监控数据收集和处理以及通知。有关系统架构组件的信息,请参阅 架构,有关监控功能,请参阅 监控系统

概述

Uptime Kuma 使用 Socket.IO 作为客户端和服务器之间的主要通信协议,支持实时更新和双向通信。这种方法无需刷新页面即可实现即时状态更新和通知。

来源

Socket.IO 连接建立

数据流始于客户端和服务器之间建立 Socket.IO 连接。

来源

客户端连接初始化

客户端在应用程序初始化期间建立 Socket.IO 连接。连接设置由 socket 混入(mixin)处理。

来源

服务器端 Socket 处理

在服务器端,UptimeKumaServer 类初始化 Socket.IO 服务器并处理客户端连接。

来源

监控数据收集和处理

监控器是收集外部服务数据的核心组件。监控数据从被监控服务流向客户端 UI。

来源

心跳数据流

心跳是流经系统的基本监控数据单元。

来源

客户端-服务器数据交换

数据通过定义的 Socket 事件在客户端和服务器之间流动。

服务器到客户端事件

这些是服务器向客户端发送数据的主要事件。

事件目的数据
info服务器信息服务器版本、主机名等。
monitorList监控列表以监控 ID 作为键的对象。
heartbeat监控状态更新监控 ID、状态、消息等。
heartbeatList历史心跳监控的心跳数据数组。
notification通知数据通知配置。
avgPing平均 ping 数据监控 ID 和 ping 统计信息。
uptime正常运行时间统计监控 ID 和正常运行时间数据。
certInfoSSL 证书信息证书过期数据。

来源

客户端到服务器事件

这些是客户端发出的向服务器发送命令的主要事件。

事件目的数据
login身份验证用户名,密码
loginByTokenToken 认证JWT token
add添加监控器监控配置
editMonitor更新监控器监控 ID 和新配置
deleteMonitor删除监控器监控 ID
getMonitorList请求监控器列表-
getHeartbeats请求心跳监控 ID
clearEvents清除监控事件监控 ID

来源

数据库数据流

Uptime Kuma 支持多种数据库类型,数据通过以下路径在应用程序和数据库之间流动。

来源

监控数据存储

监控器及其心跳以这种数据流方式存储在数据库中。

来源

前端数据消耗

前端从服务器接收数据并相应地更新其状态。

来源

组件数据流

数据以这种方式流经 Vue 组件。

来源

通知流程

当监控器状态发生变化时,通知会流经系统。

来源

缓存和数据优化

Uptime Kuma 实施了多项策略来优化数据流。

  1. Socket.IO 事件仅发送必要数据。
  2. 检索历史记录时,心跳会进行分页。
  3. 前端将数据存储在本地状态以最大限度地减少请求。

来源

事件驱动架构

Uptime Kuma 使用事件驱动架构进行数据流,其中 Socket.IO 事件驱动了大部分应用程序。

来源

总结

在 Uptime Kuma 中,数据主要通过客户端和服务器之间的 Socket.IO 事件流动。监控系统生成心跳,这些心跳被存储在数据库中并实时发送给客户端。当状态发生变化时,会触发通知并发送到客户端界面和外部通知服务。

这种事件驱动的架构确保用户无需刷新页面即可获得关于其监控器的实时更新,从而提供响应迅速且高效的监控体验。