Nigelův monitor (nmon
) je nástroj pro monitorování výkonu systému původně vyvinutý společností IBM pro operační systém AIX a později portovaný pro Linux na několika architekturách CPU.
Hlavní výhoda nmon
spočívá v tom, že vám umožňuje sledovat různé aspekty vašeho systému, jako je využití procesoru, paměť, zaneprázdnění disku, využití sítě a další, v jediném, stručném zobrazení. Bez nmon
, musíte použít specializované monitorovací nástroje jako top
pro procesy iostat
pro disky a ifstat
aby síť monitorovala různé zdroje. Každý z nich prezentuje data jinak.
Použil jsem nmon
poprvé asi před 10 lety jako správce systému AIX. Pomocí nmon
, podařilo se mi vyřešit některé těžko rozpoznatelné problémy, včetně jednoho, který se zpočátku zdál jako úzké hrdlo sítě. Současnou kontrolou několika zdrojů pomocí nmon
, zjistil jsem, že jde o problém aplikace způsobený otevřením příliš mnoha souborů.
Kromě interaktivního sledování systému můžete také použít nmon
v dávkovém režimu ke shromažďování a ukládání dat o výkonu pro analýzu. Další informace o nmon
pro Linux se podívejte na oficiální stránku projektu.
Tento článek se zabývá tímto výkonným monitorovacím nástrojem. Začněte jeho instalací.
Instalovat nmon
nmon
je k dispozici ve výchozím úložišti mnoha distribucí Linuxu. Například použijte DNF k instalaci na Fedoru 35:
$ sudo dnf -y install nmon
Pro Red Hat Enterprise Linux nebo CentOS, nmon
je k dispozici v úložišti Extra Packages for Enterprise Linux (EPEL).
Chcete-li nainstalovat nmon
, nejprve povolte EPEL:
$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo dnf repolist
Poté nainstalujte nmon
pomocí dnf
:
$ sudo dnf -y install nmon
Nyní, když jste nainstalovali nmon
, použijte jej k monitorování vašeho systému.
Používejte nmon interaktivně
S nainstalovanými aplikacemi můžete interaktivně monitorovat svůj systém spuštěním nmon
. Zobrazí se úvodní obrazovka obsahující systémové informace a malou nabídku nápovědy zobrazující, které klávesy můžete stisknout pro přepínání různých metrik:
$ nmon
┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:04:27────┐
│ │
│------------------------------ │
│ _ __ _ __ ___ ___ _ __ For help type H or ... │
│| '_ \| '_ ` _ \ / _ \| '_ \ nmon -? - hint │
│| | | | | | | | | (_) | | | | nmon -h - full details │
│|_| |_|_| |_| |_|\___/|_| |_| │
│ To stop nmon type q to Quit │
│------------------------------ │
│ │
│Fedora release 35 (Thirty Five) VERSION="35 (Thirty Five)" │
│Vendor=AuthenticAMD Model=AMD EPYC-Milan Processor │
│MHz=1911.004 bogomips=3822.00 lscpu:CPU=4 Little Endian │
│ProcessorChips=4 PhysicalCores=1 Sockets=4 Cores=1 Thrds=1│
│ VirtualCPUs =4 MHz=0 max=0 min=0 │
│ │
│Use these keys to toggle statistics on/off: │
│ c = CPU l = CPU Long-term - = Faster screen updates│
│ C = " WideView U = Utilisation + = Slower screen updates│
│ m = Memory V = Virtual memory j = File Systems │
│ d = Disks n = Network . = only busy disks/procs│
│ r = Resource N = NFS h = more options │
│ k = Kernel t = Top-processes q = Quit │
│─────────────────────────────────────────────────────────────────│
Například stisknutím C přepíná zobrazení využití CPU:
┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:05:58─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User% Sys% Wait% Idle|0 |25 |50 |75 100| │
│ 1 3.6 17.2 0.0 79.2|Ussssssss> | │
│ 2 2.1 6.2 0.0 91.7|Usss > | │
│ 3 0.0 1.1 0.0 98.9| > | │
│ 4 6.1 17.2 0.0 0.5|UUUssssssss> | │
│---------------------------+---------------------------------+│
│Avg 3.0 10.3 0.0 86.7|Usssss> | │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│
Stisknutím N přepne zobrazení sítě a automaticky jej uloží pod displej CPU:
┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:17:01─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User% Sys% Wait% Idle|0 |25 |50 |75 100| │
│ 1 2.6 10.3 0.0 87.1|Usssss > | │
│ 2 0.0 2.2 0.0 97.8|s > | │
│ 3 6.5 11.0 0.0 82.5|UUUsssss> | │
│ 4 0.0 0.5 0.0 99.5| > | │
│---------------------------+---------------------------------+│
│Avg 2.4 5.9 0.0 91.6|Uss > | │
│---------------------------+---------------------------------+│
│ Network I/O ─────────────────────────────────────────────────│
│I/F Name Recv=KB/s Trans=KB/s p_in p_out in_sz out_sz Peak->..│
│ lo 0.0 0.0 0.0 0.0 0.0 0.0...│
│ enp1s0 0.0 0.0 0.5 0.0 52.0 0.0...│
│ enp7s0 218.6 5923.4 3335.5 9989.68 67.1 607.2...│
│ Network Error Counters ──────────────────────────────────────│
│I/F Name iErrors iDrop iOverrun iFrame oErrors oDrop oOver..│
│ lo 0 0 0 0 0 0 ...│
│ enp1s0 0 34419 0 0 0 0 ...│
│ enp7s0 0 34419 0 0 0 0 ...│
│──────────────────────────────────────────────────────────────│
Pokračujte v mačkání dalších kláves, abyste naskládali další metriky do stejného zobrazení. Použijte například D pro Disk I/O, M pro paměť a T pro Nejlepší procesy.

Kromě skládání nových monitorů můžete také stisknout klávesu tečka nebo tečka (.) a zobrazit pouze zaneprázdněné procesory a disky a také + a - pro zvýšení nebo snížení doby obnovení obrazovky. Použijte H pro zobrazení nápovědy.
Protože můžete kdykoli povolit a zakázat různé monitory a metriky, nmon
je vysoce flexibilní nástroj, který vám pomůže porozumět chování vašeho systému. Pomáhá také při odstraňování problémů tím, že zobrazuje různé metriky současně, poskytuje holistický pohled na systém a zlepšuje vaši schopnost porozumět problémům.
Až budete hotovi, stiskněte Q k ukončení a ukončení monitorovací relace.
Shromažďovat údaje o výkonu
Kromě poskytování holistického, interaktivního pohledu na váš systém můžete také spustit nmon
v dávkovém režimu ke shromažďování dlouhodobých dat o výkonu z vašeho systému pro pozdější analýzu.
Tato funkce vám umožní porozumět tomu, jak se váš systém chová po delší dobu, navíc k metrikám v reálném čase, které poskytuje interaktivní režim. Je to výkonná funkce, která umožňuje plánování kapacity a příležitost odstraňovat sporadické problémy, které je těžké zachytit naživo.
Chcete-li spustit nmon
v dávce použijte parametr -f
při spouštění aplikace. Musí to být první zadaný parametr. Ve výchozím nastavení nmon
shromažďuje data každých pět minut po dobu jednoho dne. Tyto výchozí hodnoty můžete změnit zadáním parametrů -s
pro interval sběru a -c
pro počet snímků.
Chcete-li například povolit nmon
v dávkovém režimu, sběr dat každou minutu po dobu jedné hodiny, včetně zachycení špičkových procesů -t
, spusťte tento příkaz:
$ nmon -f -s60 -c60 -t
Váš terminálový řádek se okamžitě vrátí, protože aplikace běží na pozadí, když provedete tento příkaz. Jeho běh můžete vidět pomocí ps
:
$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t
V dávkovém režimu nmon
ukládá shromážděná data ve formátu CSV (comma-separated value) s příponou .nmon
v aktuálním adresáři:
$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon
Protože se jedná o soubor CSV, můžete jej zpracovat pomocí jiných nástrojů příkazového řádku pro manipulaci s textem v Linuxu nebo jej otevřít pomocí tabulkového procesoru pro další analýzu.
$ head f35ks01_220213_1227.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,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1 SMP PREEMPT Tue Feb 8 20:58:59 UTC 2022,x86_64
AAA,runname,f35ks01
Kromě těchto metod, nmon
vývojový tým poskytuje skript pro převod těchto dat na grafy, které si můžete vizualizovat pomocí webového prohlížeče. Dále se podívám, jak to udělat.
[ Nebyl by to Linux, kdyby neexistoval tucet způsobů, jak provést jakýkoli úkol. Chcete-li získat informace o různých způsobech instalace softwaru, stáhněte si tohoto průvodce instalací aplikací v systému Linux. ]
Generovat grafy
CSV je flexibilní formát, který umožňuje exportovat, analyzovat a prohlížet tato data pomocí různých aplikací, jako je software tabulkového procesoru. nmon
vývojáři vytvořili nmonchart
aby to bylo trochu jednodušší. Tento skript shellu převádí tato data do HTML pomocí JavaScriptu Google Charts pro vizualizaci a interakci s daty v grafickém prostředí.
Chcete-li použít nmoncart
, stáhněte si jej z nmon
domovská stránka:
$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar
Poté extrahujte obsah balíčku pomocí tar
:
$ mkdir nmonchart
$ tar xvf nmonchart40.tar -C nmonchart
nmonchart
používá shell Korn (ksh), takže pro vytváření grafů nejprve nainstalujte ksh
ve vašem systému pomocí dnf
:
$ sudo dnf install -y ksh
Dále převeďte .nmon
soubor vytvořený při spuštění nmon
v dávkovém režimu pomocí tohoto příkazu:
$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon
Skript vytvoří soubor HTML se stejným názvem jako zdrojový .nmon
soubor. Volitelně můžete zadat název cílového souboru jako druhý parametr nmonchart
. Zde je příklad:
$ ls -lg
total 4164
-rw-r--r--. 1 ricardo 113822 Feb 14 18:52 f35ks01_220213_1227.html
-rw-r--r--. 1 ricardo 93436 Feb 13 13:26 f35ks01_220213_1227.nmon
drwx------. 2 ricardo 4096 Aug 28 2020 nmonchart
Vaše systémové grafy jsou nyní připraveny. Dalším krokem je jejich zobrazení.
[ Získejte cheat pro skriptování prostředí Bash. ]
Vizualizace grafů výkonu
nmonchart
vytvoří jeden soubor HTML pro každý .nmon
zdrojový soubor, který poskytnete s požadovanými vloženými knihovnami JavaScriptu s grafy. Pokud máte soubor HTML na svém místním počítači, zobrazte jej přímo ve webovém prohlížeči.
Tyto soubory můžete také obsluhovat pomocí webového serveru. Jedním z mých oblíbených způsobů, jak toho dosáhnout, je použití Nginx v kontejneru Podman, jak jsem navrhl ve 20 jednořádkových příkazech Linuxu, které lze přidat do sady nástrojů.
Nejprve vytvořte adresář a přesuňte tam soubory HTML:
$ mkdir html
$ mv f35ks01_220213_1227.html html/
Poté použijte Podman k zobrazení obsahu z html
adresář pomocí Nginx na portu 8080:
$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx
V případě potřeby otevřete port 8080 na bráně firewall vašeho serveru, abyste povolili provoz:
$ sudo firewall-cmd --add-port 8080/tcp
Poté nasměrujte prohlížeč na svou adresu URL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.html
pro zobrazení grafů:

Kliknutím na kterékoli z tlačítek v horní části obrazovky zobrazíte odpovídající graf. Grafy jsou interaktivní. Chcete-li zobrazit podrobnější údaje, můžete zobrazení přiblížit a oddálit nebo můžete na grafu umístit ukazatel myši a zobrazit podrobné údaje za daný čas.
Sbalit
nmon
je flexibilní a výkonná aplikace pro monitorování systému, která vám pomůže lépe porozumět vašemu systému a odstraňovat jej v případě problémů. Jeho kombinované schopnosti monitorování a konsolidace dat v reálném čase z různých systémových zdrojů s dlouhodobým sběrem a analýzou dat o výkonu z něj dělají fantastický nástroj, který můžete mít na svém opasku systémového administrátora.