在aix系统中,nmon(nagios monitor)是一款广受欢迎的性能监控工具,由ibm提供并针对aix系统进行了深度优化,它能够实时收集和展示系统各项关键性能指标,帮助管理员快速定位性能瓶颈、分析系统负载情况,是aix日常运维和性能调优的必备利器,nmon命令的最大优势在于其轻量级、高效性和丰富的监控维度,同时支持将监控数据导出为csv格式,便于后续的长期分析和报表生成。

nmon命令的基本使用
nmon命令的语法格式为nmon [选项],其中常用的选项包括:
-f:后台运行模式,自动生成数据文件,文件名包含主机名和日期时间。-s:设置采样间隔,单位为秒,例如-s 5表示每5秒采样一次。-c:设置采样次数,例如-c 60表示共采样60次,持续时间为5分钟(若间隔为5秒)。-m:指定数据文件的输出目录,默认为当前目录。-t:显示top进程信息,按CPU使用率排序。-x:监控扩展信息,包括网络、文件系统等详细数据。-h:显示帮助信息。
要监控系统5分钟,每10秒采样一次,并将数据保存到/var/log/nmon目录,可以使用以下命令:
nmon -f -s 10 -c 30 -m /var/log/nmon
执行后,nmon会在后台运行,并在指定目录生成类似hostname_YYYYMMDD_HHMM.nmon的数据文件。
nmon的监控界面与交互
当直接执行nmon命令(不带-f选项)时,会进入交互式监控界面,界面分为多个区域,分别显示不同类别的性能数据:

- CPU区域:显示每个CPU核心的使用率(用户态、系统态、空闲、等待),以及逻辑CPU数量。
- 内存区域:显示物理内存总量、已用内存、空闲内存、缓存(cached)和缓冲区(buffer)的使用情况。
- 磁盘区域:显示每个磁盘设备的名称、传输速率(读/写)、I/O操作次数(读/写)和等待时间。
- 网络区域:显示每个网络接口的名称、接收/发送的数据包数量、传输字节数和错误数。
- 文件系统区域:显示每个文件系统的挂载点、总容量、已用空间、可用空间和使用率。
- 进程区域:显示CPU使用率最高的前几个进程及其PID、CPU占用率和内存占用率。
在交互界面中,用户可以通过按键盘上的快捷键切换监控视图:
c:切换到CPU监控。m:切换到内存监控。d:切换到磁盘监控。n:切换到网络监控。j:切换到文件系统监控。t:切换到进程监控。q:退出nmon监控。
nmon数据文件的解析与分析
nmon生成的数据文件是文本格式,包含以开头的注释行(说明主机信息、采样时间间隔等)和以字母开头的数据行,每行数据对应一个时间点的采样结果,列之间用逗号分隔。
TIMESTAMP,HOSTNAME,VERSION,CPUs,LINUX,DATE,TIME,CPU_ALL,%user,%sys,%wait,%idle,DISK_READ,hdisk0,hdisk1,DISK_WRITE,hdisk0,hdisk1
20231101 10:00:00,server1,aix71,8,0,2023-11-01,10:00:00,CPU_ALL,10.2,5.3,2.1,82.4,DISK_READ,1024,512,DISK_WRITE,2048,1024
要分析这些数据,可以使用nmon自带的nmon analyser工具(Excel宏文件)或第三方脚本。nmon analyser的使用步骤如下:
- 将生成的
.nmon文件复制到安装了Excel的Windows系统中。 - 打开
nmon analyser vXX.xls(XX为版本号),点击“Start Here”工作表中的“Select an nmon file”按钮,选择.nmon文件。 - 工具会自动解析数据并生成多个工作表,包括CPU、内存、磁盘、网络等性能图表,方便直观分析。
nmon的高级功能
-
自定义监控指标
通过修改/etc/nmon.conf文件,可以自定义需要监控的磁盘、网络接口或文件系统,仅监控hdisk0和ent0设备,可以在配置文件中添加:
(图片来源网络,侵删)disks hdisk0 interfaces ent0然后使用
-C选项指定配置文件路径:nmon -C /etc/nmon.conf
-
远程监控
可以通过ssh或rsh远程执行nmon命令,将监控数据保存到本地,通过ssh远程监控server1并保存数据到本地:ssh user@server1 "nmon -f -s 10 -c 60 -m /tmp" scp user@server1:/tmp/*.nmon ./
-
实时性能报警
虽然nmon本身不提供报警功能,但可以结合cron任务和脚本实现,编写一个脚本检测CPU使用率超过90%时发送邮件报警:#!/bin/bash threshold=90 cpu_usage=$(nmon -x -s 1 -c 1 | grep "CPU_ALL" | awk -F',' '{print $3}') if (( $(echo "$cpu_usage > $threshold" | bc -l) )); then echo "High CPU usage: $cpu_usage%" | mail -s "CPU Alert" admin@example.com fi
监控指标说明与表格示例
以下是nmon主要监控指标的说明及示例数据:
| 指标类别 | 关键指标说明 | 示例数据(单位) |
|---|---|---|
| CPU | %user:用户态CPU占用率;%sys:系统态CPU占用率;%wait:I/O等待CPU占用率 | CPU_ALL: 15.2, 8.1, 3.5, 73.2 |
| 内存 | Real MB:物理内存总量;Free MB:空闲内存;Cached MB:缓存内存 | MEM: 16384, 2048, 8192, 6144 |
| 磁盘I/O | MBREAD/s:磁盘读取速率;MBWRITTEN/s:磁盘写入速率;WAIT ms:磁盘平均等待时间 | DISK_READ: hdisk0=512, hdisk1=256 |
| 网络 | PACKETS/s:数据包速率;ERR/s:错误包速率;KB/s:传输速率 | NET: ent0=1024, 0, 512 |
| 文件系统 | MBFS:文件系统总容量;MBFREE:剩余空间;%USE:使用率 | JFS2: /data=10240, 2048, 80.0 |
相关问答FAQs
Q1: nmon生成的数据文件如何转换为Excel图表?
A1: 使用nmon自带的nmon analyser工具(Excel宏文件)转换步骤如下:
- 将
.nmon文件传输到Windows系统; - 打开
nmon analyser vXX.xls,点击“Select an nmon file”选择数据文件; - 工具自动解析并生成CPU、内存、磁盘等性能图表,可直接查看或导出为PDF/PNG格式。
Q2: 如何通过nmon持续监控系统性能并自动清理旧数据?
A2: 可以结合cron任务实现长期监控和清理。
- 创建监控脚本
/usr/local/bin/nmon_monitor.sh:#!/bin/bash nmon -f -s 60 -c 1440 -m /var/log/nmon # 每分钟采样,持续24小时 find /var/log/nmon -name "*.nmon" -mtime +7 -delete # 删除7天前的数据
- 添加到cron任务,每天凌晨执行:
0 0 * * * /usr/local/bin/nmon_monitor.sh >/dev/null 2>&1
