跳转至

586_Uptime Kuma状态监控

一句话概述:Uptime Kuma 是开源自托管的状态监控工具,支持 HTTP/TCP/Ping/DNS 等多种监控方式,提供漂亮的状态页面和 90+ 种通知渠道,是 Pingdom/UptimeRobot 的免费替代品。

核心知识点表

概念白话解释
Monitor监控项,一个被监控的目标(网站、API、端口等)
Heartbeat心跳,定期检查目标是否在线的信号
Status Page状态页面,展示服务在线状态的公开页面
Notification通知,目标宕机时发送的告警消息
Incident事件,手动或自动记录的故障事件
Push Monitor推送监控,由服务主动发送心跳(适合定时任务)

安装配置

Docker 安装(推荐)

# v2 版本安装(2025年10月发布)
docker run -d \
  --name uptime-kuma \                  # 容器名
  --restart=always \                    # 自动重启
  -p 3001:3001 \                        # Web 界面端口
  -v uptime-kuma:/app/data \            # 持久化数据
  louislam/uptime-kuma:2                # v2 版本标签

Docker Compose 安装

# docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2       # v2 最新版
    container_name: uptime-kuma          # 容器名
    restart: always                      # 始终重启
    ports:
      - "3001:3001"                      # Web 端口
    volumes:
      - ./data:/app/data                 # 数据持久化(必须是本地目录!)
docker compose up -d                    # 启动
# 浏览器打开:http://你的IP:3001
# 首次访问立即创建管理员账号(非常重要!)

重要注意事项

# 1. 安装后立即创建管理员账号!
#    否则任何人都能创建账号并控制你的监控系统

# 2. 数据目录不能使用 NFS!
#    SQLite 不支持网络文件系统,必须使用本地磁盘

# 3. v2 相比 v1 的重大变化:
#    - 支持 MariaDB 作为数据库后端
#    - 提供 rootless Docker 镜像
#    - 新 UI 界面
#    - 移除了 JSON 备份/恢复功能

基本使用

添加监控项

# 在 Web 面板操作:
# 1. 点击 "Add New Monitor"
# 2. 选择监控类型:

# HTTP(s) — 监控网站和 API
# - URL:https://example.com
# - 方法:GET / POST / HEAD
# - 期望状态码:200
# - 检查间隔:60 秒

# TCP Port — 监控端口是否开放
# - Hostname:192.168.1.100
# - Port:3306(如 MySQL)

# Ping — ICMP ping
# - Hostname:192.168.1.100

# DNS — 监控 DNS 解析
# - Hostname:example.com
# - DNS Server:8.8.8.8
# - Record Type:A

# Docker Container — 监控容器健康状态
# - Container Name/ID:myapp
# - Docker Host:/var/run/docker.sock

# Push — 推送式监控(适合定时任务/cron job)
# - 生成一个 URL,你的服务定期请求这个 URL
# - 如果超时没收到请求,就告警

配置通知

# Settings → Notifications → Setup Notification

# 常用通知渠道:
# - Telegram:填入 Bot Token 和 Chat ID
# - Discord:填入 Webhook URL
# - Slack:填入 Webhook URL
# - Email (SMTP):填入 SMTP 服务器信息
# - Webhook:自定义 HTTP 请求
# - Bark(iOS 推送)
# - Gotify(自托管推送)
# - PushDeer / Pushover
# 支持 90+ 种通知方式!

# 可以给不同的监控项配置不同的通知渠道

创建状态页面

# Status Pages → 创建状态页面
#
# 1. 设置页面标题和描述
# 2. 选择要展示的监控项
# 3. 分组展示(如"网站服务"、"API服务"、"数据库")
# 4. 设置自定义域名(可选)
# 5. 发布 → 获得公开的状态页面 URL
#
# 状态页面显示:
# - 每个服务的当前状态(在线/离线/降级)
# - 历史可用性百分比
# - 响应时间图表
# - 手动添加的事件记录

高级用法

推送监控(Push Monitor)

# 适合监控定时任务和批处理:
# 1. 创建 Push 类型的 Monitor
# 2. 获取推送 URL(如 http://kuma:3001/api/push/xxxx)
# 3. 在你的脚本末尾添加:

