Ubuntu 服务器性能监控:从 top 到 Glances 的 3 种方案部署与选型指南

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 htop

htop 的核心优势体现在:

  • 彩色可视化:不同资源使用率以颜色区分
  • 鼠标支持:直接点击列头可排序进程
  • 快捷键操作
    • 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:2003

4. 方案对比与选型决策指南

下表从六个维度对比三种监控方案的特性:

特性维度top/htopGlancesNetdata
安装复杂度已预装/apt安装pip或包管理器安装需运行安装脚本
资源占用<10MB内存~30MB内存~50MB内存
数据持久化不支持需额外配置导出内置1小时历史数据
监控粒度进程级系统级+进程级系统级+应用级
告警能力需手动观察基础阈值告警预置智能告警规则
典型场景快速故障诊断日常巡检长期性能分析

选型建议组合:

  1. 开发测试环境:htop + Glances Web模式
  2. 生产轻量监控:Glances(systemd服务) + 简易日志告警
  3. 全面监控体系: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为例,配置步骤如下:

  1. 在Grafana中添加Netdata数据源(类型选择Prometheus,URL填写http://netdata-ip:19999/api/v1/allmetrics?format=prometheus
  2. 导入官方提供的 Netdata仪表盘模板
  3. 配置告警通道(如邮件、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 # 禁用非必要插件