GNU/Linux >> Znalost Linux >  >> Linux

Odstraňování problémů a monitorování výkonu systému Linux pomocí nmon

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.


Linux
  1. Jak monitorovat výkon systému Linux pomocí Sysstat

  2. Monitorujte Linuxový server pomocí Prometheus a Grafana

  3. Jak používat Linux Shutdown and Reboot Command s příklady

  1. Použití iostatu k monitorování výkonu systému v Linuxu (včetně příkladů)

  2. Základní příkazy pro řešení problémů s výkonem v Linuxu

  3. Jak nainstalovat a používat Glances k monitorování systémů Linux

  1. Monitorujte svůj systém Linux ve svém terminálu pomocí procps-ng

  2. Zlepšete výkon systému Linux pomocí noatime

  3. Monitorujte a analyzujte stav pevného disku pomocí Smartctl v Linuxu