当前位置: 首页 > 科技观察

使用nmon排查和监控Linux系统性能

时间:2023-03-13 12:42:40 科技观察

nmon允许您在简洁的界面中监控系统的各个方面,例如CPU利用率、内存、磁盘繁忙度、网络利用率等。这是它的主要好处之一。如果没有nmon,就必须使用top(监控进程)、iostat(监控磁盘)、ifstat(监控网络)等专门的监控工具来监控各种资源。这些中的每一个都以非常不同的方式呈现数据。大约10年前,我作为AIX系统管理员首次使用nmon。使用nmon,我能够解决一些难以发现的问题,包括最初看起来像网络瓶颈的问题。我用nmon同时查看了多个资源,发现这是一个应用程序问题,因为打开的文件太多了。除了以交互方式为您监视系统之外,您还可以在批处理模式下使用nmon来收集和存储性能数据以供分析。有关适用于Linux的nmon的更多信息,请参阅该项目的官方网站。本文着眼于这个强大的监控工具,从安装开始。在许多Linux发行版的默认存储库中都可以安装nmonnmon。例如,我们可以在Fedora35上使用DNF安装它:$sudodnf-yinstallnmon对于RedHatEnterpriseLinux或CentOS,nmon在EPEL(ExtraPackagesforEnterpriseLinux)的存储库中可用。要安装nmon,首先启用EPEL:$sudodnf-yinstall\https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm$sudodnfrepolist接下来使用dnfnmon安装:$sudodnf-yinstallnmon现在你已经安装了nmon,用它??来监控你的系统!使用nmon交互安装应用程序后,您可以运行nmon。之后你会看到一个带有系统信息的闪屏和一个小的帮助菜单,显示你可以按哪些键来切换不同的指示器:$nmon┌─16k─[Hforhelp]─Hostname=f35ks01─Refresh=2secs─18:04:27────┐│││----------------------------││_______________如需帮助,请键入H或...││|'_\|'_`_\/_\|'_\nmon-?-提示││|||||||||(_)||||nmon-h-详细信息││|_||_|_||_||_|\___/|_||_|││要停止nmon,请键入q退出││-----------------------------││││Fedora发行版35(三十五)VERSION="35(三十五)"││Vendor=AuthenticAMDModel=AMDEPYC-MilanProcessor││MHz=1911.004bogomips=3822.00lscpu:CPU=4LittleEndian││ProcessorChips=4PhysicalCores=1Sockets=4Cores=1Thrds=1││VirtualCPUs=4MHz=0max=0min=0││││使用这些键打开/关闭统计信息:││c=CPUl=CPULong-term-=更快的屏幕更新││C="WideViewU=Utilization+=更慢的屏幕更新││m=MemoryV=Virtualmemoryj=FileSystems││d=Disksn=Network.=onlybusydisks/procs││r=ResourceN=NFSh=更多选项││k=内核t=顶级进程q=退出││──────────────────────────────────────────────────────────────│比如说,按C键会切换为CPU利使用率显示式:┌─16k──[Hforhelp]──Hostname=f35ks01─Refresh=2secs─18:05:58─┐│CPU利用率──────────────────────────────────────────────│││------------------------------+--------------------------------+││CPUUser%Sys%Wait%空闲|0|25|50|75100|││13.617.20.079.2|Usssssss>|││22.16.20.091.7|Uss>|││30.01.10.098.9|>|││46.117.20.00.5s|UUs>│------------------------+--------------------------------+││平均3.010.30.086.7|Usssss>|││-----------------------+----------------------------------+││─────────────────────────────────────────────────────────────────────────────────────────────────────────────────│按N键切换到网络显示,自动堆叠到CPU显示下方:┌─16k──[Hforhelp]──Hostname=f35ks01─Refresh=2secs─18:17:01─┐│CPU利用率────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────││---------------------------+------------------------------+││CPUUser%Sys%Wait%Idle|0|25|50|75100|││12.610.30.087.1|Ussss>|││20.02.20.097.8|s>|││36.511.00.082.5|UUUssss>|││40.00.50.099.5|>|││------------------------+----------------------------------+││平均2.45.90.091.6|Uss>|││------------------------+----------------------------------+││网络I/O──────────────────────────────────────────────────││I/FNameRecv=KB/sTrans=KB/sp_inp_outin_szout_szPeak->..││lo0.00.00.00.00.00.0...││enp1s00.00.00.50.052.00.0...││enp7s0218.65923.43335.59989.6867.1607.2...││网络错误计数器──────────────────────────────────││I/F名称iErrorsiDropiOverruniFrameoErrorsoDropoOver..││lo000000...││enp1s00344190000...││enp7s00344190000...││───────────────────────────────────────────────────────────────────────────────────────────────────────│继续按其他键可在同一视图中堆叠其他指标使用M键显示内存信息,使用T键显示Top进程。除了堆叠新显示之外,您还可以按点(.)键仅显示繁忙的CPU和磁盘,并按+和-键增加或减少屏幕刷新时间。使用H键显示帮助。因为您可以随时启用和禁用不同的监视器和指标,所以nmon是一个高度灵活的工具,可以帮助您了解系统行为。它还可以通过同时显示不同的指标来帮助解决问题,通过提供系统的整体视图来提高您理解问题的能力。完成后,按Q键退出并结束监控会话。收集性能数据除了提供系统的整体交互视图之外,您还可以以批处理模式运行nmon,这允许您从系统收集长期性能数据以进行后验分析。除了交互模式提供的实时指标外,此功能还允许您了解系统在较长时间内的行为。这是一项强大的功能,可以进行容量规划,并有机会解决难以实时发现的零星问题。要以批处理模式运行nmon,请在启动应用程序时使用标志-f参数(它必须是提供的第一个参数)。默认情况下,nmon在白天每五分钟收集一次数据。您可以使用参数-s指定收集间隔,使用参数-c指定快照数量。例如,要启用nmon批处理模式,我们希望每分钟收集一个小时的数据,包括捕获顶级进程-t,执行以下命令:$nmon-f-s60-c60-t你的终端提示符将是Returns立即,因为当您执行此命令时应用程序正在后台运行。然后,您可以使用ps命令并查看它的运行情况:$ps-ef|grepnmonricardo18491012:27pts/000:00:00nmon-f-s60-c60-tinbatch模式下,nmon以逗号分隔值(Comma-SeparatedValue,CSV)格式,扩展名为.nmon:$ls-ltotal36-rw-r--r--。1ricardoricardo36395Feb1312:28f35ks01_220213_1227.nmon由于这是一个CSV文件,您可以使用其他Linux文本操作(命令行)工具对其进行操作,或者使用电子表格软件打开它以进行进一步分析。$headf35ks01_220213_1227.nmonAAA,progname,nmonAAA,command,nmon-f-s60-c60-tAAA,version,16kAAA,disks_per_line,150AAA,max_disks,256,由-d选项设置AAA,disks,10,AAA,host,f35ks01AAA,user,ricardoAAA,OS,Linux,5.16.8-200.fc35.x86_64,#1SMPPREEMPTTueFeb820:58:59UTC2022,x86_64AAA,runname,f35ks01除了这些方法,nmon开发团队还提供将此数据转换为可通过Web浏览器可视化的图表的脚本。让我们看看接下来如何做到这一点。生成图表CSV是一种灵活的格式,允许您使用不同的应用程序(例如电子表格软件)导出、分析和查看此数据。为了简化此过程,nmon的开发人员创建了nmonchart。此shell脚本使用GoogleCharts(JavaScript)将此数据转换为HTML,以便它可以在图形环境中可视化数据并与之交互。要使用nmoncart,请从nmon主页下载它:$curl-LOhttp://sourceforge.net/projects/nmon/files/nmonchart40.tar然后使用tar提取包的内容:$mkdirnmonchart$tarxvfnmonchart40.tar-Cnmonchartnmonchart需要使用ksh(KornSHell),因此要创建图表,首先使用dnf在系统中安装ksh:$sudodnfinstall-yksh接下来,转换.nmon文件(在created以批处理模式执行nmon时):$./nmonchart/nmonchartf35ks01_220213_1227.nmon此脚本创建一个与源.nmon文件同名的HTML文件。或者,您可以将目标文件名作为第二个参数传递给nmonchart。这是一个示例:$ls-lgtotal4164-rw-r--r--。1里卡多1138222月14日18:52f35ks01_220213_1227.html-rw-r--r--。1里卡多934362月13日13:26f35ks01_220213_1227.nmondrwx------。2ricardo40962020年8月28日nmonchart您的系统图表现已准备就绪。您的下一步是审查它们。推荐一本关于bashshell脚本的书-----《Bash shell scripting cheat sheet》可视化性能图表nmonchart为您提供的每个.nmon源文件创建一个HTML文件,其中嵌入了所需的图表JavaScript库。如果您的本地计算机上有HTML文件,请直接在Web浏览器中查看它。您还可以使用Web服务器提供这些文件。我最喜欢的方法之一是在Podman容器中使用Nginx,正如我在20个单行Linux命令中建议的那样,添加到您的工具箱中。首先,创建一个目录并将HTML文件移动到那里:$mkdirhtml$mvf35ks01_220213_1227.htmlhtml/然后,使用端口8080上的Podman从Ngnix提供html目录的内容:$podmanrun--rm-v./html:/usr/share/nginx/html:ro,Z-p8080:80-dnginx如果需要请在服务器防火墙上开放8080端口让流量通过:$sudofirewall-cmd--add-port8080/tcp然后,为了查看图标,请将浏览器指向您的URLhttp://:8080/f35ks01_220213_1227.html:单击屏幕顶部的任意按钮以查看相应的图表(图表是互动的)。您可以放大和缩小以查看更精细的数据,或将鼠标悬停在图表上以查看给定时间的详细数据。总结nmon是一个灵活而强大的系统监视应用程序,可帮助您更好地了解您的系统并在出现问题时及时解决问题。它结合了监视功能、集成来自不同系统资源的实时数据的能力以及收集和分析长期性能数据的能力。这使它成为系统管理员的绝佳工具。