
1. 认识nmonLinux系统监控的瑞士军刀第一次接触nmon是在2013年维护一个电商平台的数据库服务器时。当时系统频繁出现性能瓶颈但常规监控工具要么数据不全要么资源占用太高。直到一位资深运维推荐了nmon这个不足2MB的小工具彻底改变了我的监控方式。nmonNigels Monitor是由IBM工程师Nigel Griffiths开发的经典命令行监控工具。它最大的特点是能在一个界面中同时展示CPU、内存、磁盘、网络等关键指标就像给系统做全身CT扫描。与top、vmstat等传统工具相比nmon的优势在于轻量级二进制文件仅1.8MB运行时内存占用不足5MB全维度监控覆盖20种系统指标两种工作模式实时交互式查看和后台记录模式数据可视化配套分析工具nmon_analyser可将数据转为Excel图表提示在资源受限的嵌入式Linux或老旧服务器上nmon往往是唯一能稳定运行的全面监控方案2. 安装与基础使用2.1 多平台安装指南主流Linux发行版的安装方式# Ubuntu/Debian sudo apt install nmon # RHEL/CentOS sudo yum install epel-release sudo yum install nmon # 通用方法适用于任何Linux wget http://sourceforge.net/projects/nmon/files/nmon16e_x86.tar.gz tar zxvf nmon16e_x86.tar.gz chmod x nmon16e_x86 sudo mv nmon16e_x86 /usr/local/bin/nmon实测发现不同CPU架构需要选择对应版本x86_64nmon16e_x86_rhel72POWER架构nmon16e_power_rhel72ARM架构需自行编译2.2 交互式监控模式直接执行nmon命令进入交互界面通过快捷键切换监控视图快捷键功能典型使用场景cCPU使用率排查CPU密集型进程m内存统计内存泄漏分析d磁盘I/O数据库性能调优n网络流量网络带宽瓶颈诊断t进程资源占用Top榜定位异常进程j文件系统使用率磁盘空间告警预判经验在SSH会话中建议先用screen或tmux启动nmon防止网络断开导致监控中断3. 高级数据采集技巧3.1 后台记录模式配置生产环境更常用的是后台记录模式配置示例nmon -f -t -s 30 -c 120 -m /var/log/nmon/关键参数解析-f输出到文件默认命名规则hostname_date_time.nmon-t包含进程统计-s 30每30秒采集一次-c 120采集120次总计1小时数据-m指定输出目录3.2 定时监控方案通过crontab实现每日自动监控# 每天8点-20点每15分钟采集一次 0 8-20 * * * /usr/local/bin/nmon -f -s 900 -c 48 -m /monitor_data/nmon/配合logrotate实现日志轮转# /etc/logrotate.d/nmon /var/log/nmon/*.nmon { daily rotate 7 compress missingok notifempty }4. 数据分析实战4.1 使用nmon_analyser可视化从IBM官网下载nmon_analyserExcel宏文件将.nmon文件拖入Excel启用宏后自动生成20张统计图表关键图表解读技巧CPU_ALL注意%user持续高于70%可能存在计算瓶颈DISKBUSY单个磁盘繁忙度超过80%需警惕MEM观察active内存是否持续接近total4.2 命令行数据分析对于没有GUI的环境可以用awk快速分析# 统计CPU平均使用率 awk /CPU_ALL/{sum$4; count} END{print Avg CPU: sum/count%} server1_220101.nmon # 找出内存使用峰值时刻 awk /MEM/{if($4max)max$4} END{print Max memory: max MB} server1_220101.nmon5. 生产环境应用案例5.1 性能瓶颈诊断某次MySQL查询变慢的分析过程发现时段性CPU%sys升高结合磁盘IO数据发现await指标飙升检查进程视图确认是mysqld的IO等待最终定位到未优化的全表扫描查询5.2 容量规划参考通过长期nmon数据可以发现每日CPU峰值出现在10:00和15:00内存使用每周增长约2%磁盘写入量每月递增15%这些趋势是扩容决策的重要依据。6. 常见问题排错指南问题1nmon_analyser无法打开大文件原因Excel限制解决用-c参数控制采集次数或拆分文件问题2磁盘统计不准确检查lsblk确认磁盘名称解决使用-d参数指定磁盘设备问题3网络流量显示为0排查ifconfig确认网卡名称解决通过-N参数指定监控网卡性能调优建议高频率采集-s 5会增大负载建议测试环境使用长期监控时采集间隔不宜小于60秒对容器监控需添加--privileged参数7. 替代方案对比工具优势不足适用场景nmon轻量全面历史数据分析无告警功能故障复盘/趋势分析Prometheus实时告警云原生集成资源消耗大大规模集群监控top实时进程查看单一维度快速问题定位sar系统内置长期记录配置复杂合规性审计在最近一次千万级QPS的电商大促中我们同时使用nmon和Prometheus前者用于事后详细分析后者负责实时告警。这种组合既保证了监控的实时性又保留了深度分析的能力。对于Linux系统管理员来说nmon就像随身携带的多功能螺丝刀——它可能不是最炫酷的工具但当你需要快速诊断系统健康状态时总会发现它不可或缺。经过这些年的使用我的个人经验是在每台服务器上都部署nmon的定时监控数据保留至少30天。当出现性能问题时这些历史数据往往比实时监控更能揭示问题根源。