前言
在运维工作中,服务状态监控是必不可少的一环。市面上有很多优秀的监控工具,如 Uptime Kuma、Prometheus + Grafana 等,但它们要么功能过于复杂,要么资源占用较高。
今天介绍一款我自己开发的轻量级监控面板 —— CloudEye,它具有以下特点:
✅ 轻量级:基于 SQLite,无需额外数据库
✅ Docker 部署:一条命令启动,支持 x86/ARM 架构
✅ 多种监控类型:HTTP、TCP、Telegram 群组、Komari 探针
✅ Webhook 通知:支持 Discord、Slack、企业微信等
✅ 现代化 UI:深色/浅色主题,拖拽排序,响应式设计

快速开始
1. 环境要求
Docker 已安装
Docker Compose 已安装(可选,但推荐)
2. 创建部署文件
在服务器上创建一个目录,并新建
docker-compose.yml文件:
mkdir -p ~/cloudeye && cd ~/cloudeyenano docker-compose.yml
写入以下内容:
version: '3.8'
services:
uptime-monitor:
image: ghcr.io/debbide/monitora:latest
container_name: uptime-monitor
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./data:/app/data
environment:
NODE_ENV: production
PORT: "3000"
DATA_DIR: /app/data3. 启动服务
docker compose up -d4. 访问面板
打开浏览器访问 http://你的服务器IP:3000
默认密码:admin
⚠️ 首次登录后请立即修改密码!
功能详解
📡 HTTP/HTTPS 监控
最基础的监控类型,支持:
自定义请求方法:GET、POST、HEAD 等
期望状态码:可设置多个,如
200,201,204,301,302关键词检测:
期望关键词:页面必须包含指定关键词才算正常
禁止关键词:页面包含指定关键词则判定为异常
超时设置:自定义请求超时时间
检测间隔:支持动态间隔(正常时用较长间隔,异常时用较短间隔)
配置示例:
🔌 TCP 端口监控
监控服务器端口是否可连接,适用于:
数据库服务(MySQL 3306、PostgreSQL 5432)
Redis 服务(6379)
SSH 服务(22)
游戏服务器端口
配置示例:
📱 Telegram 群组监控
这是一个非常有趣的功能!可以监听 Telegram 群组消息,根据关键词判断服务状态。
使用场景:
监控第三方探针的通知群
监控告警群组
任何通过 TG 群发送状态通知的服务
配置步骤:
Step 1: 创建 Bot
在 Telegram 中搜索 @BotFather
发送
/newbot创建新机器人按提示设置名称和用户名
获取 Bot Token(格式:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
Step 2: 配置 Bot 权限
向 @BotFather 发送
/mybots选择你的 Bot → Bot Settings → Group Privacy
点击 Turn off(关闭隐私模式,这样 Bot 才能读取群消息)
Step 3: 将 Bot 加入群组
把 Bot 添加到你要监控的 Telegram 群组
获取群组 ID(负数格式,如
-1001234567890)
💡 获取群组 ID 方法:将 @userinfobot 添加到群组,它会自动发送群组 ID
Step 4: 在面板中配置
点击顶栏 🤖 按钮,填入 Bot Token
添加监控,选择 Telegram 类型
填写配置:
现在,当群组中出现包含"server1"和"离线"的消息时,监控状态会自动变为异常!
🖥️ Komari 探针监控
如果你使用 Komari 作为服务器探针,可以直接接入监控。
两种模式:
主动查询模式:直接查询 Komari 面板 API
Webhook 接收模式:接收 Komari 的离线/上线通知
Webhook 通知配置
当服务状态变更时,可以通过 Webhook 发送通知。
Discord 通知
在 Discord 服务器设置中创建 Webhook
复制 Webhook URL
填入监控项的 Webhook URL 字段
自定义 Webhook Body
支持变量替换,可用变量:
示例 Body(企业微信机器人):
{"msgtype": "markdown",
"markdown": {
"content": "## 🚨 服务异常告警\n- 服务: {{monitor_name}}\n- 状态: {{status}}\n- 时间: {{timestamp}}"
}
}
高级配置
环境变量
重置密码
如果忘记密码,可以通过环境变量重置:
environment:NODE_ENV: production
PORT: "3000"
RESET_PASSWORD: admin # 添加这行
重启容器后密码会被重置为 admin。
⚠️ 密码重置后,请删除
RESET_PASSWORD环境变量并重新启动容器!
反向代理配置
Nginx 配置示例
server
{
listen 80;
server_name monitor.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}Caddy 配置示例
monitor.example.com
{
reverse_proxy localhost:3000
}数据备份
数据存储在
./data/monitor.db文件中(SQLite 数据库)。
备份方法:
# 停止容器
docker compose stop
# 备份数据
cp ./data/monitor.db ./data/monitor.db.bak
# 重启容器
docker compose start恢复数据:
docker compose stop
cp ./data/monitor.db.bak ./data/monitor.db
docker compose start常见问题
Q: Telegram Bot 无法收到群消息?
A: 请检查:
Bot 是否已加入群组
Bot 的 Group Privacy 是否已关闭
Bot Token 是否正确
Q: 如何升级到最新版本?
A: 执行以下命令:
docker compose pull
docker compose up -dQ: 支持哪些架构?
A: 支持 linux/amd64(x86_64)和 linux/arm64(树莓派 4、Apple M1/M2 等)。
项目地址
欢迎 Star ⭐ 和提交 Issue!
总结
CloudEye 是一款简洁但功能强大的监控面板,特别适合:
个人开发者监控自己的项目
小团队的服务状态监控
需要 Telegram 群组监控的场景
如果你有任何问题或建议,欢迎在评论区留言或到 GitHub 提交 Issue!