Come monitorare CPU e memoria su Linux?

Scopri quanto un singolo processo o un intero sistema consuma CPU o memoria.

In qualità di amministratore di sistema, devi spesso affrontare un incidente in cui l’applicazione è lenta o non risponde a causa dell’utilizzo elevato di CPU/memoria/rete. Se il server ospita un solo processo, è facile scoprire quando il processo consuma tutte le risorse. Tuttavia, immagina un server condiviso in cui sono in esecuzione più servizi e devi scoprire quale sta consumando tutte le risorse.

Esistono molti software di monitoraggio che lo fanno immediatamente. Ma se non ne hai uno o stai cercando una soluzione basata sui comandi, allora ecco qua. Sono tutti GRATIS!

superiore

Potresti voler iniziare esaminando i risultati top o htop per vedere la panoramica dei processi.

Come puoi vedere di seguito, dà un’idea eccellente di ciò che stanno utilizzando tutti i processi. Se guardi al primo, che MySQL sta prendendo l’11,9% della CPU e il 2,5% della CPU.

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld                                                                                                         
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm                                                                                                        
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm                                                                                                        
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm                                                                                                        
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm                                                                                                        
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm                                                                                                        
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm                                                                                                        
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm                                                                                                        
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm                                                                                                        
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty                                                                                                      
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata                                                                                                        
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin                                                                                                    
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash                                                                                                           
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server                                                                                                   
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched                                                                                                      
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd                                                                                                        
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim                                                                                                
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego                                                                                                         
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen                                                                                                     
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

La parte superiore è installata su quasi tutte le distribuzioni Linux.

  Come installare e utilizzare KDE Apper su Linux

Una volta identificato il sospetto, potresti voler concentrarti su quel processo invece di tutto come hai visto sopra. Puoi ancora usare il comando top ma con qualche argomento.

Supponiamo che tu conosca l’id del processo (PID); puoi usare il comando seguente.

in alto -p $PID

Di seguito un esempio di top -p 3102

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

Puoi anche usare grep con top. Di seguito un esempio di verifica dell’utilizzo di Docker.

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd                                                                                                        
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen                                                                                                     
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd                                                                                                        
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd                                                                                                        
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen                                                                                                     
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

Simile alla parte superiore ma con più informazioni. Come puoi, ha la colonna dei comandi, che è utile per identificare il percorso del processo. Ed è anche colorato.

  Come accedere ai file Linux (WSL) in Windows 10

htop potrebbe non essere installato per impostazione predefinita, ma puoi sempre farlo come di seguito.

Installa htop su Ubuntu

apt-get install htop

Installa htop su CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

sguardi

Come dice il nome, ottieni una visualizzazione dell’utilizzo del sistema su un’unica schermata. I processi in esecuzione sono ordinati in base all’utilizzo della CPU.

Puoi installare sguardi su CentOS 8 usando DNF come di seguito.

dnf install glances

per CentOS7, puoi usare YUM

yum install glances

in cima

Un simile a quello sopra elencato ma con una brillante funzionalità per registrare l’output in un file in modo da poterli visualizzare in seguito. Immagina che ci sia uno schema di avere un problema in una finestra temporale specifica. Puoi programmare la scrittura dell’output in un file tramite crontab o altro e in seguito puoi riprodurlo.

Per registrare l’output in un file:

atop -w filename

e, per riprodurre:

atop -r filename

Supporta più argomenti come intervallo, campioni, ecc. e consiglio vivamente di dare un’occhiata alla pagina man.

Se sei solo interessato alla risoluzione dei problemi in tempo reale, esegui semplicemente in alto e dovresti vedere come di seguito.

È possibile installare in cima come di seguito.

dnf install atop

ps

Controlliamo ora il comando ps.

È possibile utilizzare il comando ps con PID per stampare la CPU e l’utilizzo della memoria.

ps -p $PID -o %cpu,%mem

L’output dovrebbe essere simile a questo.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

Strumento di monitoraggio interattivo della riga di comando per CPU, memoria, dischi, rete, NFS e utilizzo della memoria virtuale. Per visualizzare il processo principale (per utilizzo), è possibile eseguire nmon e premere il pulsante t.

  Shadow of War su Linux

Puoi installare nmon come di seguito.

dnf install nmon

Monito

Monito è una soluzione open source basata sul Web e da riga di comando per monitorare le risorse del server, i demoni, i file, le directory, i file system, ecc.

Monit ha anche un fantastico widget.

Il suo software di monitoraggio leggero. Ma c’è altro da esplorare qui.

Monitorix

Un’utilità open source leggera per monitorare il server Linux. Monitorix ottenuto HTTP integrato in modo da poter controllare l’utilizzo e altre cose sul Web. Alcuni degli altri rapporti sull’utilizzo includono:

  • Kernel/temperatura
  • Filesystem e I/O
  • Traffico di rete
  • Apache/Mail/FTP/Nginx
  • MySQL/Vernice/Memcached

Monitorix offre anche la configurazione degli avvisi in modo da poter ricevere notifiche quando le cose non vanno bene. Sarà una buona scelta quando gestisci server basati su cloud e cerchi una soluzione di monitoraggio proattivo.

Netdata

Netdata è un monitoraggio delle prestazioni in tempo reale per risorse di sistema, applicazioni, server Web, database, DNS, posta, sensori hardware e molto altro. È open source e iniziare è facile. Tutti i dati vengono raccolti, archiviati e trasmessi in streaming per la visualizzazione interattiva. I dati vengono raccolti ogni secondo, quindi non ti perdi mai nulla.

Amato da molti leader del settore.

Quindi, cosa stai aspettando, prova a prendere il controllo dei tuoi server Linux.

btop

btop è un pratico monitor di risorse completamente interattivo con una bellissima interfaccia utente che ti aiuta a gestire i server Linux.

Puoi facilmente visualizzare i processi in una vista ad albero, filtrare dall’elenco dei processi e gestire le risorse. btop è inoltre dotato di un grafico di ridimensionamento automatico che mostra l’utilizzo della rete.

Inoltre, puoi anche controllare la velocità del disco e completare l’attività di I/O.

C’è di più che puoi sperimentare su Linux, FreeBSD e macOS.

Conclusione

Spero che gli strumenti di cui sopra ti aiutino a visualizzare l’utilizzo del server in tempo reale in modo da poter intraprendere le azioni necessarie. Se hai appena iniziato come amministratore di sistema e stai cercando di ottenere una formazione pratica, dai un’occhiata a questo Corso Udemy.