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.