VPS跑着跑着变慢了?网站时不时502?内存突然飙到99%?
如果你不知道服务器发生了什么,就没办法解决问题。这就是监控的意义——先看到问题,再解决问题。
今天教你用三款免费工具搭建完整的VPS监控体系,从实时状态到历史趋势,全部搞定。
本文适合谁: 已经买了VPS但不知道怎么监控的用户。如果你还没买VPS,推荐从 RackNerd 年付$11.29起 开始练手。
为什么需要VPS监控?
| 场景 | 没有监控 | 有监控 |
|---|---|---|
| 网站变慢 | 用户抱怨,你不知道原因 | 看到是内存不足,立刻加配置 |
| 服务器宕机 | 第二天才发现 | 实时告警,5分钟响应 |
| 被攻击 | 流量异常但没察觉 | 流量图突然飙升,立即处理 |
| 资源浪费 | 买了4核8G只用了10% | 看到实际负载,降配省钱 |
工具一:htop——终端实时监控
htop是最基础也最实用的VPS监控工具,SSH连上去就能用。
安装
# Debian/Ubuntu
sudo apt install htop -y
# CentOS/RHEL
sudo yum install htop -y
使用
htop
界面说明:
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1234 root 20 0 256M 50M 12M S 15.0 5.0 1:23.45 nginx: worker
5678 www-data 20 0 128M 30M 8M S 8.0 3.0 0:45.67 php-fpm: pool
关键指标解读
| 指标 | 正常范围 | 危险信号 |
|---|---|---|
| CPU% | <80% | 持续>90% |
| MEM% | <80% | >90%或swap频繁使用 |
| Load Average | <CPU核心数 | >核心数×2 |
| 进程数 | <200 | >500且持续增长 |
htop快捷键
| 快捷键 | 功能 |
|---|---|
| F5 | 树状视图(看进程关系) |
| F6 | 按CPU/内存排序 |
| F9 | 杀死进程 |
| F10 | 退出 |
💡 小技巧:
htop -d 10每0.1秒刷新一次,适合排查瞬时问题。
工具二:Netdata——一键安装的监控面板
Netdata是目前最强大的免费VPS监控工具,自动监控200+指标,自带Web面板,还能设置告警。
一键安装
# Debian/Ubuntu
curl -Ss https://my-netdata.io/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh
# CentOS/RHEL
curl -Ss https://my-netdata.io/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh
安装完成后,Netdata会自动运行。访问:
http://你的VPS_IP:19999
Netdata监控内容
Netdata默认监控以下指标:
| 类别 | 具体指标 |
|---|---|
| CPU | 使用率、频率、温度 |
| 内存 | 已用、可用、Swap、缓存 |
| 磁盘 | I/O、读写速度、使用率 |
| 网络 | 流量、丢包、错误 |
| 进程 | CPU/内存占用Top10 |
| Docker | 容器资源使用(如已安装) |
| Nginx/Apache | 连接数、请求速率 |
| MySQL/PostgreSQL | 查询速率、连接数 |
配置告警
Netdata内置了智能告警系统。编辑告警配置:
sudo nano /etc/netdata/health.d/cpu.conf
自定义CPU告警阈值:
cpu_usage:
on: system.cpu
lookup: average -5s percentage of user,system,softirq,irq
warn: $this > 80
crit: $this > 95
delay: down 15m multiplier 1.5 max 1h
info: CPU utilization
to: sysadmin
配置邮件告警
# 安装邮件发送工具
sudo apt install sendmail -y
# 配置Netdata发送邮件
sudo nano /etc/netdata/health_alarm_notify.conf
设置:
SEND_EMAIL="YES"
DEFAULT_EMAIL_ADDRESS="[email protected]"
远程监控
如果你想从外部访问Netdata面板,建议使用Netdata Cloud(免费):
- 访问 app.netdata.cloud
- 注册账号
- 在VPS上连接:
sudo ./netdata-claim.sh -token=YOUR_TOKEN -rooms=YOUR_ROOM
这样就能在浏览器里随时查看服务器状态,不用暴露19999端口。
工具三:Glances——Python写的全能监控
Glances是一个轻量级但功能强大的监控工具,支持Web界面、API和远程监控。
安装
# 方法1:pip安装(推荐)
pip3 install glances
# 方法2:apt安装
sudo apt install glances -y
# 方法3:Docker安装
docker run -d --restart=always \
-p 61208:61208 \
-e GLANCES_OPT="-w" \
docker.io/nicolargo/glances:latest
使用Web界面
# 启动Web模式
glances -w
# 访问 http://你的VPS_IP:61208
Glances vs htop vs Netdata
| 功能 | htop | Glances | Netdata |
|---|---|---|---|
| 实时监控 | ✅ | ✅ | ✅ |
| Web界面 | ❌ | ✅ | ✅ |
| 历史数据 | ❌ | ✅ | ✅ |
| 告警通知 | ❌ | ✅ | ✅ |
| Docker监控 | ❌ | ✅ | ✅ |
| API接口 | ❌ | ✅ | ✅ |
| 安装难度 | ⭐ | ⭐⭐ | ⭐ |
| 资源占用 | 极低 | 低 | 中等 |
Glances API
Glances提供REST API,可以集成到自己的监控系统:
# 查看CPU信息
curl http://localhost:61208/api/4/cpu
# 查看内存信息
curl http://localhost:61208/api/4/mem
# 查看磁盘信息
curl http://localhost:61208/api/4/fs
# 查看网络信息
curl http://localhost:61208/api/4/network
性能优化实战
监控是为了发现问题,优化才是解决问题。
1. 内存优化
# 查看内存使用详情
free -h
# 清理系统缓存(安全操作)
sudo sync; sudo sysctl -w vm.drop_caches=3
# 永久设置内存优化
sudo nano /etc/sysctl.conf
添加:
# 减少swap使用
vm.swappiness=10
# 调整overcommit
vm.overcommit_memory=1
# 清理缓存
vm.drop_caches=3
生效:
sudo sysctl -p
2. 磁盘优化
# 查看磁盘使用率
df -h
# 查找大文件
du -sh /* | sort -rh | head -10
# 清理日志
sudo journalctl --vacuum-size=100M
# 清理APT缓存
sudo apt clean
# 启用TRIM(SSD必需)
sudo fstrim -av
3. Nginx优化(如果跑网站)
# /etc/nginx/nginx.conf
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
# 启用gzip
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# 启用缓存
open_file_cache max=10000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
# 连接优化
keepalive_timeout 65;
keepalive_requests 1000;
}
4. PHP优化(如果跑WordPress)
; /etc/php/8.x/fpm/pool.d/www.conf
; 进程数 = CPU核心数 × 2 + 1
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
; OPcache配置
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
搭建完整监控体系
推荐方案
| 需求 | 推荐工具 | 部署难度 |
|---|---|---|
| 快速查看当前状态 | htop | ⭐ |
| 全面监控+告警 | Netdata | ⭐⭐ |
| 远程监控+API | Glances | ⭐⭐ |
| 多服务器统一监控 | Netdata Cloud | ⭐⭐⭐ |
我的推荐组合
入门级: htop + Netdata
# 安装htop
sudo apt install htop -y
# 安装Netdata
curl -Ss https://my-netdata.io/kickstart.sh | sh
# 日常用htop快速查看,详细分析用Netdata
进阶级: htop + Netdata + Glances
# 在Netdata面板看全局趋势
# 用Glances的API集成到自己的监控系统
# htop用于SSH时快速排查
常见问题
Q: 监控工具本身会占用多少资源?
| 工具 | CPU占用 | 内存占用 |
|---|---|---|
| htop | ~0%(按需刷新) | ~5MB |
| Netdata | ~1-3% | ~50-100MB |
| Glances | ~0.5-1% | ~30-50MB |
对于1核1GB的VPS(如 RackNerd $11.29/年),只用htop和Netdata就足够了。
Q: 我用 Hostinger VPS,面板自带监控够用吗?
Hostinger的hPanel确实有基础监控(CPU、内存、流量),但粒度不够细,也没有告警功能。建议还是安装Netdata补充。
Q: 监控数据会泄露隐私吗?
Netdata和Glances默认只监控系统指标,不涉及用户数据。如果你配置了邮件告警,确保邮件账户安全即可。
Q: Vultr 的控制台监控和Netdata有什么区别?
Vultr控制台只显示基础的CPU/内存/带宽使用率,没有历史趋势、进程级分析、告警通知。Netdata功能强大得多。
总结
VPS监控不复杂,三步就能搞定:
- htop——SSH进去快速看一眼(日常使用)
- Netdata——全面监控+告警(主力工具)
- Glances——Web界面+API(补充方案)
有了监控,你的VPS就从"盲人摸象"变成了"一目了然"。
💡 下一步: 监控搭好了,建议再搞个自动备份方案,双保险。
Disclaimer: Some links are affiliate links. We may earn a commission at no extra cost to you.
