I Dieci Comandi Essenziali per il Monitoraggio dei Sistemi Linux
Impara dieci comandi di monitoraggio Linux per controllare CPU, memoria, disco, socket di rete, carico e attività storica del sistema.
Dieci Comandi Essenziali per il Monitoraggio di Sistema su Linux
Quando un server Linux sembra lento, hai bisogno di comandi che ti dicano se la pressione è sulla CPU, sulla memoria, sul disco, sulla rete o sul carico. Questi comandi di monitoraggio Linux ti aiutano a passare da "il server è lento" a un passo successivo specifico.
I dieci strumenti qui sotto ti forniscono istantanee rapide, viste interattive e dati storici. Usali insieme invece di fidarti di un singolo numero in isolamento.
1. top - Attività dei Processi in Tempo Reale
Il comando top fornisce una vista dinamica e in tempo reale di un sistema Linux in esecuzione. Mostra 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 CPU:
us(utente),sy(sistema),ni(nice),id(inattivo),wa(attesa I/O),hi(IRQ hardware),si(IRQ software),st(tempo rubato). - Utilizzo Memoria: Totale, libera, usata, buffer/cache.
- Utilizzo Swap: Totale, libero, usato.
- Elenco Processi: PID, Utente, PR (priorità), NI (valore nice), VIRT (memoria virtuale), RES (memoria residente), SHR (memoria condivisa), S (stato), %CPU, %MEM, TIME+, COMANDO.
Utilizzo 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 CPU. - Premi
qper uscire datop. - Usa
top -bn1per ottenere un'unica istantanea (utile per script).
2. htop - Visualizzatore Interattivo di Processi
htop è un visualizzatore di processi migliorato, interattivo e facile da usare che offre molti vantaggi rispetto al tradizionale comando top. Presenta un'interfaccia più accattivante e navigabile, rendendo più facile monitorare e gestire i processi.
Vantaggi Chiave:
- Indicatori visivi: L'utilizzo di CPU, memoria e swap è visualizzato graficamente.
- Elenco scorrevole: Puoi scorrere verticalmente e orizzontalmente per vedere tutti i processi e le loro righe di comando complete.
- Gestione facile dei processi: Terminare, rinice e altre azioni possono essere eseguite direttamente usando 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.
Utilizzo Base:
# Potrebbe richiedere 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, poi premi
F9. - Ordina per varie colonne: Usa
F6.
Suggerimenti:
htopè generalmente preferito per il monitoraggio interattivo grazie alla sua esperienza utente superiore.- Personalizza le opzioni di visualizzazione di
htop(F2) per adattarle al tuo flusso di lavoro.
3. vmstat - Statistiche di Memoria Virtuale
Il comando vmstat riporta informazioni su processi, memoria, paginazione, I/O a blocchi, trap e attività della CPU. È uno strumento eccellente per identificare colli di bottiglia della memoria o I/O su disco elevato.
Metriche Chiave:
r: Numero di processi in attesa di tempo di esecuzione.b: Numero di processi in sleep non interruptible (tipicamente I/O).swpd: Quantità di memoria virtuale usata.free: Quantità di memoria inattiva.si/so: Quantità di memoria scambiata da disco / scambiata su disco.bi/bo: Blocchi ricevuti da un dispositivo a blocchi / blocchi inviati a un dispositivo a blocchi.wa: Tempo speso in attesa del completamento dell'I/O.
Utilizzo Base:
vmstat 1 5 # Report ogni 1 secondo, 5 volte
Esempi Pratici:
- Mostra memoria attiva/inattiva:
vmstat -a - Visualizza slabinfo:
vmstat -m - Mostra statistiche disco:
vmstat -d
Suggerimenti:
- Valori elevati di
si/sospesso indicano pressione sulla memoria e swapping eccessivo, che può degradare gravemente le prestazioni. - Una percentuale di
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 il servizio delle richieste I/O emesse al dispositivo.%util: Percentuale di tempo trascorso durante il quale il dispositivo aveva richieste I/O in corso.
Utilizzo Base:
# Potrebbe richiedere 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 combinato con un tempoawaitalto spesso indica un collo di bottiglia dell'I/O su quel dispositivo. Su SSD moderni e storage virtualizzato, conferma con la latenza dell'applicazione prima di presumere che il disco sia saturo. - Confronta
rkB/sewkB/sconr/sew/sper capire la dimensione media dell'I/O.
5. free - Utilizzo della Memoria
Il comando free mostra la quantità totale di memoria fisica libera e usata e di spazio di swap nel sistema, così come i buffer e le cache usati dal kernel.
Metriche Chiave:
total: Memoria totale installata.used: Memoria usata (include buffer/cache).free: Memoria inutilizzata.shared: Memoria usata da tmpfs (segmenti di memoria condivisa).buff/cache: Memoria usata dai buffer del kernel e dalla cache delle pagine.available: Una stima di quanta memoria è disponibile per avviare nuove applicazioni, senza fare swapping.
Utilizzo 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 dello Spazio Disco
Il comando df riporta la quantità di spazio disco usato e disponibile sui file system. È essenziale per monitorare la capacità di storage e prevenire scenari di disco pieno.
Metriche Chiave:
Filesystem: Il nome del file system.Size: Dimensione totale del file system.Used: Quantità di spazio disco usato.Avail: Quantità di spazio disco disponibile.Use%: Percentuale di spazio disco usato.Mounted on: Il punto di mount del file system.
Utilizzo 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 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 guasti alle 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'uso dello spazio file. Mentre df controlla l'utilizzo totale del filesystem, du viene usato per scoprire la dimensione di file o directory specifici, il che è fondamentale per identificare cosa sta consumando spazio disco.
Metriche Chiave:
- Dimensione totale di file o directory specificati.
Utilizzo Base:
du -sh /var/log # Riepilogo, leggibile dall'uomo per la directory /var/log
Esempi Pratici:
- Mostra 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 "mangiatori" di spazio disco. - Fai attenzione quando esegui
dusu directory grandi, poiché può essere intensivo in termini di risorse.
8. sar - Reporter dell'Attività di Sistema
sar è un potente strumento del pacchetto sysstat che raccoglie, riporta o salva informazioni sull'attività di sistema. A differenza di top o vmstat che mostrano istantanee in tempo reale, sar eccelle nel fornire dati storici, rendendolo inestimabile per l'analisi delle prestazioni a lungo termine e la pianificazione della capacità.
Caratteristiche 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 Rete:
rxpck/s,txpck/s,rxbyt/s,txbyt/s. - Carico medio, attività di swap, attività del kernel e altro.
Utilizzo Base:
# Report utilizzo CPU ogni 1 secondo, 5 volte:
sar -u 1 5
# Report attività disco:
sar -d
# Report utilizzo memoria:
sar -r
# Report statistiche rete:
sar -n DEV
Esempi Pratici:
- Visualizza un file di attività CPU salvato:
sar -u -f /var/log/sysstat/saDDsu molti sistemi Debian, o/var/log/sa/saDDsu molti sistemi RHEL. SostituisciDDcon 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 travolgente; concentrati su flag specifici (-u,-r,-d,-n) pertinenti alla tua indagine.
9. ss (Statistiche Socket) - Connessioni di Rete
ss è un'utilità per investigare i socket. È un sostituto più veloce ed efficiente del vecchio comando netstat, fornendo informazioni più dettagliate su socket TCP, UDP e altri tipi di socket, inclusi il loro stato, gli indirizzi locali/remoti e gli ID dei processi.
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.
Utilizzo 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 processi in ascolto su porte specifiche:
ss -tulnp | grep 80 - Riepiloga le statistiche dei socket:
ss -s
Suggerimenti:
- Un numero elevato di socket
TIME-WAITnon è automaticamente negativo; può essere normale su servizi TCP occupati. Abbinalo a esaurimento delle porte, connessioni fallite o crescita della coda prima di trattarlo come un problema. - Monitora
Recv-QeSend-Qper segni di problemi di buffering di rete o elaborazione lenta dell'applicazione.
10. uptime - Uptime del Sistema e Carico Medio
Il comando uptime mostra da quanto tempo il sistema è in esecuzione, 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: Autoesplicativo.
- Uptime: Da quanto tempo il sistema è in esecuzione.
- Utenti: Numero di utenti attualmente connessi.
- Carico medio: Il numero medio di processi che sono in uno stato eseguibile o non interruptible. Questo include processi in esecuzione sulla CPU, in attesa della CPU o in attesa di I/O su disco.
- Carico medio a 1 minuto
- Carico medio a 5 minuti
- Carico medio a 15 minuti
Utilizzo Base:
uptime
Esempi Pratici:
- Spesso usato come un rapido controllo dello stato di salute generale di un server.
Suggerimenti:
- Confronta il carico medio con il numero di core CPU del tuo sistema. Un carico medio costantemente superiore al numero di core CPU spesso indica un collo di bottiglia della CPU o dell'I/O.
- Un carico medio crescente nel tempo (ad esempio, 1 minuto > 5 minuti > 15 minuti) suggerisce che il sistema sta diventando più occupato.
Un Semplice Flusso di Risoluzione dei Problemi
Per un server lento, inizia con uptime per controllare il carico, poi usa top o htop per trovare i processi occupati. Controlla free -h e vmstat 1 5 per la pressione della memoria, iostat -xz 1 5 per la latenza del disco e ss -tulnp per i servizi in ascolto o i socket bloccati. Se il problema si è verificato prima, usa sar per confrontare la finestra problematica con una normale.
Il messaggio da portare a casa è semplice: ogni comando risponde a una parte della storia. Il tuo compito è allineare le prove di CPU, memoria, disco e rete prima di riavviare i servizi o ridimensionare la macchina.