此页面记录了 Uptime Kuma 的 API 功能,包括身份验证方法、可用端点和使用模式。Uptime Kuma API 提供对监控数据、指标和系统功能的编程访问。
Uptime Kuma 提供了两种主要方法与系统进行编程交互
来源
Uptime Kuma 支持多种身份验证方法
对于 REST API 端点,您可以使用基本身份验证,并提供用户名和密码
Authorization: Basic base64(username:password)
API 密钥提供了一种更安全的方式来访问 REST API,而无需使用用户名和密码。API 密钥可以通过 UI 或以编程方式创建、管理和控制。
API 密钥遵循此格式
uk{id}_{key}
其中
uk: 固定前缀{id}: 密钥的数据库 ID_{key}: 下划线后跟随机密钥值API 密钥与基本身份验证一起使用,其中 API 密钥将放在密码字段中
Authorization: Basic base64(any_username:apikey)
使用 API 密钥时,用户名部分将被忽略。
可以通过 Socket.IO 接口创建、禁用和删除 API 密钥
来源
Uptime Kuma 实现了速率限制以防止滥用
如果您超出这些限制,您将收到错误消息:“过于频繁,请稍后重试。”
来源
GET /metrics
此端点返回与 Prometheus 兼容的监控指标。它需要身份验证(基本身份验证或 API 密钥)。
示例指标包括
monitor_cert_days_remaining: SSL 证书过期剩余天数monitor_cert_is_valid: SSL 证书是否有效(1=是,0=否)monitor_response_time: 响应时间(毫秒)monitor_status: 监控状态(1=UP,0=DOWN,2=PENDING,3=MAINTENANCE)来源
Uptime Kuma 提供状态页的 RSS/ATOM 信息流,可以以编程方式访问。
来源
Socket.IO 接口是与 Uptime Kuma 进行编程交互的主要方法。Web UI 使用此接口执行所有操作。
Socket.IO 连接使用 JWT 令牌进行身份验证
login 事件(使用用户名和密码)loginByToken 事件(使用之前颁发的 JWT 令牌)身份验证流程示例
Socket.IO 事件按功能进行组织
getMonitorList - 获取监控列表addMonitor - 创建新监控editMonitor - 更新现有监控deleteMonitor - 删除监控getStatusPageList - 获取状态页列表addStatusPage - 创建新状态页editStatusPage - 更新现有状态页deleteStatusPage - 删除状态页addAPIKey - 创建新 API 密钥getAPIKeyList - 获取所有 API 密钥deleteAPIKey - 删除 API 密钥disableAPIKey - 禁用 API 密钥enableAPIKey - 启用已禁用的 API 密钥来源
下图说明了数据如何在 Uptime Kuma API 系统中流动
来源
使用 API 密钥身份验证
使用基本身份验证
API 密钥安全:
速率限制:
错误处理:
来源
API 身份验证和速率限制功能实现在以下文件中
server/auth.js - 包含基本身份验证和 API 密钥的身份验证逻辑server/socket-handlers/api-key-socket-handler.js - 处理 API 密钥管理的 Socket.IO 事件server/rate-limiter.js - 为 API 请求实现速率限制server/prometheus.js - 定义了 /metrics 端点公开的 Prometheus 指标Socket.IO 服务器在 server/uptime-kuma-server.js 中初始化,事件处理程序在 server/socket-handlers/ 目录的各种文件中定义。
来源