侧边栏壁纸
博主头像
Tech • VPS • Network vlx@tech

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

告别付费监控!一键监控服务器、网站、Docker,还有90+告警渠道

vlongx
2026-01-14 / 0 评论 / 0 点赞 / 161 阅读 / 0 字
温馨提示:
本文最后更新于2026-01-14,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

网站突然挂了才发现?服务器宕机半小时才收到用户投诉?
在运维工作中,监控系统的重要性不言而喻:

  • 付费监控服务:UptimeRobot免费版限制多,付费版每月$7起
  • Zabbix/Prometheus:功能强大但配置复杂,学习成本高
  • 云厂商监控:只能监控自家服务,多云环境管理困难
  • Nagios:老牌工具,界面古老,配置繁琐
    有没有一款既免费、又简单、还功能全面的监控工具?
    今天给大家介绍一款开源监控神器 —— Uptime Kuma,让服务监控变得像呼吸一样简单!

一、介绍

Uptime Kuma 是一款易用的自托管监控工具,在GitHub上已经获得了8万+ Star
它的核心优势:

  • 🚀 简单易用:Docker一键部署,5分钟完成搭建
  • 🎨 界面美观:现代化设计,响应式布局,体验一流
  • 🔔 告警丰富:支持90+种通知渠道(Telegram、钉钉、企业微信等)
  • 💰 完全免费:开源免费,无任何限制
  • 🌍 多语言支持:包括中文在内的20+种语言
  • 📊 功能全面:HTTP、TCP、Ping、Docker、证书等全方位监控

项目地址: https://github.com/louislam/uptime-kuma
官方网站: https://uptime.kuma.pet
在线演示: https://demo.kuma.pet/start-demo
官方文档: https://github.com/louislam/uptime-kuma/wiki

二、核心功能特性

2.1 支持的监控类型

监控类型 说明 使用场景
🌐 HTTP(s) TCP端口监控 数据库、服务端口
🔌 TCP TCP端口监控 数据库、服务端口
📝 HTTP关键词 检测页面内容 确认页面正常显示
📊 JSON查询 检查API返回 API健康检查
🏓 Ping/ICMP Ping检测 服务器存活性
🌐 DNS记录 DNS解析监控 域名解析检查
🐳 Docker容器 容器状态监控 容器化应用
📡 WebSocket WebSocket连接 实时通信服务
🎮 Steam服务器 游戏服务器 游戏运维
📥 Push 主动推送 自定义监控

2.2 告警通知渠道

Uptime Kuma支持90+种通知方式:
国内常用:

  • 钉钉
  • 企业微信
  • 飞书
  • Server酱
  • PushDeer
  • Bark (iOS)

国际常用:

  • Telegram
  • Discord
  • Slack
  • Email (SMTP)
  • Webhook
  • Pushover
  • Gotify

其他特殊:

  • SMS (多家厂商)
  • 语音电话
  • Microsoft Teams
  • Google Chat
  • Line
  • Mattermost

2.3 系统架构

┌──────────────────────────────────────────────────┐  
│ Uptime Kuma 监控中心 │  
│ │  
│ ┌─────────────────────────────────────────┐ │  
│ │ Web 管理界面 (Vue.js) │ │  
│ │ - 仪表盘 │ │  
│ │ - 监控配置 │ │  
│ │ - 状态页面 │ │  
│ └──────────────┬──────────────────────────┘ │  
│ │ │  
│ ┌──────────────▼──────────────────────────┐ │  
│ │ 后端服务 (Node.js + Socket.IO) │ │  
│ │ - 监控任务调度 │ │  
│ │ - 数据采集 │ │  
│ │ - 告警处理 │ │  
│ └──────────────┬──────────────────────────┘ │  
│ │ │  
│ ┌──────────────▼──────────────────────────┐ │  
│ │ 数据存储 (SQLite) │ │  
│ │ - 监控历史 │ │  
│ │ - 配置信息 │ │  
│ └─────────────────────────────────────────┘ │  
└──────────────────────────────────────────────────┘  
│  
┌─────────┼─────────┐  
│ │ │  
┌────▼───┐ ┌──▼───┐ ┌───▼────┐  
│ 网站 │ │服务器│ │ Docker │  
│ 监控 │ │ 监控 │ │ 监控 │  
└────────┘ └──────┘ └────────┘  
│ │ │  
┌────▼─────────▼─────────▼────┐  
│ 告警通知渠道 │  
│ 钉钉 | 微信 | Telegram │  
└─────────────────────────────┘

