Dieci Comandi Essenziali per il Monitoraggio dei Sistemi Linux
I sistemi Linux sono la spina dorsale di innumerevoli applicazioni, servizi e componenti infrastrutturali in tutto il mondo. Garantirne la stabilità, le prestazioni e la disponibilità delle risorse è una responsabilità critica per qualsiasi amministratore di sistema. Il monitoraggio proattivo aiuta a identificare i colli di bottiglia, anticipare i problemi e mantenere uno stato ottimale del sistema prima che i problemi si aggravino.
Questo articolo approfondisce i dieci comandi più essenziali che ogni amministratore Linux dovrebbe padroneggiare per l'analisi delle prestazioni del sistema in tempo reale e il tracciamento delle risorse. Questi strumenti forniscono informazioni preziose su vari aspetti del tuo sistema, dall'utilizzo della CPU e della memoria all'I/O del disco e all'attività di rete. Comprendendo e utilizzando regolarmente questi comandi, puoi diagnosticare in modo efficiente i problemi di prestazioni, identificare i consumatori di risorse e garantire che i tuoi sistemi Linux funzionino senza intoppi.
Sia che tu stia risolvendo i problemi di un server lento, ottimizzando l'allocazione delle risorse o semplicemente eseguendo controlli di routine sullo stato, i comandi trattati qui costituiscono le basi di un monitoraggio efficace dei sistemi Linux. Esploriamo questi strumenti indispensabili e come sfruttarli per un ambiente Linux più sano e performante.
1. top - Attività dei Processi in Tempo Reale
Il comando top fornisce una visualizzazione dinamica e in tempo reale di un sistema Linux in esecuzione. Visualizza un riepilogo delle informazioni di sistema e un elenco di processi o thread attualmente gestiti dal kernel Linux. È spesso il primo strumento a cui gli amministratori si rivolgono per una rapida panoramica dell'attività di sistema.
Metriche Chiave:
- Utilizzo della CPU:
us(utente),sy(sistema),ni(nice),id(idle),wa(I/O wait),hi(hardware IRQ),si(software IRQ),st(steal time). - Utilizzo della Memoria: Totale, libera, utilizzata, buffer/cache.
- Utilizzo dello Swap: Totale, libero, utilizzato.
- Elenco Processi: PID, Utente, PR (priorità), NI (valore nice), VIRT (memoria virtuale), RES (memoria residente), SHR (memoria condivisa), S (stato), %CPU, %MEM, TIME+, COMANDO.
Uso Base:
top
Esempi Pratici:
- Ordina per utilizzo CPU: Mentre sei in
top, premiP. - Ordina per utilizzo memoria: Mentre sei in
top, premiM. - Mostra processi di un utente specifico: Mentre sei in
top, premiue poi digita il nome utente. - Termina un processo: Mentre sei in
top, premike inserisci il PID.
Suggerimenti:
- Premi
1per attivare/disattivare la visualizzazione dei singoli core della CPU. - Premi
qper uscire datop. - Usa
top -bn1per ottenere uno snapshot singolo (utile per scripting).
2. htop - Visualizzatore di Processi Interattivo
htop è un visualizzatore di processi migliorato, interattivo e user-friendly che offre molti vantaggi rispetto al comando top tradizionale. Presenta un'interfaccia più visivamente accattivante e navigabile, rendendo più facile monitorare e gestire i processi.
Vantaggi Chiave:
- Indicatori visivi: Utilizzo CPU, memoria e swap visualizzati graficamente.
- Elenco scorrevole: Puoi scorrere verticalmente e orizzontalmente per vedere tutti i processi e le loro intere righe di comando.
- Gestione processi semplificata: Termina, riassegna la priorità (renice) e altre azioni possono essere eseguite direttamente utilizzando i tasti funzione senza inserire i PID.
- Vista ad albero: I processi possono essere visualizzati in formato ad albero per mostrare le relazioni padre-figlio.
Uso Base:
# Potrebbe richiedere l'installazione:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop
Esempi Pratici:
- Filtra processi: Premi
F4. - Termina un processo: Seleziona il processo, quindi premi
F9. - Ordina per varie colonne: Usa
F6.
Suggerimenti:
htopè generalmente preferito per il monitoraggio interattivo grazie alla sua superiore esperienza utente.- Personalizza le opzioni di visualizzazione di
htop(F2) per adattarle al tuo flusso di lavoro.
3. vmstat - Statistiche Memoria Virtuale
Il comando vmstat riporta informazioni su processi, memoria, paging, I/O di blocco, trap e attività della CPU. È uno strumento eccellente per identificare colli di bottiglia della memoria o alto I/O del disco.
Metriche Chiave:
r: Numero di processi in attesa di tempo di esecuzione.b: Numero di processi in stato di sospensione non interrompibile (tipicamente I/O).swpd: Quantità di memoria virtuale utilizzata.free: Quantità di memoria inattiva.si/so: Quantità di memoria scambiata in dal disco / scambiata out verso il disco.bi/bo: Blocchi ricevuti da un dispositivo a blocchi / blocchi inviati a un dispositivo a blocchi.wa: Tempo trascorso in attesa del completamento dell'I/O.
Uso Base:
vmstat 1 5 # Segnala ogni 1 secondo, 5 volte
Esempi Pratici:
- Mostra tutte le statistiche in una tabella:
vmstat -a - Mostra memoria attiva/inattiva:
vmstat -a - Visualizza slabinfo:
vmstat -m - Mostra statistiche disco:
vmstat -d
Suggerimenti:
- Valori elevati di
si/soindicano spesso pressione sulla memoria e swapping eccessivo, che possono degradare gravemente le prestazioni. - Una percentuale
wacostantemente alta suggerisce un collo di bottiglia dell'I/O.
4. iostat - Statistiche I/O
iostat fa parte del pacchetto sysstat e riporta l'utilizzo della CPU e le statistiche I/O per dispositivi, partizioni e file system di rete. È cruciale per comprendere i problemi di prestazioni del disco.
Metriche Chiave:
%user,%system,%iowait,%idle: Ripartizioni dell'utilizzo della CPU.r/s/w/s: Letture/scritture al secondo.rkB/s/wkB/s: Kilobyte letti/scritti al secondo.await: Tempo medio (in millisecondi) per le richieste di I/O emesse al dispositivo per essere servite.%util: Percentuale di tempo CPU durante la quale sono state emesse richieste di I/O al dispositivo.
Uso Base:
# Potrebbe richiedere l'installazione:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # Statistiche estese, ogni 1 secondo, 5 volte
Esempi Pratici:
- Monitoraggio dispositivo specifico:
iostat -xz /dev/sda 1 - Mostra solo utilizzo CPU:
iostat -c - Mostra solo utilizzo dispositivo:
iostat -d
Suggerimenti:
- Un
%utilelevato (vicino al 100%) combinato con un tempoawaitelevato indica un collo di bottiglia I/O su quel dispositivo. - Confronta
rkB/sewkB/sconr/sew/sper comprendere la dimensione media degli I/O.
5. free - Utilizzo Memoria
Il comando free visualizza la quantità totale di memoria fisica e spazio di swap liberi e utilizzati nel sistema, nonché i buffer e le cache utilizzati dal kernel.
Metriche Chiave:
total: Memoria totale installata.used: Memoria utilizzata (include buffer/cache).free: Memoria non utilizzata.shared: Memoria utilizzata da tmpfs (segmenti di memoria condivisa).buff/cache: Memoria utilizzata dai buffer del kernel e dalla page cache.available: Una stima di quanta memoria è disponibile per l'avvio di nuove applicazioni, senza swapping.
Uso Base:
free -h # Output leggibile dall'uomo
Esempi Pratici:
- Mostra memoria in megabyte:
free -m - Aggiorna continuamente ogni 5 secondi:
watch -n 5 free -h
Suggerimenti:
- La colonna
availableè la metrica più importante per capire quanta memoria è veramente libera per nuovi processi. - Linux utilizza aggressivamente la memoria disponibile per la cache del disco, quindi un valore
freebasso è normale e spesso desiderabile.
6. df - Utilizzo Spazio Disco
Il comando df riporta la quantità di spazio su disco utilizzata e disponibile sui file system. È essenziale per monitorare la capacità di archiviazione e prevenire scenari di disco pieno.
Metriche Chiave:
Filesystem: Il nome del file system.Size: Dimensione totale del file system.Used: Quantità di spazio su disco utilizzata.Avail: Quantità di spazio su disco disponibile.Use%: Percentuale di spazio su disco utilizzata.Mounted on: Il punto di mount del file system.
Uso Base:
df -h # Output leggibile dall'uomo
Esempi Pratici:
- Mostra utilizzo inode:
df -i(gli inode sono strutture di metadati; esaurirli può impedire la creazione di file anche con spazio libero). - Mostra un tipo di file system specifico:
df -hT -t ext4
Suggerimenti:
- Controlla regolarmente
Use%per evitare che i file system si riempiano, il che può causare errori nelle applicazioni e instabilità del sistema. - Un utilizzo elevato degli inode può essere un problema con molti file piccoli.
7. du - Utilizzo Disco di File e Directory
Il comando du stima l'utilizzo dello spazio dei file. Mentre df controlla l'utilizzo totale del file system, du viene utilizzato per scoprire la dimensione di file o directory specifici, il che è fondamentale per identificare cosa sta consumando spazio su disco.
Metriche Chiave:
- Dimensione totale dei file o delle directory specificate.
Uso Base:
du -sh /var/log # Riepilogo, leggibile dall'uomo per la directory /var/log
Esempi Pratici:
- Mostra le dimensioni di tutte le sottodirectory (un livello di profondità):
du -h --max-depth=1 /home/user - Trova i file/directory più grandi:
du -ah /path/to/check | sort -rh | head -n 10
Suggerimenti:
- Combina
duconsorteheadper individuare rapidamente i consumatori di spazio su disco. - Fai attenzione quando esegui
dusu directory di grandi dimensioni, poiché può richiedere molte risorse.
8. sar - System Activity Reporter
sar è uno strumento potente dal pacchetto sysstat che raccoglie, segnala o salva informazioni sull'attività di sistema. A differenza di top o vmstat che mostrano snapshot in tempo reale, sar eccelle nel fornire dati storici, rendendolo indispensabile per l'analisi delle prestazioni a lungo termine e la pianificazione della capacità.
Funzionalità Chiave:
- Statistiche CPU:
%user,%nice,%system,%iowait,%steal,%idle. - Statistiche memoria:
kbmemfree,kbmemused,kbbuffers,kbcached. - I/O disco:
tps,rd_sec/s,wr_sec/s. - Statistiche di rete:
rxpck/s,txpck/s,rxbyt/s,txbyt/s. - Media di carico (load average), attività di swap, attività del kernel e altro ancora.
Uso Base:
# Segnala l'utilizzo della CPU ogni 1 secondo, 5 volte:
sar -u 1 5
# Segnala l'attività del disco:
sar -d
# Segnala l'utilizzo della memoria:
sar -r
# Segnala le statistiche di rete:
sar -n DEV
Esempi Pratici:
- Visualizza l'attività CPU di ieri:
sar -u -f /var/log/sysstat/saDD(sostituisci DD con il giorno del mese) - Mostra tutti i dati raccolti per oggi:
sar -A
Suggerimenti:
- Assicurati che il pacchetto
sysstatsia installato e configurato per raccogliere dati regolarmente per l'analisi storica. sarpuò essere opprimente; concentrati su flag specifici (-u,-r,-d,-n) pertinenti alla tua indagine.
9. ss (Socket Statistics) - Connessioni di Rete
ss è un'utility per investigare sui socket. È un sostituto più veloce ed efficiente del vecchio comando netstat, fornendo informazioni più dettagliate su TCP, UDP e altri tipi di socket, inclusi il loro stato, indirizzi locali/remoti e ID di processo.
Metriche Chiave:
- Stato:
ESTAB,LISTEN,TIME-WAIT,CLOSE-WAIT, ecc. - Recv-Q / Send-Q: Le dimensioni delle code di ricezione e invio.
- Indirizzo Locale:Porta / Indirizzo Peer:Porta: Gli endpoint locali e remoti.
- Nome Processo: Il processo associato al socket.
Uso Base:
ss -tuln # TCP, UDP, in ascolto, porte numeriche
Esempi Pratici:
- Elenca tutte le connessioni TCP:
ss -t - Elenca tutte le connessioni UDP:
ss -u - Mostra i processi in ascolto su porte specifiche:
ss -tulnp | grep 80 - Riassumi le statistiche dei socket:
ss -s
Suggerimenti:
- Cerca un numero insolitamente elevato di connessioni
TIME-WAIT, che può indicare problemi dal lato client o una configurazione errata del server web. - Monitora
Recv-QeSend-Qper segnali di problemi di buffering di rete o elaborazione lenta delle applicazioni.
10. uptime - Tempo di Attività del Sistema e Carico Medio
Il comando uptime mostra da quanto tempo è in esecuzione il sistema, l'ora corrente, quanti utenti sono connessi e i carichi medi del sistema per gli ultimi 1, 5 e 15 minuti.
Metriche Chiave:
- Ora corrente: Autoesplicativa.
- Tempo di attività (Uptime): Da quanto tempo è in esecuzione il sistema.
- Utenti: Numero di utenti attualmente connessi.
- Carico medio (Load average): Il numero medio di processi che si trovano in uno stato eseguibile o non interrompibile. Questo include processi in esecuzione sulla CPU, in attesa della CPU o in attesa dell'I/O del disco.
- Carico medio a 1 minuto
- Carico medio a 5 minuti
- Carico medio a 15 minuti
Uso Base:
uptime
Esempi Pratici:
- Spesso utilizzato come rapido controllo dello stato generale di attività di un server.
Suggerimenti:
- Confronta il carico medio con il numero di core della CPU sul tuo sistema. Un carico medio costantemente superiore al numero di core della CPU indica spesso un collo di bottiglia della CPU o dell'I/O.
- Un carico medio in aumento nel tempo (ad esempio, 1 minuto > 5 minuti > 15 minuti) suggerisce che il sistema sta diventando più occupato.
Conclusione
Padroneggiare questi dieci comandi essenziali di Linux è fondamentale per qualsiasi amministratore di sistema focalizzato sul monitoraggio e sulla manutenzione di sistemi sani e performanti. Dall'identificazione rapida dei picchi di CPU con top e htop alla diagnosi dei colli di bottiglia dell'I/O del disco con iostat e della pressione sulla memoria con vmstat, questi strumenti forniscono un kit di strumenti completo per la gestione proattiva del sistema.
Incorporare regolarmente questi comandi nella tua routine di monitoraggio, comprendere il loro output e sapere quando utilizzare ciascuno di essi ti consentirà di risolvere in modo efficiente i problemi, ottimizzare l'utilizzo delle risorse e garantire l'affidabilità della tua infrastruttura Linux. Continua a esplorare le loro opzioni e integrali nei tuoi script per report automatizzati per elevare le tue capacità di amministrazione di sistema. Buon monitoraggio!