☰
麒麟V10服务器安装nmon资源监控工具:从入门到实战
2026/10/8 15:07:37 网站建设 项目流程

接手一台麒麟V10服务器,无论是物理机还是虚拟机,第一件让我踏实的事就是先把资源监控安排上。最近项目里连续部署了几台银河麒麟V10 SP3的机器,x86_64、ARM64架构都有,装监控工具时我首选的就是nmon。nmon这个服务器资源监控工具算不上新,但它在麒麟V10这类国产操作系统上的安装和使用,网上的资料零散不说,还经常踩版本坑。这篇文章我把整个安装过程、参数逻辑、以及我实际操作中遇到的坑一次讲清楚,项目标题叫“麒麟V10服务器操作系统安装nmon服务器资源监控工具”,实际上它能解决的问题很直接:CPU、内存、磁盘、网络、进程等关键资源,一个工具全看到。

先说这个东西适合谁。如果你手里正好有一台基于麒麟V10的服务器,不管是SP1、SP2还是SP3,也不管是x86_64还是ARM架构,想快速知道系统当前压力在哪、想收集一段时间的性能数据用于排查问题,这篇文章可以直接照着抄。如果你只是想在Linux上找个不占资源、无需图形界面就能用的监控工具,nmon同样适合。它最大的特点就是轻量、免安装、原生支持交互式终端,配合数据采集模式还能导出csv文件做二次分析。

1. 为什么在麒麟V10上装nmon

1.1 这个项目到底在解决什么问题

服务器装完系统之后,面临的第一道题就是“我怎么知道机器现在跑得好不好”。麒麟V10服务器版默认没有预装太多性能工具,系统自带的上层监控往往只有简单的top、free、df这类命令。它们各自能看一部分指标:top看CPU和进程,free看内存,df看磁盘空间,但要把这些指标同时放在一个界面里、还要能按时间维度记录成文件,原生命令就有点不够用了。

nmon解决的就是这个“多维度统一观测”的需求。它由IBM开发并开源,最初用于AIX系统,后来推广到Linux。在终端里敲一下nmon,整个屏幕会被划分成多个区域,CPU、内存、磁盘、网络、文件系统、进程占用等指标实时滚动刷新,不需要额外装WEB服务,也不需要图形化桌面的支持,只要一个SSH终端就能操作。对于必须在纯命令行环境下工作的运维场景来说,这一点非常关键。

我在麒麟V10上部署完一套应用后,发现系统负载有些异常,但用top根本看不出来瓶颈到底在CPU、磁盘还是网络。装上nmon之后,同时按c、m、d、n几个键,四个维度一起看,问题很快就定位到了磁盘等待时间偏高。这种效率,是单个系统命令给不了的。

1.2 nmon和top、sar这些工具有什么不一样

有人会问,麒麟V10上不是有top和sar吗?为什么还要装nmon。这个问题我安装前也纠结过。简单来说,top适合瞬时查看,sar适合周期性采样,但它们在交互体验和采集格式上各有短板。

top适合“此刻发生了什么”,但它的输出是动态刷新的,不记录历史;sar能记录历史数据,但需要单独配置sysstat的计划任务,而且查看数据时要用sadf或sar命令解析,不太直观。nmon把两者的优势结合到了一起:交互模式下按按键切换指标组,相当于图形化的top;参数模式下以指定间隔采集数据并生成csv文件,相当于不需要额外配置的sar。而且nmon的csv文件可以直接导入Excel分析工具,生成CPU、内存、磁盘的图表,后期做性能报告非常顺手。

以我在麒麟V10上的实践来看,nmon的日志采集还有一个特点:它把时间戳和所有指标写到同一个文件里,文件命名自带主机名和日期,对于追踪某一天的异常非常有用。比如我用-s 5 -c 120采集10分钟数据,之后把csv文件拉回本地用nmon analyser做图表,哪个时间段CPU飙高、内存是否捉襟见肘,一目了然。top和sar做不到这种开箱即用的体验。

2. 安装前的准备工作:认清系统和源

2.1 确认麒麟V10的架构与版本

在麒麟V10上装nmon,最容易翻车的地方不是命令不会敲,而是下载的二进制跑不起来。麒麟V10的服务器版产品线很复杂,有基于x86_64的版本,也有基于ARM64的版本,还有一个比较常见的是飞腾、鲲鹏处理器的平台。nmon官方提供的是编译好的二进制,不同CPU架构对应的文件不同,混用必然报错。

安装之前,第一件事就是确认当前系统的架构。用下面几个命令组合,可以快速弄清楚系统的底细:

uname -m uname -a cat /etc/kylin-release

