Nmon 系统性能分析工具教程

Nmon(Nigel's Monitor)是一款功能全面的 Linux 系统性能监控与分析工具,最初由 IBM 为 AIX 系统开发,后来移植到 Linux 平台。Nmon 既可以在终端中交互式显示实时性能数据,也可以将数据导出为 CSV 文件用于后续分析和生成图表。在搬瓦工 VPS 上,Nmon 非常适合进行性能基准测试和长期性能趋势分析。

一、安装

# Ubuntu / Debian
apt update
apt install nmon -y

# CentOS / RHEL
yum install epel-release -y
yum install nmon -y

# 验证安装
nmon -h

二、交互式监控

直接运行 nmon 进入交互式界面,然后按不同的按键切换监控内容:

# 启动 nmon
nmon

2.1 常用快捷键

  • c:CPU 使用率(包含每个核心)
  • m:内存使用详情
  • d:磁盘 I/O 统计
  • n:网络流量
  • t:进程列表(类似 top)
  • k:内核统计信息
  • r:系统资源信息
  • l:CPU 长期趋势图(ASCII 图表)
  • j:文件系统统计
  • V:虚拟内存统计
  • .:只显示忙碌的磁盘和网络
  • h:帮助
  • q:退出

你可以同时按多个键来同时显示多种监控数据,例如同时按 cmdn 可以同时看到 CPU、内存、磁盘和网络的信息。

三、数据采集模式

Nmon 的数据采集模式适合长期监控和性能分析:

# 基本采集:每 30 秒采集一次,共采集 120 次(即 1 小时)
nmon -f -s 30 -c 120

# 自定义输出目录
nmon -f -s 30 -c 120 -m /var/log/nmon/

# 包含进程信息
nmon -f -s 30 -c 120 -t

# 包含磁盘信息
nmon -f -s 30 -c 120 -t -d 1024

# 24 小时监控(每分钟采集一次)
nmon -f -s 60 -c 1440

# 7 天监控(每 5 分钟采集一次)
nmon -f -s 300 -c 2016 -m /var/log/nmon/

采集的数据文件为 .nmon 格式(本质上是 CSV),文件名包含主机名和日期。

四、数据分析

4.1 使用 nmonchart 生成图表

# 下载 nmonchart
wget https://sourceforge.net/projects/nmon/files/nmonchart40.tar -O nmonchart.tar
tar xf nmonchart.tar

# 生成 HTML 图表(包含交互式图表)
./nmonchart hostname_date.nmon output.html

# 在浏览器中查看图表
# 将 output.html 下载到本地打开

4.2 使用 nmon2csv 转换数据

# 将 nmon 数据转为标准 CSV
sort hostname_date.nmon > sorted.nmon

# 提取 CPU 数据
grep "^CPU_ALL" hostname_date.nmon | sed 's/,/\t/g' > cpu_data.tsv

# 提取内存数据
grep "^MEM" hostname_date.nmon | sed 's/,/\t/g' > mem_data.tsv

# 提取磁盘数据
grep "^DISKBUSY" hostname_date.nmon | sed 's/,/\t/g' > disk_data.tsv

# 提取网络数据
grep "^NET" hostname_date.nmon | sed 's/,/\t/g' > net_data.tsv

五、定时采集脚本

#!/bin/bash
# 每天自动启动 nmon 数据采集
NMON_DIR="/var/log/nmon"
mkdir -p "$NMON_DIR"

# 检查是否已有 nmon 采集在运行
if pgrep -f "nmon -f" > /dev/null; then
    echo "Nmon 采集已在运行"
    exit 0
fi

# 启动 24 小时采集(每分钟一次)
nmon -f -s 60 -c 1440 -t -m "$NMON_DIR"
echo "$(date): Nmon 采集已启动" >> "$NMON_DIR/nmon.log"

# 清理 30 天前的数据
find "$NMON_DIR" -name "*.nmon" -mtime +30 -delete

添加到 crontab:

crontab -e
# 每天 0 点启动新的采集
0 0 * * * /root/scripts/start_nmon.sh

六、性能基准测试

# 在进行压力测试时同步启动 nmon 采集
# 终端 1:启动 nmon 采集
nmon -f -s 5 -c 120 -t

# 终端 2:运行 Web 压力测试
ab -n 50000 -c 200 http://localhost/

# 终端 3:运行数据库压力测试
sysbench --test=oltp_read_write --mysql-db=test prepare
sysbench --test=oltp_read_write --mysql-db=test run

# 测试完成后生成报告
./nmonchart hostname_date.nmon benchmark_report.html

七、与其他工具对比

  • vs top/htop:Nmon 同时显示 CPU、内存、磁盘、网络,且支持数据记录和图表生成。
  • vs dstat:Nmon 的交互界面更友好,数据采集和分析工具链更完善。
  • vs sar:Nmon 的实时交互界面更直观,sar 的历史数据查询更灵活。
  • vs glances:Nmon 的数据导出和图表功能更强大,Glances 的 Web 界面更方便。

总结

Nmon 是集实时监控与数据分析于一体的性能工具。它的数据采集模式配合 nmonchart 图表生成功能,非常适合在搬瓦工 VPS 上进行性能基准测试和长期趋势分析。建议在 VPS 上长期运行 nmon 数据采集,配合 Glances 系统监控 用于日常实时观察。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。