I Dieci Comandi Essenziali per il Monitoraggio dei Sistemi Linux

Sblocca la potenza del monitoraggio dei sistemi Linux con questa guida completa ai dieci comandi più essenziali. Impara a usare `top`, `htop`, `vmstat`, `iostat`, `free`, `df`, `du`, `sar`, `ss` e `uptime` per ottenere informazioni in tempo reale su CPU, memoria, I/O del disco e prestazioni di rete. Questo articolo fornisce esempi pratici, spiegazioni delle metriche chiave e suggerimenti attuabili per aiutare gli amministratori di sistema a diagnosticare in modo efficiente i problemi, tenere traccia dell'utilizzo delle risorse e garantire la stabilità dei loro sistemi Linux.

38 visualizzazioni

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, premi P.
  • Ordina per utilizzo memoria: Mentre sei in top, premi M.
  • Mostra processi di un utente specifico: Mentre sei in top, premi u e poi digita il nome utente.
  • Termina un processo: Mentre sei in top, premi k e inserisci il PID.

Suggerimenti:

  • Premi 1 per attivare/disattivare la visualizzazione dei singoli core della CPU.
  • Premi q per uscire da top.
  • Usa top -bn1 per 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/so indicano spesso pressione sulla memoria e swapping eccessivo, che possono degradare gravemente le prestazioni.
  • Una percentuale wa costantemente 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 %util elevato (vicino al 100%) combinato con un tempo await elevato indica un collo di bottiglia I/O su quel dispositivo.
  • Confronta rkB/s e wkB/s con r/s e w/s per 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 free basso è 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 du con sort e head per individuare rapidamente i consumatori di spazio su disco.
  • Fai attenzione quando esegui du su 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 sysstat sia installato e configurato per raccogliere dati regolarmente per l'analisi storica.
  • sar può 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-Q e Send-Q per 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!