菜单

监控系统

相关源文件

监控系统是 Uptime Kuma 的核心功能,负责检查各种服务的状态并生成心跳。它为服务监控、状态跟踪、通知触发和正常运行时间计算提供了基础。本页面记录了监控系统的架构、组件和功能。

有关处理警报发送的通知系统的更多信息,请参阅 通知系统

架构概述

监控系统围绕 Monitor 类构建,该类管理不同类型的监控器及其生命周期。每个监控器会根据其配置定期检查外部服务或资源,并生成反映状态的心跳。

监控系统架构

来源

监控器类

Monitor 类是处理监控过程的核心组件。它被定义为 BeanModel(使用 RedBean ORM),包含管理监控配置、执行检查和处理心跳的方法。

关键方法

  • toJSON() - 为前端返回监控数据
  • toPublicJSON() - 为公共状态页面返回非敏感数据
  • start(io) - 使用心跳间隔启动监控过程
  • check() - 根据监控类型执行实际检查
  • getTags() - 获取与监控器关联的标签

来源

监控状态常量

Uptime Kuma 使用数字常量来表示监控状态

常量描述
DOWN0服务已关闭或无法访问
UP1服务运行正常
待处理 (PENDING)2初始状态或等待首次检查
MAINTENANCE3处于计划维护模式

来源

监控类型

Uptime Kuma 支持多种监控类型,用于检查不同的服务和协议。每种监控类型都有特定的配置选项和检查逻辑。

支持的监控类型

类别监控类型
通用HTTP(s)、TCP 端口、Ping、SNMP、Keyword(关键词)、JSON Query(JSON 查询)、gRPC、DNS、Docker Container(Docker 容器)、Real Browser(Chrome)
被动推送
数据库MySQL/MariaDB、PostgreSQL、MongoDB、SQL Server、Redis
消息传递MQTT、RabbitMQ、Kafka Producer(Kafka 生产者)
游戏Steam Game Server(Steam 游戏服务器)、GameDig
其他Radius、Tailscale Ping

来源

监控类型实现

每种监控类型都继承自基类 MonitorType,并实现其自身的检查逻辑。例如,SNMP 监控类型

来源

监控生命周期

监控器的生命周期包括创建、启动/停止、检查和生成心跳。

监控生命周期流程

来源

心跳系统

心跳是每次监控检查的记录。它们存储每次检查的状态、响应时间和任何相关消息。

心跳生成

当监控器检查服务时,它会创建一个心跳 bean,其中包含:

  • 监控器 ID
  • 时间戳
  • 状态 (UP、DOWN、PENDING、MAINTENANCE)
  • 响应时间 (ping)
  • 状态消息或错误详情

心跳可视化

HeartbeatBar 组件通过显示代表过去心跳的彩色块系列来可视化监控器的历史状态。

来源

HTTP 监控示例

HTTP 监控类型是最常用的类型之一。其工作原理如下:

  1. 它向指定的 URL 发送 HTTP/HTTPS 请求
  2. 它设置请求头、身份验证和其他请求选项
  3. 它检查成功的状态码和响应时间
  4. 它还可能检查响应中的关键词或 JSON 值
  5. 它可以为 HTTPS 连接验证 TLS 证书

HTTP 监控器选项

来源

数据库 Schema

监控系统使用多个数据库表来存储配置和结果。

主要表

表名目的
monitor存储监控器配置(类型、URL、间隔等)
heartbeat存储单个检查结果(状态、ping、消息)
monitor_tag将监控器与标签关联
monitor_notification将监控器与通知提供程序关联
monitor_tls_info为 HTTPS 监控器存储 TLS 证书信息
maintenance存储监控器处于维护模式下的维护窗口

来源

前端组件

监控系统包含多个前端组件,用于创建、显示和管理监控器。

关键组件

来源

扩展新的监控类型

Uptime Kuma 的设计是可扩展的,允许开发者添加新的监控类型。

创建新的监控类型

要创建新的监控类型:

  1. server/monitor-types/ 中创建一个新的文件,该文件继承 MonitorType 类
  2. 实现必需的 check(monitor, heartbeat, server) 方法
  3. 在 UptimeKumaServer 中注册新的监控类型
  4. 在 EditMonitor.vue 中将监控类型添加到前端

示例:SNMP 监控类型

SNMP 监控类型演示了如何实现新的监控类型

来源

维护模式

在计划维护期间,监控器可以被置于维护模式。

  1. 监控器的状态被设置为 MAINTENANCE (3)
  2. 不发送任何通知
  3. 心跳将继续以维护状态记录

此功能有助于在计划停机期间避免误报。

来源

监控状态显示

监控器的状态在 UI 的各个部分都有显示

  1. MonitorList 组件显示所有监控器及其当前状态的列表
  2. HeartbeatBar 组件可视化历史状态
  3. Details 页面显示详细状态信息和统计数据
  4. Dashboard 主页显示所有监控器的快速统计信息

来源

结论

监控系统是Uptime Kuma的核心,提供广泛服务和协议的灵活强大的监控能力。理解监控的创建、配置以及它们如何生成心跳,对于使用和扩展Uptime Kuma都至关重要。

该系统的模块化架构使得在保持核心功能一致性的同时,可以轻松添加新的监控类型。监控与通知的分离也允许对每个系统进行专注的开发和维护。