示例输出:

  • uname -m返回x86_64,说明是Intel/AMD架构;返回aarch64,说明是ARM架构。
  • 查看/etc/kylin-release能确认具体的麒麟版本,比如Kylin Linux Advanced Server release V10 SP3。

另外,还要确认系统的包管理方式,麒麟V10服务器版默认使用yum/dnf,底层兼容RPM包,但也支持直接运行二进制文件。nmon的安装不需要用rpm包,直接用官方发布的二进制即可,所以架构信息比版本号更关键。

这里说一个我实际遇到的细节:麒麟V10 SP3的ARM版,uname -m返回的可能是aarch64,但在部分飞腾平台上会显示为aarch64或armv8l,nmon官方打包文件里对应的就是nmon_aarch64_*这一组。如果下载成了nmon_x86_64_*,运行时就会提示Exec format error或者cannot execute binary file,这种错误和权限无关,纯粹是架构不匹配。

2.2 自己能搞定的依赖与下载渠道

nmon本身是静态编译倾向的单个二进制,理论上不依赖太多动态库。但在麒麟V10服务器版上,有一个依赖是绕不开的:ncurses库。ncurses负责终端图形界面的绘制,没有它,nmon交互模式根本起不来。麒麟V10最小化安装时不一定自带这个库,所以提前补上是稳妥做法。

依赖安装命令,root权限下执行:

yum install -y ncurses ncurses-libs ncurses-base

如果麒麟V10的系统源没配好,这条命令可能报错。这时候可以先测试网络,再检查yum源配置。还有一种情况是系统已经自带了libncurses.so.6,但nmon的老版本会去找libncurses.so.5,这个我在后面排查部分细说,先记在心里。

下载渠道方面,首选是SourceForge上的nmon官方项目,或者nmon作者的网站。搜索“nmon download”或者直接访问项目主页,找到文件名为nmon16e_mpgincr.tar.gz的最新整合包。这个包相当贴心,里面按CPU架构分好了多个二进制文件,包括x86_64、aarch64、ppc64le、s390x等。麒麟V10服务器版用到的就是x86_64和aarch64这两个目录下的文件。

如果你所在环境的网络访问外网不方便,也可以在内部文件服务器上预先下载好,或者通过能联网的机器下载后scp传过去。总之,nmon不依赖麒麟的软件源,这既是优点也是坑点:优点是不用折腾repos,坑点是必须自己找对二进制。

3. 麒麟V10下nmon的完整安装与启动

3.1 下载并解压对应版本

假设麒麟V10服务器现在能联网,我用最直接的方式把nmon的整合包下载下来。以nmon16e整合包为例:

wget https://sourceforge.net/projects/nmon/files/nmon16e_mpgincr.tar.gz/download -O nmon16e_mpgincr.tar.gz

如果wget不存在,先装一下wget:

yum install -y wget

下载完成后解压:

tar -xzf nmon16e_mpgincr.tar.gz

解压后可以用ls -l查看里面的文件。每一个文件名都有明显的架构标记。在我常用的x86_64机器上,文件对应的是nmon_x86_64_centos7或nmon_x86_64_rhel9这一类;在ARM64机器上,要找的是nmon_aarch64_centos7这一类。

为什么有centos7、rhel9这样的后缀?原因是nmon会针对不同的glibc版本和内核做一定适配。麒麟V10服务器的底层和主流Linux发行版兼容性做得不错,x86_64版本上,nmon_x86_64_centos7通常可以直接使用;ARM版上,nmon_aarch64_centos7也比较稳。如果后续运行报错,可以换用rhel9或其他版本试试。

解压后建议把用到的二进制放到一个固定位置。我在项目里习惯统一放到/opt/nmon下,这样既方便管理,也不会污染系统的可执行目录。命令如下:

mkdir -p /opt/nmon cp nmon16e_mpgincr/nmon_x86_64_centos7 /opt/nmon/nmon

3.2 配置权限与软链接

这一步看起来简单,但绝对有讲究。首先给二进制添加可执行权限:

chmod +x /opt/nmon/nmon

然后创建软链接到/usr/local/bin,这样任何用户直接敲nmon就能启动,不需要每次打全路径:

ln -s /opt/nmon/nmon /usr/local/bin/nmon

到这里,nmon的“安装”其实已经完成了。为什么说安装很轻量?因为它就是一个二进制文件加一个软链接,不像其他监控工具一样需要启动守护进程、开放端口。这个设计对国产服务器来说非常友好,尤其是在安全要求高、不允许随便开放端口的场景下,nmon只在本机终端工作,几乎不留下额外的网络暴露面。

我遇到过不少朋友在这里卡住:chmod之后直接运行,结果提示Permission denied。这通常不是chmod的问题,而是文件系统挂载时使用了noexec选项,或者你把nmon放在了某些特殊挂载点下。最简单的验证方法是把二进制放到/opt或/usr/local/bin这些常规路径下再试。另外,如果系统里有SELinux,可能还需要看avc日志,不过麒麟V10服务器版默认SELinux状态通常是关闭或宽容模式,影响不大。

