
在用户报告问题之前知道您的 VPS 出现问题 — 这是良好服务器监控的目标。本指南介绍了两个行业标准开源工具:Netdata 用于实时服务器指标,Uptime Kuma 用于带 Telegram 警报的正常运行时间监控。两者都是免费的、自托管的,并作为综合监控堆栈一起工作。
Netdata vs Uptime Kuma:每个工具的作用是什么?
这些工具相互补充 — 两者都使用:
Netdata
- 实时 CPU、RAM、磁盘、网络
- 漂亮、易于阅读的仪表板
- 检测性能问题
- 资源激增时发出警报
- 监控流程、数据库、Nginx
Uptime Kuma
- 监控 URL、TCP、HTTP(S)
- 网站宕机时立即发出警报
- 公开状态页面
- Telegram、电子邮件、Slack 支持
- Ping、DNS、证书过期
在 Ubuntu/Debian 上安装 Netdata
安装完成后,访问 http://your-server-ip:19999 进入仪表板。
使用 Nginx 反向代理保护端口 19999
切勿直接暴露端口 19999。请使用 Nginx 作为带基本身份验证的反向代理:
配置 Netdata 警报
Netdata 内置超过 200 条警报规则,可在 /etc/netdata/health.d/ 中自定义。CPU 警报示例:
使用 Docker 安装 Uptime Kuma
访问 http://your-server-ip:3001 进入仪表板并创建管理员账户。
不使用 Docker 安装(npm)
在 Uptime Kuma 中添加监控项
点击 添加新监控 并配置以下内容:
- 监控类型:网站用 HTTP(s),端口用 TCP,服务器用 Ping
- URL/IP:要监控的端点地址
- 心跳间隔:60 秒(推荐)
- 重试次数:标记为宕机前重试 3 次
主流监控方案对比
在选择监控工具之前,比较市场上的各种选项,找到最适合您项目规模和预算的方案。
| 工具 | 类型 | 难度 | 内存占用 | 适合场景 |
|---|---|---|---|---|
| Netdata | 实时指标监控 | 简单 | 50–100 MB | 通用 VPS |
| Uptime Kuma | 正常运行时间监控 | 简单 | 80–120 MB | 各类规模 |
| Prometheus + Grafana | 指标 + 仪表板 | 困难 | 300–500 MB | 大型团队 |
| Zabbix | 企业级监控 | 非常困难 | 500 MB+ | 企业 |
| Datadog | 云端 SaaS | 中等 | Agent ~50 MB | 融资团队 |
将 Netdata 连接到 Netdata Cloud(可选)
Netdata 提供免费云端层,可将多台服务器的仪表板聚合到单一视图中,内置警报管理和机器学习驱动的异常检测 — 尤其适合管理多个 VPS 实例。
将节点接入 Netdata Cloud
安装 Netdata 后,运行以下命令连接到您的云账户:
netdata-claim.sh -token=YOUR_CLAIM_TOKEN \
-rooms=YOUR_ROOM_ID \
-url=https://app.netdata.cloud
免费注册后,在 app.netdata.cloud 仪表板中获取您的 Token 和 Room ID。节点将在 1–2 分钟内出现在云端仪表板中。
Netdata Cloud 的优势
- 在单一仪表板中查看多个 VPS 实例的指标
- 直接从云端接收电子邮件警报(无需配置 SMTP)
- 异常检测 — 使用机器学习自动检测异常行为
- 指标关联 — 在事故期间识别指标之间的关系
- 免费计划支持无限数量的服务器,保留 14 天历史数据
设置 Telegram 通知
- 打开 Telegram,搜索 @BotFather
- 输入 /newbot 并按提示创建您的机器人
- 复制提供的 API Token
- 使用
@userinfobot获取您的 Chat ID - 在 Uptime Kuma 中:设置 → 通知 → 添加 → Telegram
- 输入您的 Bot Token 和 Chat ID
使用 Uptime Kuma 创建公开状态页面
Uptime Kuma 内置公开状态页面功能,让您的客户自行查看系统状态 — 减少重复的支持咨询,同时展示运营透明度。
如何创建状态页面
- 在 Uptime Kuma 中,点击左侧菜单中的 状态页面
- 点击 新建状态页面,设置名称和 slug(如
status) - 选择要在页面上显示的监控项
- 通过将 DNS CNAME 指向您的 VPS,配置自定义域名(如
status.yourdomain.com) - 发布状态页面并与您的用户共享 URL
状态页面的 Nginx 代理配置
在域名 DNS 中添加 CNAME 记录,然后配置 Nginx 将流量代理到 Uptime Kuma 的 3001 端口:
server {
listen 80;
server_name status.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
生产环境 VPS 监控清单
在生产 VPS 上部署任何应用程序之前,请先完成完整的监控配置。此清单涵盖每台生产服务器应具备的基本项目:
- 基础设施监控:安装 Netdata 或同类工具,实时观察 CPU、RAM、磁盘和网络状态
- 正常运行时间监控:配置 Uptime Kuma 每 60 秒 ping 您的主要 URL,宕机时立即发送警报
- 磁盘警报:当磁盘使用率超过 80% 时设置警报,因为磁盘满会同时导致所有服务崩溃
- SSL 到期警报:配置 Uptime Kuma 在 SSL 证书到期前至少 30 天发出警告
- 备份验证:运行脚本,在每日备份成功或失败时发送通知
- 日志监控:当应用日志或 Nginx 错误日志中错误率急剧上升时发出警报
- 数据库监控:定期检查 MySQL 或 PostgreSQL 慢查询日志和连接数
- 公开状态页面:创建面向客户的公开状态页面,提升透明度
完整的监控配置使您的团队能够在客户察觉之前发现问题,大幅缩短平均恢复时间。对于全天候运行的 VPS 环境,快速响应是专业运营与业余部署的核心差异之一。
通过 Bash 脚本实现简单的 CPU/RAM 警报
AsiaGB VPS 起价 500 泰铢/月。同时运行 Netdata 和 Uptime Kuma,享有完整 Root 访问权限、SSD 存储和 Docker 支持。服务器位于泰国(CSL)和新加坡(OVHcloud)。99% 正常运行时间。