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:退出
你可以同时按多个键来同时显示多种监控数据,例如同时按 c、m、d、n 可以同时看到 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% 循环折扣。