在崩溃前监控您的VPS:Netdata、UptimeRobot与告警配置

没有监控的 VPS,就像开着一辆没有仪表盘的汽车——你完全不知道油什么时候耗尽、引擎是否过热,或者轮胎是否即将爆裂。VPS 监控让你能在问题演变成全面宕机或数据丢失之前提前发现并处理。本指南将带你用免费、易于安装的工具,一步步搭建一套完整的监控体系。

为什么需要监控您的 VPS

大多数服务器故障并非毫无预兆。几乎总会有提前出现的警告信号:CPU 因失控进程而持续攀升、内存耗尽导致系统大量使用 Swap、磁盘写满后无法继续写入日志或接收上传,又或者出现异常网络流量——这些都可能是攻击的前兆。

一套良好的监控系统能够:

需要监控 VPS 的哪些指标

在安装任何工具之前,先了解哪些指标最为重要:

双层监控原则:始终将外部监控(来自外部,如 UptimeRobot)与内部监控(来自 VPS 内部,如 Netdata)结合使用。两者各自能发现不同类型的问题,搭配使用效果最佳。

关键指标:健康区间与危险区间

有效的 VPS 监控,始于了解每项指标的"正常"状态以及何时该开始警惕。下表总结了典型 VPS 的实用阈值,帮助你在恰当的时机设置告警——既不会频繁触发到让你开始忽视,也不会迟到到问题已经无法挽回。

指标 健康范围 需关注 / 危险区间 快速检查命令
CPU < 70% > 90% 持续超过 5 分钟 top / htop
内存 < 80% 大量使用 Swap free -h
磁盘空间 < 75% > 85%(在写满前及时处理) df -h
负载均值 < CPU 核心数 > 核心数 × 1.5 uptime
网络流量 与流量相符,较为平稳 异常流量峰值(可能遭受攻击) vnstat / iftop
可用性 持续可访问 响应时间 > 2 秒 UptimeRobot

一个简单的经验法则:某项指标进入"需关注区间"并不意味着系统即将崩溃——它意味着你应该关注一下当前情况。磁盘空间尤其需要特别注意:务必在写满之前提前处理,因为一旦磁盘真正写满,数据库和网站会立即停止写入,事后恢复远比事前预防复杂得多。

主流监控工具对比:应该选哪一款?

监控工具的选择范围很广,从一分钟内完成安装的简单工具,到可完全自定义的企业级监控栈都有。你的选择取决于:你只需要知道"网站挂了吗?",还是需要带有长期历史图表的专业仪表板。下表对四款最受欢迎的工具进行了横向对比。

工具 类型 适用场景 配置难度
Netdata 内部监控(安装在 VPS 上) 详细的实时仪表板,一条命令完成安装 非常简单
UptimeRobot 外部监控(云端) 从外部检查可用性,网站宕机时立即告警 简单(VPS 上无需安装任何东西)
Uptime Kuma 自托管外部监控 开源的 UptimeRobot 替代品,监控数量不限 中等(需使用 Docker)
Grafana + Prometheus 内部监控(组合栈) 长期历史图表、高度可定制、支持多台服务器 较难(多层配置)

对于只运营单个网站的初学者,Netdata + UptimeRobot 已经足够,且完全免费。如果你同时管理多台 VPS,或需要数月的历史数据用于容量规划,可以升级到 Grafana + PrometheusUptime Kuma 则适合那些希望自托管外部监控、注重数据隐私并避免免费计划限制的用户。

UptimeRobot — 免费的外部监控服务

UptimeRobot 是目前最受欢迎的外部监控服务,每 5 分钟从互联网检查一次你的网站是否可以正常访问。免费套餐最多支持 50 个监控项,并提供电子邮件告警和 Webhook 集成(可将通知推送至 LINE、Slack 等平台)。

UptimeRobot 分步设置教程

  1. 前往 uptimerobot.com,用你的电子邮件注册一个免费账号。
  2. 在控制台点击 Add New Monitor(添加新监控)。
  3. 选择监控类型:HTTP(s) 用于网站 URL,或选择 Ping 直接监控 VPS 的 IP 地址。
  4. 填写友好名称(如"我的 VPS 网站")以及网站 URL。
  5. 将监控间隔设置为 5 分钟(免费套餐的最短间隔)。
  6. 在告警联系人处添加你的电子邮件,或配置 LINE Notify 或 Slack 的 Webhook URL。
  7. 点击 Create Monitor(创建监控)。

将 UptimeRobot 告警接入 LINE Notify

UptimeRobot 支持 Webhook,可通过 Make.com(原 Integromat)等集成平台接入 LINE Notify。配置完成后,每当你的网站宕机或恢复上线,你都会立即收到 LINE 消息通知——即使你不在电脑旁边。

