Nigel’s Monitor (nmon) :是一个系统性能监控工具,其最初由 IBM 为 AIX 操作系统研发,后来被移植到 Linux 中(在多个 CPU 架构上运行)。
nmon
允许你在一个简洁的界面中来监控系统的各个方面,如 CPU 利用率、内存、磁盘繁忙度、网络利用率等。这是它的一个主要的好处。假如没有 nmon
,你必须使用专门的监控工具,如 top
(监控进程)、iostat
(监控磁盘)和 ifstat
(监控网络)来监控各种资源。这其中的每一个呈现数据的方式都是截然不同的。
除了为你交互式监控系统外,还可以在批处理模式下使用 nmon
来收集和存储性能数据以供分析。有关用于 Linux 的 nmon
的更多信息,请参阅该项目的官方网站。
本文着眼于这个强大的监控工具,从安装它开始====>
一、安装 nmon
nmon
在多数 Linux 发行版的默认存储库中都是可用的。例如,我们可以在 Fedora35 上使用 DNF 来直接安装它:
sudo dnf -y install nmon
对于红帽企业版 Linux 或 CentOS,nmon
在 EPEL (Extra Packages for Enterprise Linux) 的存储库中可用。
要安装 nmon
,首先需启用 EPEL:
$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo dnf repolist #显示仓库列表及其简要信息
接下来使用 dnf
安装 nmon:
$ sudo dnf -y install nmon
现在您已经安装了 nmon,使用它来监控您的系统吧!
二、以交互方式使用 nmon
安装完应用程序后,您可以运行 nmon
。之后会看到一个包含系统信息和一个小帮助菜单的初始屏幕,它显示了您可以按哪些键来切换不同的指标:
$ nmon
lnmonq16kqHostn[H for help]qqqqqRefresh= 1secs qqq19:27.16qq 2 8 k
x x
x - x
x _ __ _ __ ___ ___ _ __ For help type H or ... x
x | '_ \| '_ ` _ \ / _ \| '_ \ nmon -? - hint x
x | | | | | | | | | (_) | | | | nmon -h - full details x
x |_| |_|_| |_| |_|\___/|_| |_| x
x To stop nmon type q to Quit x
x - x
x x
x CentOS Linux release 8.2.2004 (Core) VERSION="8 (Core)" x
x Vendor=GenuineIntel Model=Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz x
x MHz=2808.000 bogomips=5616.00 lscpu:CPU=2 Little Endian x
x ProcessorChips=2 PhysicalCores=1 Sockets=2 Cores=1 Thrds=1 x
x VirtualCPUs =2 MHz=2808 max=0 min=0 x
x x
x Use these keys to toggle statistics on/off: x
x c = CPU l = CPU Long-term - = Faster screen updates x
x C = " WideView U = Utilisation + = Slower screen updates x
x m = Memory V = Virtual memory j = File Systems x
x d = Disks n = Network . = only busy disks/procs x
x r = Resource N = NFS h = more options x
x k = Kernel t = Top-processes q = Quit
范例:按 C 键会切换为 CPU 利用率显式:
范例:按 n 键会切换为网络显示,并自动将其堆叠在 CPU 显示的下方:
继续按下其他按键可在同一个视图中堆叠其他指标。
范例:可使用 D 键来显式磁盘 I/O,可使用 m 键来显式内存信息,可使用 t 键来显式Top 进程。
除了堆叠新显示外,您还可以按 点(.) 键仅显示繁忙的 CPU 和磁盘,也可以 + 和 - 键来增加或减少屏幕刷新时间。使用 H 键显示帮助。
由于可以随时 启用 和 禁用 不同的监视器和指标,所以nmon
是一个可帮助您了解系统行为的高度灵活的工具。它还可以通过同时显示不同的指标来帮助解决问题,通过提供系统的整体视图以提高您理解问题的能力。
完成后,按 q 键退出并结束监控会话。
三、收集性能数据
除了提供系统的整体交互式视图外,您还可以在批处理模式下运行 nmon
,这样就可以从系统中收集长时间的性能数据以进行后验分析。
除了交互模式提供的实时指标外,此功能还允许您了解系统在较长时间内的行为。这是一项强大的功能,可以通过它进行容量规划,并有机会解决难以实时发现的零星问题。
要在批处理模式下运行 nmon
,请在启动应用程序时使用标志 -f
参数(它必须是提供的第一个参数)。默认情况下,在一天内,nmon
每五分钟收集一次数据。您可以用参数 -s
来指定收集间隔和参数 -c
来指定快照数量。
范例: 开启 nmon
批处理模式,我们想在一小时内,每分钟收集数据一次,同时包括捕获顶级进程 -t
,
执行以下命令:
#nmon -f -s60 -c60 -t
终端提示符将会立即返回,因为当您执行此命令时应用程序正在后台运行。您可以接着使用 ps 命令,然后就可以看到它正在运行了:
#ps -ef | grep nmon
root 32589 1 0 19:55 pts/0 00:00:00 nmon -f -s60 -c60 -t
在批处理模式下,nmon
使用逗号分隔值 (Comma-Separated Value, CSV) 格式 将收集的数据保存在当前目录中,其扩展名为 .nmon
:
#ls -l
total 35
-rw-r--r-- 1 root root 33466 Jun 10 19:57 Centos8_220610_1955.nmon
由于这是一个 CSV 文件,因此你可以使用其他 Linux 文本操作(命令行)工具对其进行处理,或者使用电子表格软件将其打开,以进行进一步分析。
#head Centos8_220610_1955.nmon
AAA,progname,nmon
AAA,command,nmon -f -s60 -c60 -t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,7,
AAA,host,Centos8
AAA,user,root
AAA,OS,Linux,4.18.0-193.el8.x86_64,#1 SMP Fri May 8 10:59:10 UTC 2020,x86_64
AAA,runname,Centos8
四、生成图表
CSV 是一种灵活的格式,它允许您使用电子表格处理软件等不同的应用程序导出、分析和查看这些数据。为了使这个过程更加容易,nmon
的开发人员创造了 nmonchart
。此 shell 脚本使用 Google Charts(JavaScript)将这些数据转换为 HTML,以使其在图形环境中可视化数据并与之交互。
若要使用 nmoncart
,请从 nmon
主页下载:
#curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 536 0 536 0 0 211 0 --:--:-- 0:00:02 --:--:-- 211
100 701 0 701 0 0 189 0 --:--:-- 0:00:03 --:--:-- 11491
100 717 0 717 0 0 167 0 --:--:-- 0:00:04 --:--:-- 167
100 948 0 948 0 0 205 0 --:--:-- 0:00:04 --:--:-- 0
100 305 100 305 0 0 52 0 0:00:05 0:00:05 --:--:-- 16052
100 3950k 100 3950k 0 0 381k 0 0:00:10 0:00:10 --:--:-- 1132k
然后使用 tar
来提取包的内容:
#mkdir nmonchart/
#tar xvf nmonchart40.tar -C nmonchart
nmonchart
需要使用 ksh(Korn SHell),因此要创建图表,首先应使用 dnf
在您的系统中安装 ksh
:
sudo dnf install -y ksh
接下来,使用以下命令转换 .nmon
文件(该文件是在批处理模式下执行 nmon
时创建的):
#./nmonchart/nmonchart Centos8_220610_1955.nmon
该脚本创建一个与源 .nmon
文件同名的 HTML 文件。或者,您可以将目标文件名作为第二个参数传递给 nmonchart
。这是一个例子:
#ls -lg
total 4060
-rw-r--r-- 1 root 63620 Jun 10 20:09 Centos8_220610_1955.html
-rw-r--r-- 1 root 43448 Jun 10 20:11 Centos8_220610_1955.nmon
drwx------ 2 201 187 Aug 29 2020 nmonchart
-rw-r--r-- 1 root 4044800 Jun 10 20:04 nmonchart40.tar
您的系统图表现已准备就绪。您的下一步是查看它们。
题外:推荐一个关于 bash shell 脚本的好书籍————《Bash shell scripting cheat sheet》
五、可视化性能图表
nmonchart
为您提供的每个 .nmon
源文件创建一个 HTML 文件,其中嵌入了所需的图表 JavaScript 库。如果本地计算机上有 HTML 文件,请直接在 Web 浏览器中查看它。
您还可以使用 Web 服务器提供这些文件。我最喜欢的方法之一是在 Podman 容器中使用 Nginx
将 HTML 文件移到那里:
#mv Centos8_220610_1955.html /usr/share/nginx/html/
然后,在 8080 端口上使用 Podman 去服务来自于 Ngnix 的 html 目录中的内容:
podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx
如果安全需要的话,请在服务器防火墙上打开 8080 端口以允许流量通过:
sudo firewall-cmd --add-port 8080/tcp
然后,为了查看图标,请将您的浏览器指向您的 URL http://<YOUR_SERVER_IP_ADDR>:8080/Centos8_220610_1955.html
:
单击屏幕顶部的任何按钮以查看相应的图表(图表是交互式的),可以放大和缩小以查看更精细的数据,或将鼠标悬停在图表上以查看给定时间的详细数据。
六:总结
nmon
是一款灵活且功能强大的系统监控应用程序,它可帮助您更好地了解系统,并在出现问题时及时地对其进行故障排除。它结合了监控能力、整合来自不同系统资源的实时数据的能力,以及长期性能数据收集和分析的能力。这使其成为您的系统管理员的绝佳工具。
文章评论