3.3 启动交互界面验证安装

安装完成后,直接输入nmon回车,就能看到全屏的实时监控界面。在麒麟V10的SSH终端里,第一次启动可能会有几个适应过程:窗口大小、颜色深浅、按键区域分布。这些都正常,nmon的交互界面不花哨,但信息密度很高。

界面启动后,常用按键如下:

按键功能
cCPU核心使用率与队列信息
m内存与交换分区使用情况
d磁盘设备读写速率与IOPS
n网络接口流量与错误包
t系统Top进程排行
k内核运行队列与平均负载
l文件系统空间使用率
h查看帮助菜单

刚开始用的时候不用着急把所有键都记住,先按c和m看一眼CPU和内存,再按d看磁盘IO,基本上对系统资源状态就有数了。如果要退出交互模式,直接按q键即可,不会留下任何后台进程。

验证安装成功与否的标准很简单:能不能进入全屏界面、各个功能键能不能正常切换。如果按某个键没有响应,通常是因为当前SSH终端的键盘映射问题,换一个终端工具再试即可。

4. 让nmon真正派上用场:数据采集与分析

4.1 定时采集参数怎么定

交互模式适合临时看一眼,真正用于性能记录和问题复盘,必须依赖nmon的采集模式。采集模式的核心参数就三个:采样间隔-s、采样次数-c、输出目录-m。

比如我要在麒麟V10上记录10分钟的系统数据,每5秒采一次,命令是:

nmon -s 5 -c 120 -f -m /opt/nmon/data

参数解释:

  • -s 5:每5秒采样一次。
  • -c 120:一共采样120次,总时长600秒,正好10分钟。
  • -f:文件输出模式,nmon会生成一个以主机名、日期、时间命名的csv文件,比如KylinV10_240509_1530.nmon。
  • -m:指定输出目录,确保目录已经存在。

采样结束后,nmon自动退出,不需要额外干预。有人喜欢加-F指定文件名,但我不建议在第一次使用时用,因为-F必须配合-s、-c使用,而且如果文件已存在会强制覆盖,容易误删数据。默认的-f命名规则更安全,也方便按时间归档。

还有一个参数在实际排查时很管用:-d。加上-d后,nmon会额外输出磁盘繁忙度相关的数据,这对判断磁盘性能瓶颈非常有价值。完整命令可以写成:

nmon -s 10 -c 360 -f -d -m /opt/nmon/data

这条命令每10秒采集一次,持续1小时,单文件体积大概几MB,完全在可接受范围内。我建议在麒麟V10上做日常巡检时,直接用这个组合,数据量不会太大,覆盖面又足够全。

4.2 采集文件落地与再利用

采集产生的nmon文件不是给你肉眼看原始文本的,而是配合分析工具使用的。最常用的工具是IBM提供的nmon analyser,它是一个Excel宏文件,可以将nmon格式的csv文件直接转换成Excel图表。使用方式很简单:打开nmon analyser.xlsm,点击按钮导入nmon文件,就能生成CPU、内存、磁盘、网络的多张图表。在需要出性能报告的场景下,这个流程我能节省一晚上时间。

如果没有Windows环境,或者嫌Excel宏麻烦,Linux下也有替代方案:用nmonchart工具,它可以把nmon文件转换成HTML格式的图表,纯命令行操作,适合在服务器上直接生成结果。nmonchart本质上是一个shell脚本,配合gnuplot或kchart实现绘图。在麒麟V10上如果装了gnuplot,直接用就行。

我自己在项目里比较常用的做法是:先把nmon文件从服务器取回本地,再用nmon analyser出图。原因很简单,nmon analyser的图表维度已经过作者优化,CPU、内存、磁盘、网络在不同页面里分开放置,交给开发团队看也一目了然。以下是一个我在麒麟V10采集后的文件示例:

KylinV10-host_240509_1530.nmon

这个文件名的含义:主机名KylinV10-host,采样开始时间是2024年5月9日15点30分。归因到具体某次发版、某个时间段的异常,这个命名规则帮了大忙。文件里记录了从开始采样到结束的所有时间点数据,不会因为nmon进程退出而丢失。

顺带提醒一个坑:nmon文件在你手动拷贝时不要用rz之类的工具直接传到Windows并用记事本打开,它是UTF-8编码的纯文本,记事本打开会没有换行,容易误判为乱码。用专门的编辑器或者直接导入Excel是正确姿势。

5. 我踩过的坑和一些补充经验

5.1 常见问题速查表