外部监控的核心优势:UptimeRobot 从全球多个服务器节点进行监控。即使你的 VPS 完全断线或出现网络故障,它依然能发出告警——因为监控系统本身并不运行在你的 VPS 上。

Netdata — VPS 上的实时监控仪表板

Netdata 是一款开源监控工具,可直接安装在你的 VPS 上,提供美观且高度详细的实时仪表板。它涵盖 CPU、内存、磁盘 I/O、网络、运行中的进程、Docker 容器等众多指标——安装完成后无需额外配置即可使用。

一条命令完成 Netdata 安装

Netdata 提供自动安装脚本,兼容 Ubuntu、Debian、CentOS 等多种发行版。只需运行以下两条命令:

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
bash /tmp/netdata-kickstart.sh --nightly-channel --dont-start-it

安装完成后,启动服务并确认其正常运行:

systemctl start netdata
systemctl enable netdata
systemctl status netdata

Netdata 运行在 19999 端口。打开浏览器,访问 http://YOUR_VPS_IP:19999 即可立即查看实时仪表板。

Netdata 的安全注意事项

默认情况下,Netdata 会监听所有 IP 地址的 19999 端口。这存在安全风险,因为仪表板会暴露详细的系统信息,不应对公网开放。建议采用以下方法之一进行加固:

方案一:通过 UFW 按 IP 限制访问

# Allow only your specific IP address
ufw allow from YOUR_HOME_IP to any port 19999
# Block everyone else
ufw deny 19999

方案二:将 Netdata 绑定到本地回环地址

# Edit /etc/netdata/netdata.conf
[web]
    bind to = 127.0.0.1

然后通过 SSH 隧道从本地安全访问仪表板:

# Run this on your local machine, NOT on the VPS
ssh -L 19999:localhost:19999 user@YOUR_VPS_IP
# Then open http://localhost:19999 in your browser

Glances — 命令行快速诊断工具

有时候你只需要通过 SSH 快速查看 VPS 状态,而不想打开浏览器。Glances 正是为此而生。它在单一界面上实时显示 CPU、内存、负载、网络、磁盘以及运行中的进程,每秒自动刷新。

安装 Glances

# Install via pip (recommended — gets the latest version)
pip3 install glances

# Or install via apt
apt install glances -y

使用 Glances

# Run the interactive terminal UI
glances

# Run in web server mode (access via browser on port 61208)
glances -w

# Compact mode (less data, ideal for narrow screens)
glances --byte

Glances 还支持将数据导出到 InfluxDB、Elasticsearch 或 CSV 文件,方便长期存储和分析使用情况。

磁盘使用率超过 80% 时发送邮件告警

要实现磁盘空间的自动告警,只需编写一个简单的 Shell 脚本,并通过 Cron 任务设置为每小时运行一次,无需任何第三方软件。

创建磁盘告警脚本

nano /usr/local/bin/disk-alert.sh

将以下内容粘贴到文件中:

#!/bin/bash
THRESHOLD=80
EMAIL="[email protected]"
HOSTNAME=$(hostname)

df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  USAGE=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
  PARTITION=$(echo $output | awk '{ print $2 }')
  if [ $USAGE -ge $THRESHOLD ]; then
    echo "WARNING: ${HOSTNAME} Disk ${PARTITION} is ${USAGE}% full" | \
    mail -s "Disk Alert: ${HOSTNAME} ${PARTITION} ${USAGE}% Used" "$EMAIL"
  fi
done

赋予脚本可执行权限并进行测试:

chmod +x /usr/local/bin/disk-alert.sh
bash /usr/local/bin/disk-alert.sh

通过 Cron 定时执行脚本

crontab -e

# Add this line to run every hour
0 * * * * /usr/local/bin/disk-alert.sh

注意:此脚本需要在 VPS 上安装 mailutils,可通过 apt install mailutils -y 安装。此外,还需配置好 SMTP 或 Sendmail 以发送外发邮件。

CPU 飙升时的处理清单

当你收到 CPU 高使用率告警时,按以下步骤系统地排查和解决问题:

  1. 找出最耗 CPU 的进程:运行 tophtop,按 P 键按 CPU 使用率排序,记录排在首位的进程。
  2. 查看该进程的日志:例如,若是 Apache,查看 /var/log/apache2/error.log;若是 MySQL,查看 /var/log/mysql/error.log
  3. 重启问题服务:确认进程异常后,使用 systemctl restart 服务名 重启该服务。
  4. 检查内存和 Swap:运行 free -h 查看 Swap 使用情况。若 Swap 已满,可能需要完整重启系统。
  5. 检查网络连接数:运行 netstat -an | grep ESTABLISHED | wc -l 统计活跃连接数。数值异常偏高可能表明正在遭受 DDoS 攻击。
  6. 考虑升级配置:若 CPU 飙升频繁发生且由正常流量增长引起,说明是时候升级 VPS 套餐以获得更多 CPU 核心或内存了。