# Bash 脚本示例
#!/bin/bash
# 你的定时任务逻辑
python process_data.py                  # 执行数据处理

# 任务完成后发送心跳
curl -s "http://kuma:3001/api/push/xxxx?status=up&msg=OK"  # 报告成功

# 如果任务失败,发送失败心跳
# curl -s "http://kuma:3001/api/push/xxxx?status=down&msg=Failed"

# 在 crontab 中:
# 0 * * * * /path/to/your-script.sh
# Uptime Kuma 如果超过设定时间没收到心跳,就会告警

SSL 证书过期监控

# HTTP(s) 监控自动包含 SSL 证书检查:
# 1. 添加 HTTP(s) 监控
# 2. 在 "Certificate Expiry Notification" 中设置:
#    - 证书到期前 30/14/7 天发送提醒
# 3. 不会错过证书续期!

关键词监控

# 监控页面内容是否包含/不包含特定文字:
# 1. 添加 Keyword 类型的 Monitor
# 2. URL:https://example.com/api/health
# 3. Keyword:"status":"ok"
# 4. 如果页面内容不包含这个关键词,则视为异常

# 适用场景:
# - API 健康检查(检查返回的 JSON 内容)
# - 网页内容监控(检查页面是否被篡改)

v2.1 新功能:Globalping 全球探测

# Uptime Kuma v2.1(2026年2月)新增:
# - 通过 Globalping 从全球多个节点探测
# - 检测不同地区的可达性
# - 域名到期监控

# 使用方式:
# 在监控项中启用 "Globalping" 选项
# 选择探测节点位置

数据备份

# v2 移除了 JSON 备份/恢复功能
# 推荐备份方式:

# 方法1:直接备份数据目录
cp -r ./data ./data_backup_$(date +%Y%m%d)

# 方法2:使用 SQLite 命令
sqlite3 ./data/kuma.db ".backup backup.db"

# 方法3:Docker volume 备份
docker run --rm \
  -v uptime-kuma:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/kuma-backup.tar.gz /data

常见报错

报错信息原因解决方案
Connection refused目标服务未运行检查目标服务状态和端口
Certificate has expiredSSL 证书过期续期目标站点的 SSL 证书
Timeout网络超时增大超时时间或检查网络
SQLITE_BUSY数据库锁定确保只有一个实例在运行
Data directory on NFSNFS 不兼容 SQLite使用本地磁盘存储数据
No admin account未创建管理员重新创建容器,立即设置账号

速查表

# === 安装 ===
docker run -d --restart=always -p 3001:3001 \
  -v uptime-kuma:/app/data --name uptime-kuma \
  louislam/uptime-kuma:2

# === 监控类型 ===
# HTTP(s)     → 网站/API 可达性
# TCP         → 端口开放检测
# Ping        → ICMP ping
# DNS         → DNS 解析
# Docker      → 容器健康状态
# Push        → 推送式心跳
# Keyword     → 页面内容检查
# gRPC        → gRPC 服务
# MQTT        → MQTT 代理
# GameDig     → 游戏服务器
# Steam       → Steam 游戏
# MySQL/Postgres/MongoDB/Redis → 数据库连接

# === Push Monitor API ===
curl "http://kuma:3001/api/push/TOKEN?status=up&msg=OK"
curl "http://kuma:3001/api/push/TOKEN?status=down&msg=Error"

# === 默认信息 ===
# 端口:3001
# 数据目录:/app/data
# 数据库:SQLite(v2 可选 MariaDB)

同类对比

特性Uptime KumaUptimeRobotPingdomGatus
价格免费免费50个$15/月免费
自托管支持不支持不支持支持
监控项数量无限50(免费)10(免费)无限
检查间隔20秒起5分钟1分钟自定义
通知方式90+有限有限多种
状态页面内置内置内置内置
UI 体验优秀良好良好基础
配置方式GUIGUIGUIYAML

选型建议:自托管状态监控首选 Uptime Kuma(界面漂亮、功能全面、完全免费);偏好代码配置选 Gatus;不想自托管选 UptimeRobot 免费版。