Uptime Kuma 是一款基于 Node.js、Vue 3 和 SQLite 构建的开源自托管服务监控系统,被广泛视作商业服务 Uptime Robot 的优质自建替代方案。与需要搭建重型时序数据库的集群系统不同,Uptime Kuma 坚持单容器极简主义,仅需数十兆内存即可在轻量服务器上对全网服务进行全天候可用性探活。
单容器极简监控内核与探针工作机制
在底层架构上,Uptime Kuma 采用异步单进程模型,前后端通过 Socket.io 建立全双工长连接,实现监控指标毫秒级刷新。系统内置丰富探针矩阵:
第一是HTTP(s) 断言探针。普通探针只检查状态码,但在数据库宕机时后端返回的维护页也可能为 200。Uptime Kuma 允许配置关键字断言,只有返回文本包含预期字段时才判定服务正常。
第二是TCP 与 Ping 探针。适用于监控无 Web 界面的后端(如 MySQL 3306、SSH 22 或 Redis 6379)。TCP 测量握手延迟,ICMP 绘制波动与丢包曲线。
第三是被动心跳(Push)探针。解决定时任务保活审计。系统分配唯一打卡 Webhook,脚本执行完毕后发起 GET 请求。若超时未收到打卡则判定异常并立即告警。
生产级 Docker 部署与 Socket 隔离加固
使用 Uptime Kuma 监控容器状态时,常见教程往往直接将 Docker 套接字挂载进容器(-v /var/run/docker.sock:/var/run/docker.sock)。这极为危险:任何拥有容器权限者均可通过 Docker API 直接逃逸至宿主机 root 权限并接管服务器。
生产环境中应当借助专用代理沙箱(如 tecnativa/docker-socket-proxy),将套接字权限收敛为只读:
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
volumes:
- ./data:/app/data
ports:
- "127.0.0.1:3001:3001"
networks:
- kuma-network
depends_on:
- docker-proxy
docker-proxy:
image: tecnativa/docker-socket-proxy:latest
container_name: kuma-docker-proxy
restart: always
environment:
- CONTAINERS=1
- POST=0
- DELETE=0
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- kuma-network
networks:
kuma-network:
driver: bridge
在此配置中,监控端仅能查询容器状态,任何写入或特权调用均被阻断,彻底杜绝了容器逃逸后门。
Nginx 反向代理与 WebSocket 生产配置
为了让 Uptime Kuma 安全对外服务并绑定域名与 SSL 证书,通常需要搭建 Nginx 反向代理。由于监控面板依赖 WebSocket 协议同步状态,Nginx 必须显式配置升级协议头与长连接超时:
server {
listen 443 ssl http2;
server_name status.example.com;
ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
通过 proxy_read_timeout 86400s 防止超时切断长连接;proxy_buffering off 确保服务状态变更即时推达前端。
告警降噪与公开状态页维护规范
公网节点难免存在瞬时网络抖动或丢包,单次超时立即报警极易造成团队警报疲劳。建议将生产站点的重试次数设置为 2 至 3 次,只有连续多次失败时才正式触发告警。
此外,Uptime Kuma 支持创建独立的公开状态页。企业可以将对外开放的业务系统聚合在独立页面中展示。在日常维护中,状态页应严格隐藏后端的内部 IP、探测端口与底层拓扑,仅对外呈现抽象的业务名称与可用性百分比,实现提升服务透明度与保护网络隐私的双重目标。
数据统计
相关导航
统一多数据源规则、通知路由和告警事件治理
Apache APISIX
按路由、上游和插件链发布并回滚 API 流量
EMQX
从设备认证、Topic 授权到规则桥接验证 MQTT 链路
aaPanel
多语言支持的轻量化 Linux 可视化运维与建站面板

CyberPanel
原生整合 OpenLiteSpeed 高并发特性的开源服务器面板
1Panel
基于 Go 语言开发的开源、以容器为核心的 Linux 运维面板
KubeSphere
用工作空间、项目和配额建立 Kubernetes 租户边界
Sealos
从镜像、资源和状态服务部署可维护云原生应用
暂无评论...
