本文档描述了 Uptime Kuma 的核心服务器端架构,包括主要的服务器组件、它们之间的关系以及它们如何相互作用以提供监控功能。有关前端组件的信息,请参阅 前端组件,有关服务器和客户端之间数据流的信息,请参阅 数据流。
Uptime Kuma 服务器基于 Node.js 构建,并为监控系统提供了骨干。主要职责包括:
以下图表说明了主要的服务器组件及其关系
来源:[server/uptime-kuma-server.js],[server/server.js],[server/database.js]
UptimeKumaServer 类作为核心组件,负责初始化和协调所有服务器功能。它实现了单例模式。
UptimeKumaServer 的主要特点:
monitorTypeList 公开监控器类型在 [server/server.js] 中创建服务器实例
来源:[server/uptime-kuma-server.js:22-75],[server/server.js:83-86]
Database 类负责数据库连接、配置和迁移。它支持 SQLite、MariaDB 和嵌入式 MariaDB 作为数据库后端。
主要职责
在 [server/server.js] 中的数据库初始化过程
来源:[server/database.js:18-392],[server/server.js:173-191]
监控系统围绕 Monitor 类构建,该类负责检查服务状态并生成心跳。
Monitor 类实现了各种检查类型:
监控器生命周期
monitor.start(io) 启动beat() 以指定的时间间隔运行检查来源:[server/model/monitor.js:37-1204]
Prometheus 类提供关于监控器本身的监控指标,并将其暴露供 Prometheus 抓取。
暴露的关键指标:
monitor_cert_days_remaining:证书剩余有效期(天)monitor_cert_is_valid:证书有效性(1=有效,0=无效)monitor_response_time:监控器响应时间(毫秒)monitor_status:监控器状态(1=UP,0=DOWN,2=PENDING,3=MAINTENANCE)每个监控器在启动时都会创建一个 Prometheus 实例
来源:[server/prometheus.js:35-123],[server/model/monitor.js:331]
Socket handlers 通过 Socket.IO 管理与客户端的实时通信。它们按域组织在单独的文件中。
处理程序通常遵循一致的模式:
来源:[server/socket-handlers/api-key-socket-handler.js:16-155],[server/server.js:326-4380]
后台任务执行计划的维护任务,例如清理旧数据和优化数据库。
主要任务包括:
clearOldData:根据保留策略移除旧心跳和统计数据incrementalVacuum:执行数据库清理以优化性能使用 Croner 库安排任务
来源:[server/jobs.js:6-58],[server/jobs/clear-old-data.js:9-65]
以下序列图说明了在监控过程中数据如何通过服务器组件传递
来源:[server/model/monitor.js:327-397],[server/server.js:326-664]
身份验证由 auth 模块处理,并支持多种身份验证方法:
主要安全特性
来源:[server/auth.js:16-179],[server/rate-limiter.js:4-75]
核心数据库架构包含以下主要实体:
来源:[server/database.js:70-115],[server/model/monitor.js]
Uptime Kuma 的服务器组件构成了统一、模块化的架构。
这种架构提供了灵活性和可扩展性,使 Uptime Kuma 能够支持各种监控类型、通知方法和部署场景。
来源:[server/uptime-kuma-server.js],[server/server.js],[server/database.js],[server/model/monitor.js],[server/jobs.js]
刷新此 Wiki
最后索引时间2025 年 4 月 18 日 (510056)