推荐方案:UptimeRobot + Netdata 组合使用

最有效的 VPS 监控策略是将两款工具结合使用,因为它们从不同维度覆盖同一问题:

典型的工作流程:UptimeRobot 告警网站宕机 → 打开 Netdata 发现 CPU 占用 100% 或磁盘已满 → 几分钟内定位并修复根本原因,而不是盲目猜测出了什么问题。

完整监控方案,零成本:UptimeRobot(外部监控,免费)+ Netdata(内部仪表板,免费开源)+ Shell 脚本 + Cron 磁盘告警 = 一套完整的监控体系,运行成本为零。

配置阈值告警

再漂亮的仪表板,如果你不是 24 小时盯着看,也毫无意义。优质监控的核心在于告警——当某项指标突破你设定的阈值时,系统立即通知你,让你能在问题扩大前及时处理。有效的告警配置遵循以下几个关键原则:

Netdata 内置健康告警系统:编辑 /etc/netdata/health.d/ 目录下的文件,即可定义自己的告警条件和通知渠道。UptimeRobot 可直接在控制台配置告警,磁盘空间告警则可采用前文介绍的 Shell 脚本 + Cron 方式。以下是一个当可用内存不足时发出告警的简单示例:

#!/bin/bash
# Alert when free RAM drops below 10%
FREE=$(free | awk '/Mem/{printf("%.0f", $7/$2*100)}')
if [ "$FREE" -lt 10 ]; then
  echo "WARNING: RAM available only ${FREE}% on $(hostname)" | \
  mail -s "RAM Alert: $(hostname)" [email protected]
fi

通过 */10 * * * * /usr/local/bin/ram-alert.sh 设置为每 10 分钟运行一次,无需额外软件,即可拥有一套轻量级的内存告警系统。

日志监控基础

除了资源数据,系统日志和应用日志才是了解服务器实际运行状态的核心来源。学会读懂日志是快速排查问题的基本功。以下是每位 Linux VPS 用户都应了解的关键日志文件:

最常用的两个命令是 tail -f(实时流式查看日志)和 grep(搜索特定关键词)。示例如下:

# Stream a log in real time while debugging
tail -f /var/log/nginx/error.log

# Count failed login attempts
grep "Failed password" /var/log/auth.log | wc -l

# Show the last 50 lines of the system journal
journalctl -n 50 --no-pager

如果需要更便于长期检索的日志方案,可以升级使用 journalctl(systemd 内置)或部署 Loki + Grafana 将多台服务器的日志集中管理。对于单台 VPS 而言,tailgrep 已完全足够日常使用。

VPS 监控常见问题解答

监控 VPS 的频率应该多高?

Netdata 等内部监控工具每秒实时采集数据,而 UptimeRobot 等外部监控在免费套餐下每 5 分钟检查一次——对普通网站来说已经足够。对可靠性要求极高的服务,可升级到付费套餐,将检查间隔缩短至 1 分钟。比频率更重要的,是配置好告警,确保问题发生时能第一时间收到通知。

监控工具会消耗大量 VPS 资源吗?

Netdata 和 Glances 等工具经过专门优化,极为轻量,只占用少量 CPU 和内存,不会对网站性能造成明显影响。如果你的 VPS 内存较小,可以在 Netdata 的配置文件中减少历史数据的保留量。

AsiaGB VPS 提供怎样的正常运行时间保障?可以安装监控工具吗?

AsiaGB VPS 提供 99% 的运行时间保障,并具备完整的 root 权限,你可以自由安装 Netdata、Glances、Uptime Kuma 或 Grafana + Prometheus 等任意监控工具。VPS Linux 套餐起价 500 泰铢/月,数据中心位于泰国和新加坡。

外部监控和内部监控有什么区别?两者都需要吗?

外部监控(如 UptimeRobot)从外部检查网站是否可访问,即使 VPS 完全宕机也能正常工作。内部监控(如 Netdata)则报告机器内部详细的资源使用情况。建议两者结合使用——外部监控告诉你"有问题了",内部监控告诉你"问题出在哪里"。

AsiaGB VPS — 开箱即用,随时监控

完整的 Root 权限,让你自由安装 Netdata、Glances 及任何所需的监控工具。VPS Linux 套餐起价 500 泰铢/月,数据中心位于泰国和新加坡。

查看 VPS 套餐

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