使用 Netdata 和 Uptime Kuma 进行 VPS 服务器监控

在用户报告问题之前知道您的 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

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

安装完成后,访问 http://your-server-ip:19999 进入仪表板。

使用 Nginx 反向代理保护端口 19999

切勿直接暴露端口 19999。请使用 Nginx 作为带基本身份验证的反向代理:

server { listen 80; server_name monitor.yourdomain.com; location / { auth_basic "Netdata"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://127.0.0.1:19999; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # Create password htpasswd -c /etc/nginx/.htpasswd admin

配置 Netdata 警报

Netdata 内置超过 200 条警报规则,可在 /etc/netdata/health.d/ 中自定义。CPU 警报示例:

alarm: cpu_usage on: system.cpu lookup: average -3m percentage foreach cpu every: 10s warn: $this > 85 crit: $this > 95 summary: CPU usage is too high

使用 Docker 安装 Uptime Kuma

docker volume create uptime-kuma docker run -d \ --restart=always \ -p 3001:3001 \ -v uptime-kuma:/app/data \ --name uptime-kuma \ louislam/uptime-kuma:1

访问 http://your-server-ip:3001 进入仪表板并创建管理员账户。

不使用 Docker 安装(npm)

git clone https://github.com/louislam/uptime-kuma.git cd uptime-kuma npm run setup node server/server.js

在 Uptime Kuma 中添加监控项

点击 添加新监控 并配置以下内容:

主流监控方案对比

在选择监控工具之前,比较市场上的各种选项,找到最适合您项目规模和预算的方案。

工具 类型 难度 内存占用 适合场景
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 的优势

设置 Telegram 通知

  1. 打开 Telegram,搜索 @BotFather
  2. 输入 /newbot 并按提示创建您的机器人
  3. 复制提供的 API Token
  4. 使用 @userinfobot 获取您的 Chat ID
  5. 在 Uptime Kuma 中:设置 → 通知 → 添加 → Telegram
  6. 输入您的 Bot Token 和 Chat ID

使用 Uptime Kuma 创建公开状态页面

Uptime Kuma 内置公开状态页面功能,让您的客户自行查看系统状态 — 减少重复的支持咨询,同时展示运营透明度。

如何创建状态页面

  1. 在 Uptime Kuma 中,点击左侧菜单中的 状态页面
  2. 点击 新建状态页面,设置名称和 slug(如 status)
  3. 选择要在页面上显示的监控项
  4. 通过将 DNS CNAME 指向您的 VPS,配置自定义域名(如 status.yourdomain.com)
  5. 发布状态页面并与您的用户共享 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 上部署任何应用程序之前,请先完成完整的监控配置。此清单涵盖每台生产服务器应具备的基本项目:

完整的监控配置使您的团队能够在客户察觉之前发现问题,大幅缩短平均恢复时间。对于全天候运行的 VPS 环境,快速响应是专业运营与业余部署的核心差异之一。

通过 Bash 脚本实现简单的 CPU/RAM 警报

#!/bin/bash # /usr/local/bin/alert.sh CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1) RAM_FREE=$(free | awk '/Mem:/{printf "%.0f", $4/$2*100}') if [ "$CPU" -gt 90 ]; then curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" \ -d chat_id="$CHAT_ID" \ -d text="ALERT: CPU Usage ${CPU}% on $(hostname)" fi if [ "$RAM_FREE" -lt 10 ]; then curl -s "https://api.telegram.org/bot$TOKEN/sendMessage" \ -d chat_id="$CHAT_ID" \ -d text="ALERT: Low RAM (only ${RAM_FREE}% free) on $(hostname)" fi

AsiaGB VPS 起价 500 泰铢/月。同时运行 Netdata 和 Uptime Kuma,享有完整 Root 访问权限、SSD 存储和 Docker 支持。服务器位于泰国(CSL)和新加坡(OVHcloud)。99% 正常运行时间。

VPS 已准备好用于服务器监控

VPS 起价 500 泰铢/月。完整 Root 访问、Docker、SSD。泰国和新加坡机房,99% 正常运行时间。

查看 VPS 方案

查看泰国VPS主机全部套餐 →