Ubuntu 服务器性能监控:从 top 到 Glances 的 3 种方案部署与选型指南
在 Ubuntu 服务器运维中,性能监控是确保系统稳定运行的关键环节。面对生产环境中可能出现的资源瓶颈,管理员需要一套从轻量到全面的监控方案组合。本文将深入解析三种典型方案:基础命令行工具(top/htop)、增强型终端工具(Glances)以及 Web 仪表盘方案(Netdata),并提供可落地的部署指南与选型决策框架。
1. 基础命令行方案:top 与 htop 的实战应用
作为 Linux 系统原生的性能监控工具,top 命令是大多数管理员接触的第一个性能观察窗口。其默认界面展示了系统负载、进程列表和资源占用概况:
top - 14:30:45 up 2 days, 3:45, 1 user, load average: 0.15, 0.21, 0.19 Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie %Cpu(s): 3.2 us, 1.1 sy, 0.0 ni, 95.5 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 7824.4 total, 1024.2 free, 4096.3 used, 2703.9 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3328.1 avail Mem关键字段解析:
load average:三个数值分别表示过去1、5、15分钟的系统平均负载%Cpu(s):用户态(us)、内核态(sy)、空闲(id)等CPU状态占比MiB Mem:物理内存使用情况,注意buff/cache属于可回收内存MiB Swap:交换分区使用情况,长期占用过高需警惕内存不足
htop 作为 top 的增强版,通过以下命令安装后提供更直观的交互体验:
sudo apt update && sudo apt install -y htophtop 的核心优势体现在:
- 彩色可视化:不同资源使用率以颜色区分
- 鼠标支持:直接点击列头可排序进程
- 快捷键操作:
F2:进入设置界面自定义显示项F4:过滤特定进程(如输入nginx只显示相关进程)F9:向选中进程发送信号(如SIGTERM优雅终止进程)Space:标记进程持续高亮跟踪
提示:在内存分析时,重点关注
RES(实际物理内存占用)与SHR(共享内存)的差值,这代表进程独占的内存用量。公式为:独占内存 = RES - SHR
2. 增强型终端方案:Glances 的部署与深度配置
Glances 是一款跨平台的现代化监控工具,通过单个命令即可获取包括温度传感器、磁盘IO、网络流量等全方位数据。安装方式如下:
sudo apt install -y python3-pip sudo pip3 install glances[all]基础使用与特色功能:
- 全局概览:启动后默认显示CPU、内存、交换分区、负载等核心指标
- 磁盘监控:不仅显示使用率,还包括各分区读写速率(MB/s)
- 网络监控:实时显示每个网卡的上传/下载流量
- 告警阈值:关键指标超过预设值时会自动红色高亮
- API访问:通过
--export http参数启用Web API接口
对于生产环境,建议将Glances配置为systemd服务实现持久化运行。创建服务配置文件:
sudo tee /etc/systemd/system/glances.service <<EOF [Unit] Description=Glances Monitoring Tool After=network.target [Service] ExecStart=/usr/local/bin/glances -w --disable-plugin cloud -t 5 Restart=on-failure User=root [Install] WantedBy=multi-user.target EOF启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable --now glances关键参数说明:
-w:启用Web服务器模式(默认端口61208)--disable-plugin cloud:禁用不必要的云检测插件-t 5:设置刷新间隔为5秒
通过浏览器访问http://服务器IP:61208即可获得完整的Web界面。对于需要长期监控的场景,可以结合--export influxdb参数将数据写入时序数据库。
3. Web仪表盘方案:Netdata 的一键部署与定制
Netdata 以其开箱即用的特性成为轻量级实时监控的首选。其安装仅需单条命令:
bash <(curl -Ss https://my-netdata.io/kickstart.sh) --stable-channel --disable-telemetry安装完成后,Netdata 会自动:
- 监听19999端口(可通过
http://服务器IP:19999访问) - 收集600+种系统指标
- 配置systemd服务实现开机自启
核心功能亮点:
- 零配置告警:预置CPU、内存、磁盘等常见阈值告警规则
- 历史数据:默认保存1小时的高精度数据(可扩展)
- 插件生态:支持Python、Bash等扩展插件收集应用指标
- API支持:所有数据可通过
/api/v1/data?chart=system.cpu等接口获取
对于需要长期存储数据的场景,可通过修改/etc/netdata/netdata.conf启用后端数据库:
[backend] enabled = yes type = graphite destination = 192.168.1.100:20034. 方案对比与选型决策指南
下表从六个维度对比三种监控方案的特性:
| 特性维度 | top/htop | Glances | Netdata |
|---|---|---|---|
| 安装复杂度 | 已预装/apt安装 | pip或包管理器安装 | 需运行安装脚本 |
| 资源占用 | <10MB内存 | ~30MB内存 | ~50MB内存 |
| 数据持久化 | 不支持 | 需额外配置导出 | 内置1小时历史数据 |
| 监控粒度 | 进程级 | 系统级+进程级 | 系统级+应用级 |
| 告警能力 | 需手动观察 | 基础阈值告警 | 预置智能告警规则 |
| 典型场景 | 快速故障诊断 | 日常巡检 | 长期性能分析 |
选型建议组合:
- 开发测试环境:htop + Glances Web模式
- 生产轻量监控:Glances(systemd服务) + 简易日志告警
- 全面监控体系:Netdata(主监控) + Prometheus(长期存储) + Alertmanager(告警路由)
对于需要监控GPU等特殊硬件的场景,可补充安装专用工具:
# Intel GPU监控 sudo apt install -y intel-gpu-tools intel_gpu_top # NVIDIA GPU监控 nvidia-smi -l 1 # 每秒刷新一次5. 高级技巧:监控数据的可视化与自动化
将Glances或Netdata与Grafana集成可以构建更专业的监控看板。以Netdata为例,配置步骤如下:
- 在Grafana中添加Netdata数据源(类型选择
Prometheus,URL填写http://netdata-ip:19999/api/v1/allmetrics?format=prometheus) - 导入官方提供的 Netdata仪表盘模板
- 配置告警通道(如邮件、Slack等)
对于需要定期生成性能报告的场合,可以使用Glances的批处理模式:
glances --export csv --export-csv-file /var/log/glances-$(date +%Y%m%d).csv然后通过crontab设置定时任务:
# 每天凌晨生成报告 0 0 * * * /usr/local/bin/glances --export csv --export-csv-file /var/log/glances-$(date +\%Y\%m\%d).csv在内存有限的服务器上,可以通过修改Glances的配置减少资源占用:
[global] refresh=10 # 降低刷新频率 disable-plugin=docker,cloud,folders # 禁用非必要插件