Hotdry.
systems-engineering

构建基于 Node.js 的 Uptime Kuma 自托管监控:HTTP/TCP/Ping 检查与 WebSocket 实时更新

通过 Uptime Kuma 搭建 Node.js 监控系统,实现 HTTP/TCP/Ping 多协议检查、WebSocket 实时更新及自定义警报,提升自托管服务的可靠性。

在自托管环境中,确保服务的可靠性和可用性至关重要。Uptime Kuma 作为一款开源的 Node.js 监控工具,提供了一个高效、灵活的解决方案。它支持多种协议检查、实时更新机制以及丰富的警报选项,帮助用户及时发现和响应故障,从而最小化 downtime 的影响。相比商业监控服务,自托管 Uptime Kuma 避免了数据隐私风险和订阅费用,同时允许完全自定义配置。

Uptime Kuma 的核心优势在于其多协议支持和响应式界面。首先,它可以监控 HTTP (s)、TCP、Ping 等常见类型,确保覆盖网站、API 和网络服务的各种场景。例如,对于 HTTP 检查,用户可以指定 URL、预期响应码(如 200)和关键词验证;TCP 检查则验证端口连通性,如数据库的 3306 端口;Ping 检查则简单评估主机可达性。这些功能基于 Node.js 的异步 I/O 实现,检测间隔最低可达 20 秒,适合高频监控需求。界面采用 Vue.js 构建,支持 WebSocket 实时推送更新,当服务状态变化时,仪表盘会即时刷新,避免了轮询延迟。

在实际部署中,Uptime Kuma 的易用性进一步凸显。通过 Docker 一键安装,用户无需复杂环境配置。典型部署命令为:docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1。这将数据持久化在本地卷中,确保重启后监控历史不丢失。访问 http://localhost:3001 后,首次需设置管理员账户,支持 2FA 增强安全。监控项添加界面直观:选择类型、输入目标(如 URL 或 IP)、设置间隔(推荐 60 秒以平衡负载)和最大重试次数(默认 1 次)。对于自托管可靠性,建议优先监控核心服务,如 Nginx 的 80/443 端口(HTTP/TCP)、MySQL 的 Ping 和 Docker 容器的运行状态。

自定义警报是 Uptime Kuma 的另一亮点。它集成 90 多种通知服务,包括 Telegram、Discord、Email (SMTP) 和 Webhook。配置时,对于 Email 警报,选择 SMTP 服务器(如 Gmail 的 smtp.gmail.com:587),输入认证凭证,并设置 TLS 加密。警报触发条件可细化:如响应时间超过 5 秒视为 down,或 uptime 低于 99% 时发送恢复通知。WebSocket 更新确保警报实时抵达仪表盘,用户可通过状态页面(Status Page)公开部分监控数据,支持自定义域名映射和主题。举例,在多服务环境中,设置标签分组(如 "前端服务" 和 "后端数据库"),并为高优先级项启用更短间隔(20 秒)和多渠道通知(Email + Telegram)。

为了可落地实施,以下是详细参数和清单:

部署清单:

  • 环境:Docker 安装完成,Node.js >=18(可选,非 Docker)。
  • 卷创建:docker volume create uptime-kuma。
  • 运行容器:上述 Docker 命令,暴露 3001 端口。
  • 安全配置:启用 HTTPS 代理(如 Nginx),添加 2FA。
  • 资源需求:最低 512MB RAM,适合 VPS 或本地服务器。

监控配置参数:

  • HTTP 检查:URL、方法(GET/POST)、预期状态码(200-299)、关键词(可选,如 "OK")、超时(30 秒)。
  • TCP 检查:主机、端口、超时(10 秒)。
  • Ping 检查:主机、最大重试(3 次)、间隔(60 秒)。
  • 证书监控:启用 SSL 检查,警报证书到期前 30 天。
  • 数据库监控:支持 MySQL/PostgreSQL 等,检查连接字符串。

警报与优化:

  • 通知渠道:优先 Webhook 集成(如 Slack API),备用 Email。
  • 阈值:响应时间 >3 秒触发警告,>10 秒触发 down。
  • 监控点:至少覆盖 80% 核心服务,定期审查历史图表(Ping 图表显示 RTT 趋势)。
  • 回滚策略:若监控负载过高,增加间隔至 120 秒;使用 PM2 管理非 Docker 部署以支持集群。

通过这些参数,用户可以快速构建一个可靠的监控系统。例如,在一个典型的自托管博客站点中,监控 Nginx(HTTP)、WordPress 数据库(TCP)和 CDN 端点(Ping),结合 WebSocket 实时视图,确保 99.9% uptime。潜在风险包括服务器资源消耗(监控过多项时 CPU 峰值可达 20%),建议从 5-10 个监控项起步,并监控 Uptime Kuma 自身。

最后,Uptime Kuma 的资料主要来源于其 GitHub 仓库,其中提到 “Monitoring uptime for HTTP (s) / TCP / Ping /... with notifications via 90+ services。” 官方文档和 demo 站点进一步提供了配置示例。

(字数:1025)

查看归档