GNU/Linux >> Linux Esercitazione >  >> Linux

Risolvi i problemi e monitora le prestazioni del sistema Linux con nmon

Monitor di Nigel (nmon ) è uno strumento di monitoraggio delle prestazioni del sistema originariamente sviluppato da IBM per il sistema operativo AIX e successivamente portato per Linux su diverse architetture CPU.

Il principale vantaggio di nmon è che ti consente di monitorare diversi aspetti del tuo sistema, come l'utilizzo della CPU, la memoria, il disco occupato, l'utilizzo della rete e altro, in un'unica vista concisa. Senza nmon , devi utilizzare strumenti di monitoraggio specializzati come top per i processi, iostat per i dischi e ifstat per la rete per monitorare varie risorse. Ognuno di essi presenta i dati in modo diverso.

Ho usato nmon per la prima volta circa 10 anni fa come amministratore di sistema AIX. Usando nmon , sono stato in grado di risolvere alcuni problemi difficili da individuare, incluso uno che inizialmente sembrava un collo di bottiglia della rete. Ispezionando più risorse contemporaneamente usando nmon , ho scoperto che si trattava di un problema dell'applicazione causato dall'apertura di troppi file.

Oltre a monitorare in modo interattivo il tuo sistema, puoi anche utilizzare nmon in modalità batch per raccogliere e salvare i dati sulle prestazioni per l'analisi. Per ulteriori informazioni su nmon per Linux, consulta la pagina ufficiale del progetto.

Questo articolo esamina questo potente strumento di monitoraggio. Inizia installandolo.

Installa nmon

nmon è disponibile nel repository predefinito di molte distribuzioni Linux. Ad esempio, usa DNF per installarlo su Fedora 35:

$ sudo dnf -y install nmon

Per Red Hat Enterprise Linux o CentOS, nmon è disponibile nel repository EPEL (Extra Packages for Enterprise Linux).

Per installare nmon , prima abilita EPEL:

$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

$ sudo dnf repolist

Quindi installa nmon utilizzando dnf :

$ sudo dnf -y install nmon

Ora che hai installato nmon , usalo per monitorare il tuo sistema.

Usa nmon in modo interattivo

Con le applicazioni installate, puoi monitorare il tuo sistema in modo interattivo eseguendo nmon . Ti viene presentata una schermata iniziale contenente informazioni di sistema e un piccolo menu di aiuto, che mostra quali tasti puoi premere per alternare diverse metriche:

$ 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                 │
│─────────────────────────────────────────────────────────────────│

Ad esempio, premendo C alterna la visualizzazione dell'utilizzo della 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>                       |   │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│

Premendo N attiva o disattiva il display di rete e lo impila automaticamente sotto il display della 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   ...│
│──────────────────────────────────────────────────────────────│

Continua a premere altri tasti per impilare metriche aggiuntive nella stessa vista. Ad esempio, usa D per I/O su disco, M per Memoria e T per i processi principali.

Oltre a impilare nuovi monitor, puoi anche premere il tasto punto o punto (.) per visualizzare solo CPU e dischi occupati, oltre a + e - per aumentare o diminuire il tempo di aggiornamento dello schermo. Usa H per visualizzare la guida.

Poiché puoi abilitare e disabilitare diversi monitor e metriche in qualsiasi momento, nmon è uno strumento altamente flessibile che ti aiuta a comprendere il comportamento del tuo sistema. Aiuta anche nella risoluzione dei problemi visualizzando diverse metriche contemporaneamente, fornendo una visione olistica del sistema e migliorando la tua capacità di comprendere i problemi.

Quando hai finito, premi Q per uscire e terminare la sessione di monitoraggio.

Raccogli i dati sul rendimento

Oltre a fornire una vista olistica e interattiva del tuo sistema, puoi anche eseguire nmon in modalità batch per raccogliere dati sulle prestazioni a lungo termine dal sistema per l'analisi successiva.

Questa funzionalità ti consente di capire come si comporta il tuo sistema su un periodo più lungo, oltre alle metriche in tempo reale fornite dalla modalità interattiva. È una potente funzionalità che consente la pianificazione della capacità e l'opportunità di risolvere problemi sporadici difficili da rilevare in tempo reale.

Per eseguire nmon in batch, usa il flag -f all'avvio dell'applicazione. Deve essere il primo parametro fornito. Per impostazione predefinita, nmon raccoglie i dati ogni cinque minuti per un giorno. Puoi modificare questi valori predefiniti specificando i parametri -s per l'intervallo di raccolta e -c per il numero di istantanee.

Ad esempio, per abilitare nmon in modalità batch, raccogliendo dati ogni minuto per un'ora, inclusa l'acquisizione dei processi principali -t , esegui questo comando:

$ nmon -f -s60 -c60 -t

Il prompt del terminale ritorna immediatamente, poiché l'applicazione viene eseguita in background quando si esegue questo comando. Puoi vederlo in esecuzione usando ps :

