
没有监控的 VPS,就像开着一辆没有仪表盘的汽车——你完全不知道油什么时候耗尽、引擎是否过热,或者轮胎是否即将爆裂。VPS 监控让你能在问题演变成全面宕机或数据丢失之前提前发现并处理。本指南将带你用免费、易于安装的工具,一步步搭建一套完整的监控体系。
为什么需要监控您的 VPS
大多数服务器故障并非毫无预兆。几乎总会有提前出现的警告信号:CPU 因失控进程而持续攀升、内存耗尽导致系统大量使用 Swap、磁盘写满后无法继续写入日志或接收上传,又或者出现异常网络流量——这些都可能是攻击的前兆。
一套良好的监控系统能够:
- 在服务器崩溃之前发出警报,而不是事后才知道
- 帮助你快速定位问题的根本原因
- 收集历史数据,让你掌握资源使用趋势
- 将宕机时间及其对网站访客的影响降到最低
需要监控 VPS 的哪些指标
在安装任何工具之前,先了解哪些指标最为重要:
- CPU 使用率:正常情况下持续使用率应低于 70–80%。若 CPU 连续数分钟维持在 100%,则说明出现了问题。
- 内存使用率:当内存耗尽、系统大量使用 Swap 时,系统响应速度会明显下降。
- 磁盘 I/O:异常高的读写活动可能指向数据库压力过大或日志文件无限增长。
- 磁盘空间:磁盘一旦写满,网站和数据库将立即停止写入操作。
- 网络流量:带宽使用量骤然飙升,可能是 DDoS 攻击或应用程序配置错误的信号。
- 运行时间 / 响应时间:从外部验证网站是否可访问、响应是否正常。
双层监控原则:始终将外部监控(来自外部,如 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 + Prometheus。Uptime Kuma 则适合那些希望自托管外部监控、注重数据隐私并避免免费计划限制的用户。
UptimeRobot — 免费的外部监控服务
UptimeRobot 是目前最受欢迎的外部监控服务,每 5 分钟从互联网检查一次你的网站是否可以正常访问。免费套餐最多支持 50 个监控项,并提供电子邮件告警和 Webhook 集成(可将通知推送至 LINE、Slack 等平台)。
UptimeRobot 分步设置教程
- 前往 uptimerobot.com,用你的电子邮件注册一个免费账号。
- 在控制台点击 Add New Monitor(添加新监控)。
- 选择监控类型:HTTP(s) 用于网站 URL,或选择 Ping 直接监控 VPS 的 IP 地址。
- 填写友好名称(如"我的 VPS 网站")以及网站 URL。
- 将监控间隔设置为 5 分钟(免费套餐的最短间隔)。
- 在告警联系人处添加你的电子邮件,或配置 LINE Notify 或 Slack 的 Webhook URL。
- 点击 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 高使用率告警时,按以下步骤系统地排查和解决问题:
- 找出最耗 CPU 的进程:运行
top或htop,按 P 键按 CPU 使用率排序,记录排在首位的进程。 - 查看该进程的日志:例如,若是 Apache,查看
/var/log/apache2/error.log;若是 MySQL,查看/var/log/mysql/error.log。 - 重启问题服务:确认进程异常后,使用
systemctl restart 服务名重启该服务。 - 检查内存和 Swap:运行
free -h查看 Swap 使用情况。若 Swap 已满,可能需要完整重启系统。 - 检查网络连接数:运行
netstat -an | grep ESTABLISHED | wc -l统计活跃连接数。数值异常偏高可能表明正在遭受 DDoS 攻击。 - 考虑升级配置:若 CPU 飙升频繁发生且由正常流量增长引起,说明是时候升级 VPS 套餐以获得更多 CPU 核心或内存了。
推荐方案:UptimeRobot + Netdata 组合使用
最有效的 VPS 监控策略是将两款工具结合使用,因为它们从不同维度覆盖同一问题:
- UptimeRobot(外部监控):检测网站是否可从互联网访问,一旦发生宕机立即告警——即使 VPS 完全断电也能发出通知。
- Netdata(内部监控):提供 VPS 内部资源使用的精细洞察,帮助你定位根本原因,在问题演变为宕机前提前干预。
典型的工作流程:UptimeRobot 告警网站宕机 → 打开 Netdata 发现 CPU 占用 100% 或磁盘已满 → 几分钟内定位并修复根本原因,而不是盲目猜测出了什么问题。
完整监控方案,零成本:UptimeRobot(外部监控,免费)+ Netdata(内部仪表板,免费开源)+ Shell 脚本 + Cron 磁盘告警 = 一套完整的监控体系,运行成本为零。
配置阈值告警
再漂亮的仪表板,如果你不是 24 小时盯着看,也毫无意义。优质监控的核心在于告警——当某项指标突破你设定的阈值时,系统立即通知你,让你能在问题扩大前及时处理。有效的告警配置遵循以下几个关键原则:
- 合理设置阈值:阈值过低(如 CPU 50%)会导致告警频繁以致被忽略;阈值过高(如磁盘 99%)则为时已晚。建议以上方指标表中的数值作为起点。
- 添加持续时间条件:只有当指标持续超过阈值时才触发告警——例如 CPU > 90% 且持续超过 5 分钟——以过滤掉不构成真正问题的短暂峰值。
- 选择你真正会看到的渠道:邮件可能被淹没在收件箱里。将告警路由到你全天都在查看的 LINE Notify 或 Slack,能让你更快响应。
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 用户都应了解的关键日志文件:
/var/log/syslog或/var/log/messages— 通用系统日志(内核、服务)/var/log/auth.log— 登录和 SSH 记录(重点关注暴力破解尝试)/var/log/nginx/error.log或/var/log/apache2/error.log— Web 服务器错误/var/log/mysql/error.log— 数据库问题,如连接数超限或崩溃
最常用的两个命令是 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 而言,tail 和 grep 已完全足够日常使用。
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 套餐