麒麟V10上安装nmon,真正容易出问题的地方集中在架构不匹配、动态库缺失、权限和终端适配这几个方向。我把实际操作中遇到的问题整理成了一张速查表,照着排查会很快:

现象原因解决办法
cannot execute binary fileCPU架构不匹配,下载了x86版却运行在ARM上用uname -m确认架构,重新下载对应二进制
Exec format error二进制架构错误或文件损坏重新下载对应架构文件,用file /opt/nmon/nmon检查格式
error while loading shared libraries: libncurses.so.5系统只有libncurses.so.6,缺少兼容库安装兼容库或用新版本nmon二进制
Permission denied文件没有执行权限,或挂载点noexecchmod +x,或把文件移到/opt下执行
交互模式按键无反应终端类型不受支持或窗口太小换用xterm、termite等常见终端,放大SSH窗口
nmon采集文件为空-m参数指定目录不存在提前创建目录,或用默认当前目录
软链接创建失败目标文件路径不对或已存在同名链接确认路径,先删除旧链接再重建
启动后屏幕花屏远程终端色彩解析问题关闭SSH终端的颜色转换或用-x参数禁用颜色

这里的libncurses.so.5缺失问题,我要单独展开说一下。麒麟V10系统自带的是ncurses 6版本,动态库文件名是libncurses.so.6,而比较老的nmon二进制编译时链接的是libncurses.so.5。解决办法有两条:第一条是找一个新版本nmon二进制,它可能链接的是so.6;第二条是安装ncurses-compat-libs这个兼容包,它会把so.5的软链接补上。在麒麟V10上用yum搜索一下:

yum search ncurses

如果能看到ncurses-compat-libs,直接安装就行。没有的话,最简单的方式是手动建立一个软链接:

ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

但这条软链接是不是稳妥,取决于系统里是否存在对应的依赖关系。我在多台机器上实测,新版本的nmon二进制对so.6的适配已经很好,优先建议换新版,其次才是做兼容链接。

5.2 关于麒麟V10的一些额外提醒

最后说几个不在安装步骤里、但却影响使用体验的细节。

第一,麒麟V10服务器版的定时任务工具是crontab。如果你需要长期定时采集,比如每天10点到11点记录一段性能窗口,用crontab配置即可。我自己在项目中的方案是写一个简单的脚本/opt/nmon/collect.sh,内容大致如下:

#!/bin/bash mkdir -p /opt/nmon/data /opt/nmon/nmon -s 30 -c 120 -f -m /opt/nmon/data

然后配置crontab:

30 10 * * * /bin/bash /opt/nmon/collect.sh

这样每天10点30分开始采集一小时,到11点30分自动结束。定时采集最关键的一点是脚本里最好先判断nmon是否已经在运行,避免重复启动。用pgrep nmon做一个前置检查,我在生产环境里就遇到过crontab短间隔重复调度导致多个采集进程同时写文件的问题。

第二,磁盘空间要留足。nmon采集文件虽然不大,但如果长时间无人清理,也会积累不少。按每10秒一条记录、连续采集一周来算,一个文件大约几十MB,多台机器累积下来还是可观的。我习惯在crontab里加一条每周清理7天前采集文件的命令:

find /opt/nmon/data -name "*.nmon" -mtime +7 -exec rm -f {} \;

第三,如果你是在虚拟机里跑麒麟V10,nmon的磁盘数据反映的是虚拟磁盘的性能,不是物理磁盘直接表现。这个点在做性能分析时一定注意,别把虚拟机磁盘的延迟直接等同于宿主机物理盘的延迟。

还有一个很多人忽视的细节:麒麟V10的服务器版可能没有安装图形化桌面,nmon的交互界面在纯tty或SSH下都跑得很好,但如果使用某些基于web的终端,比如部分运维平台自带的在线终端,可能因为终端类型是xterm-256color或linux之外的值,导致界面渲染异常。遇到这种情况,可以用TERM=xterm nmon强制指定终端类型后再启动,绝大多数问题都能解决。

根据我个人经验,nmon装好之后,真正产生价值的地方不是那个全屏界面有多好看,而是你能不能坚持做周期性采集。麒麟V10这种系统,平时看着一切正常,真正出问题时往往需要回溯数据。提前把采集埋好,事后排查就能少走很多弯路。哪怕你暂时想不起来怎么分析nmon文件,先把采集启动起来,后面再慢慢研究nmon analyser也不迟。

最后再分享一个小技巧:在麒麟V10上,nmon可以搭配nmon的-g参数把磁盘组信息显示出来,或者按u查看CPU利用率最高的进程UID。这些进阶按键在排查具体进程占用时极其好用。一次安装,长期受益,工具本身轻量简单,不需要维护,装上之后把它纳入日常巡检脚本,比临时抱佛脚去找监控平台要高效得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询