$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t

In modalità batch, nmon salva i dati raccolti utilizzando il formato CSV (comma-separated value) con estensione .nmon nella directory corrente:

$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon

Poiché si tratta di un file CSV, puoi elaborarlo utilizzando altri strumenti da riga di comando per la manipolazione del testo di Linux o aprirlo utilizzando un foglio di calcolo per ulteriori analisi.

$ 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

Oltre a questi metodi, nmon il team di sviluppo fornisce uno script per convertire questi dati in grafici che puoi visualizzare utilizzando il tuo browser web. Vedrò come farlo dopo.

[ Non sarebbe Linux se non ci fossero una dozzina di modi per eseguire qualsiasi attività. Per informazioni sui vari modi per installare il software, scarica questa guida all'installazione delle applicazioni su Linux. ]

Genera grafici

CSV è un formato flessibile che consente di esportare, analizzare e visualizzare questi dati utilizzando diverse applicazioni come il software per l'elaborazione di fogli di calcolo. Il nmon gli sviluppatori hanno creato nmonchart per renderlo un po' più facile. Questo script di shell converte questi dati in HTML utilizzando JavaScript di Google Charts per visualizzare e interagire con i dati in un ambiente grafico.

Per usare nmoncart , scaricalo da nmon pagina iniziale:

$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar

Quindi estrai il contenuto del pacchetto usando tar :

$ mkdir nmonchart

$ tar xvf nmonchart40.tar -C nmonchart

nmonchart utilizza la shell Korn (ksh), quindi per creare grafici, prima installa ksh nel tuo sistema usando dnf :

$ sudo dnf install -y ksh

Quindi, converti il ​​.nmon file creato durante l'esecuzione di nmon in modalità batch con questo comando:

$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon 

Lo script crea un file HTML con lo stesso nome del sorgente .nmon file. Facoltativamente, puoi fornire il nome del file di destinazione come secondo parametro a nmonchart . Ecco un esempio:

$ 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

I tuoi grafici di sistema sono ora pronti. Il tuo prossimo passo è visualizzarli.

[ Ottieni il cheat sheet per gli script della shell di Bash. ]

Visualizza i grafici delle prestazioni

nmonchart crea un unico file HTML per ogni .nmon file sorgente fornito con le librerie JavaScript necessarie per la creazione di grafici incorporate. Se hai il file HTML sul tuo computer locale, visualizzalo direttamente nel tuo browser web.

Puoi anche servire questi file utilizzando un server web. Uno dei miei modi preferiti per farlo è usare Nginx in un contenitore Podman, come ho suggerito in 20 comandi Linux di una riga da aggiungere alla tua cassetta degli attrezzi.

Innanzitutto, crea una directory e sposta lì i file HTML:

$ mkdir html

$ mv f35ks01_220213_1227.html html/

Quindi usa Podman per pubblicare contenuti da html directory utilizzando Nginx sulla porta 8080:

$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx

Se necessario, apri la porta 8080 sul firewall del tuo server per consentire il traffico:

$ sudo firewall-cmd --add-port 8080/tcp 

Quindi punta il tuo browser al tuo URL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.html per visualizzare i grafici:

Fare clic su uno qualsiasi dei pulsanti nella parte superiore dello schermo per visualizzare il grafico corrispondente. I grafici sono interattivi. Puoi eseguire lo zoom avanti e indietro per visualizzare dati più dettagliati o passare il mouse sopra il grafico per visualizzare i dati dettagliati per un determinato periodo di tempo.

Concludi

nmon è un'applicazione di monitoraggio del sistema flessibile e potente che ti aiuta a comprendere meglio il tuo sistema e risolverlo in caso di problemi. Le sue capacità combinate di monitoraggio e consolidamento dei dati in tempo reale da diverse risorse di sistema con la raccolta e l'analisi dei dati sulle prestazioni a lungo termine lo rendono uno strumento fantastico da avere nella cintura dell'amministratore di sistema.


Linux
  1. Monitora il tuo sistema Linux nel tuo terminale con procps-ng

  2. Come utilizzare il comando di arresto e riavvio di Linux con esempi

  3. Utilizzo di iostat per monitorare le prestazioni del sistema in Linux (esempi inclusi)

  4. Comandi di base per risolvere i problemi di prestazioni in Linux

  5. Come installare e utilizzare Sguardi per monitorare i sistemi Linux

Gestisci e monitora i moduli del kernel Linux con Kmon

Monitora l'utilizzo delle risorse del sistema Linux con SysMonTask

Come eseguire il backup e il ripristino del sistema Linux con Timeshift

Backup e ripristino delle impostazioni del sistema desktop Linux con Dconf

Come installare e utilizzare il comando SAR (per monitorare le prestazioni del sistema) in Linux

Leggi e analizza i tuoi log di sistema Linux con Journalctl