2.4 独特功能

1. 状态页面(Status Page)

公开状态页面:
https://status.yourdomain.com

特点:

  • 展示所有监控项状态
  • 历史可用率统计
  • 响应时间图表
  • 可自定义域名
  • 支持多个状态页面

2. Ping图表
实时显示:

  • 最近24小时响应时间
  • 平均响应时间
  • 最高/最低响应时间
  • 可用率统计

3. 证书监控
自动检测HTTPS证书:

  • 证书有效期
  • 证书颁发者
  • 证书过期提醒
  • 证书更新通知

4. 代理支持
支持通过代理访问:

  • HTTP代理
  • HTTPS代理
  • SOCKS5代理

5. 双因素认证(2FA)
保护管理后台安全:

  • TOTP支持
  • Google Authenticator
  • Authy等兼容

三、快速安装

3.1 Docker Compose安装(推荐)

最简单的方式:

# 创建目录  
mkdir uptime-kuma  
cd uptime-kuma  
# 下载配置文件  
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml  
# 启动服务  
docker compose up -d

访问:http://localhost:3001

自定义配置:

# compose.yaml  
version:  '3.8'  
  
services:  
uptime-kuma:  
image:  louislam/uptime-kuma:2  
container_name:  uptime-kuma  
restart:  always  
ports:  
-  "3001:3001"  
volumes:  
-  ./data:/app/data  
environment:  
-  TZ=Asia/Shanghai  # 设置时区

3.2 Docker命令安装

# 基础命令  
docker run -d \  
--name uptime-kuma \  
--restart=always \  
-p 3001:3001 \  
-v uptime-kuma:/app/data \  
louislam/uptime-kuma:2  
  
# 仅本地访问  
docker run -d \  
--name uptime-kuma \  
--restart=always \  
-p 127.0.0.1:3001:3001 \  
-v uptime-kuma:/app/data \  
louislam/uptime-kuma:2`

3.3 非Docker安装

系统要求:

  • Node.js >= 20.4
  • Git
  • PM2(后台运行)

安装步骤:

# 克隆仓库  
git clone https://github.com/louislam/uptime-kuma.git  
cd uptime-kuma  
# 安装依赖  
npm install --production   
# 构建前端  
npm run build  
# 安装PM2  
npm install pm2 -g  
# 启动服务  
pm2 start server/server.js --name uptime-kuma  
# 设置开机自启  
pm2 startup  
pm2 save

访问:http://localhost:3001

四、使用体验

4.1 首次配置

访问 http://your-server:3001,首次会要求创建管理员账户:

1. 输入用户名  
2. 设置密码  
3. 点击"创建"

4.2 添加监控

监控网站示例:

添加新监控 → HTTP(s)  
  
基本信息:  
- 名称: 我的博客  
- URL: https://example.com  
- 检测间隔: 60秒  
  
高级设置:  
- 超时时间: 30秒  
- 最大重定向: 10次  
- 接受的状态码: 200-299  
- 关键词检测: 可选  
  
通知设置:  
- 选择通知渠道  
- 设置通知条件

监控服务器示例:

添加新监控 → Ping  
  
基本信息:  
- 名称: 生产服务器  
- 主机名: 192.168.1.100  
- 检测间隔: 30秒  
  
通知设置:  
- 钉钉机器人  
- 企业微信

监控Docker容器:

添加新监控 → Docker Container  
  
配置:  
- Docker Host: unix:///var/run/docker.sock  
- 容器名称: nginx  
- 检测间隔: 60秒

4.3 配置告警

钉钉机器人配置:

1. 钉钉群 → 群设置 → 智能群助手 → 添加机器人  
2. 选择"自定义"  
3. 复制Webhook地址  
4. Uptime Kuma → 设置 → 通知 → 添加通知  
5. 类型选择"钉钉"  
6. 粘贴Webhook  
7. 测试发送

企业微信配置:

8. 企业微信 → 应用管理 → 创建应用  
9. 获取 Corp ID 和 Secret  
10. Uptime Kuma → 添加通知  
11. 选择"企业微信"  
12. 填写相关信息  
13. 测试发送

Telegram配置:

1. 与 @BotFather 对话创建Bot  
2. 获取 Bot Token  
3. 获取 Chat ID  
4. Uptime Kuma → 添加通知  
5. 填写Token和Chat ID`

4.4 实际使用场景

场景1:网站监控

监控配置:  
- 主站: https://example.com (60秒检测)  
- API: https://api.example.com (30秒检测)  
- CDN: https://cdn.example.com (60秒检测)  
  
告警策略:  
- 连续失败2次 → 钉钉通知  
- 恢复正常 → 钉钉通知  
- 响应时间>2秒 → 警告通知

实际效果:

  • 网站异常立即收到钉钉消息
  • 可快速定位问题(主站正常但API异常)
  • 历史数据帮助分析故障规律
    场景2:服务器监控
监控项:  
- Ping: 192.168.1.10-20 (10台服务器)  
- SSH端口: TCP 22  
- 数据库: TCP 3306  
- Redis: TCP 6379  
  
告警:  
- 任一服务器Ping不通 → 立即通知  
- 端口无法连接 → 立即通知

场景3:Docker容器监控

监控的容器:  
-  nginx  
-  mysql  
-  redis  
-  app-backend  
-  app-frontend  
  
检测策略:  
-  容器停止  →  立即告警  
-  容器重启  →  记录日志  
-  健康检查失败  →  告警

4.5 状态页面

创建公开状态页面:

设置 → 状态页面 → 新建  
  
配置:  
- 名称: 服务状态  
- 描述: 实时监控我们的服务  
- 选择要展示的监控项  
- 自定义域名: status.yourdomain.com  
  
特性:  
- 实时更新  
- 历史可用率  
- 事件时间线  
- 支持多语言

访客可以访问查看服务状态,无需登录。

五、高级配置

5.1 安装caddy并代理

# 准备(确保已安装 curl、gnupg、ca-certificates)
sudo apt update
sudo apt install -y curl gnupg ca-certificates

# 导入官方仓库 GPG(命令仅示范,若报错按官网步骤调整)
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

# 添加仓库(命令示例,any-version 可替换或保留)
echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/ubuntu any-version main" | sudo tee /etc/apt/sources.list.d/caddy-stable.list

sudo apt update
sudo apt install -y caddy

Caddyfile 基础位置
在 /etc/caddy/Caddyfile。修改这个文件后重载 Caddy 即可
创建及编辑Caddyfile文件

vim /etc/caddy/Caddyfile
sub.xxx.xx {
    reverse_proxy 45.xxx.xx.xx:3001
}

按esc健,输入“:"及wq 回车退出
创建日志目录并授权(Caddy 默认运行用户通常是 caddy):

sudo mkdir -p /var/log/caddy
sudo chown -R caddy:caddy /var/log/caddy
sudo chmod 750 /var/log/caddy

校验 Caddyfile 语法

sudo caddy validate --config /etc/caddy/Caddyfile
  • 如果返回 valid 则继续下一步;若报错,caddy validate 会给出位置信息,按提示修正。
    让 Caddy 重新加载配置(无停机):
sudo systemctl reload caddy

或(若需要完全重启):

sudo systemctl restart caddy

查看实时日志(定位证书或代理错误):

sudo journalctl -u caddy -f
# 或查看你配置的访问日志
sudo tail -F /var/log/caddy/flux_access.log

重载caddy 服务,若是不报错,caddy 反代成功

5.3 数据备份

# 备份数据目录  
docker exec uptime-kuma tar czf /tmp/backup.tar.gz /app/data  
  
# 复制到宿主机  
docker cp uptime-kuma:/tmp/backup.tar.gz ./backup-$(date +%Y%m%d).tar.gz  
  
# 自动备份脚本  
#!/bin/bash  
BACKUP_DIR="/path/to/backups"  
DATE=$(date +%Y%m%d)  
  
docker exec uptime-kuma tar czf /tmp/backup.tar.gz /app/data  
docker cp uptime-kuma:/tmp/backup.tar.gz $BACKUP_DIR/uptime-kuma-$DATE.tar.gz  
  
# 保留最近7天的备份  
find $BACKUP_DIR -name "uptime-kuma-*.tar.gz" -mtime +7 -delete

5.4 API使用

Uptime Kuma提供API接口:

# 获取监控列表  
curl http://localhost:3001/api/monitors  
  
# 获取特定监控的状态  
curl http://localhost:3001/api/monitor/1  
  
# 创建监控(需要认证)  
curl -X POST http://localhost:3001/api/monitor \  
-H "Authorization: Bearer YOUR_API_KEY" \  
-d '{"name":"Test","url":"https://example.com"}'

转载至:https://mp.weixin.qq.com/s/EhTNZ4D8-hyFKBMA_7xcHA

0

评论区