Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Monitoring Linux: i migliori tool minimali per sysadmin

Qualcosa non va nel nostro sistema? Possiamo vedere cosa non funziona su Linux grazie a una diagnostica mirata con questi specifici sttrumenti per sysadmin.
Qualcosa non va nel nostro sistema? Possiamo vedere cosa non funziona su Linux grazie a una diagnostica mirata con questi specifici sttrumenti per sysadmin.
Link copiato negli appunti

Se c'è una compito che un sistemista Linux deve saper assolvere sempre, è il controllo delle attività e il monitoring del carico, sia per quanto riguarda eventuali workstation di clienti che soprattutto per quello che concerne macchine come i server, dove l'operatività deve essere sempre al massimo e ogni bravo amministratore di sistema deve conoscere a menadito i task che stanno impegnando le macchine in un dato momento.

È possibile monitorare i nostri server Linux con una serie di tool che fanno proprio al caso di chi dispone di un'infrastruttura già consolidata, e si trova a dover fare solo manutenzione mantenendo sotto controllo i livelli di carico di ogni VM o macchina fisica che sia. Andiamo quindi ad illustrare quei software nella nostra cassetta degli attrezzi che possono restituirci in maniera lampante un report eloquente sulla situazione dei processi in esecuzione sulle nostre macchine.

sysstat: monitoring semplicissimo su Linux

Per monitorare le attività in esecuzione sulle nostre macchine Linux in modo sommario, possiamo utilizzare i software presenti all'interno del pacchetto sysstat, che ci fornisce un prezioso aiuto nel determinare delle statistiche riguardo il carico della CPU, delle interfacce di rete, o dei processi specifici. Possiamo ad esempio utilizzare il comando vmstat per visualizzare la situazione della virtual memory:

blaster@aragorn ~ $ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0    304 293596  90724 1540188    0    0    45    37  291  277  8  2 88  3
blaster@aragorn ~ $

Altrimenti utilizzando iostat possiamo visualizzare le statistiche istantanee relative ai dischi rigidi (o SSD se ne abbiamo), con focus particolare sull'input/output:

blaster@aragorn ~ $ iostat
Linux 3.9.9-1-pae (aragorn)     24/07/2013      _i686_  (4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7,55    0,39    1,84    2,51    0,00   87,71
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              16,36       176,23       148,23    4626005    3891096
blaster@aragorn ~ $

Oltre questi, abbiamo anche mpstat che allo stesso modo si occupa di mostrarci l'attività (in breve) del processore, dettagliandone la percentuale comunque tra processi in user mode, kernel mode, iowait, e tanto altro:

blaster@aragorn ~ $ mpstat
Linux 3.9.9-1-pae (aragorn)     24/07/2013      _i686_  (4 CPU)
16:41:29     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16:41:29     all    7,51    0,39    1,76    2,49    0,00    0,08    0,00    0,00    0,00   87,77
blaster@aragorn ~ $

Il problema con questi tool è che non consentono un monitoring in tempo reale del carico di Linux, e non hanno molte possibilità di interazione, al contrario di altri software che vedremo dopo. Per renderli quantomeno un po' più reattivi, possiamo passare un parametro al comando che attraverso un semplice numero eseguirà il comando ogni X secondi, dove X è pari al numero impostato con il comando. Segue un esempio, dove vmstat si esegue da sé ogni 2 secondi:

blaster@aragorn ~ $ vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0    304 262980  91580 1538720    0    0    44    37  290  284  8  2 88  2
 0  0    304 285432  91580 1526688    0    0    64    96  951 3505  9  2 89  0
 1  0    304 283272  91588 1525824    0    0     6    54 1124 4022 14  3 82  2
 0  0    304 284172  91588 1525884    0    0    12     0  891 3636  5  2 91  1
 0  0    304 281848  91596 1526104    0    0     2   200  986 3997  7  2 91  0
 0  1    304 275464  91628 1525884    0    0    10   194 1517 6358 13  2 80  5

Ognuno di questi comandi include altre opzioni per dettagliare ancora di più l'output. Vi invitiamo quindi a leggere il rispettivo manuale della suite per ricavarne informazioni utili.

top e htop per il task management su Linux

Sicuramente all'interno del nostro elenco di comandi Linux per sysadmin avrete letto di top: top è un pratico software di monitoring del sistema che consente di avere sotto gli occhi le attività del sistema operativo in una schermata abbastanza pratica da controllare. Se digitiamo il comando top in un terminale, otteniamo questo:

Figura 1. top in esecuzione su una workstation Linux
top in esecuzione su una workstation Linux

Top è un software abbastanza buono per il monitoring, ma in caso di situazioni di emergenza personalmente non mi soddisfa per niente. Quello che installo su ogni sistema Linux al primo avvio è invece la sua versione per così dire potenziata, ossia htop, che svolge essenzialmente lo stesso compito di top, ma con delle possibilità notevoli in più: innanzi tutto l'output è colorato e ci aiuta a distinguere maggiormente ciò che vediamo e soprattutto ciò che ha bisogno della nostra attenzione, ma non solo.

Figura 2. htop in esecuzione su una workstation Linux
htop in esecuzione su una workstation Linux

Abbiamo infatti una serie di comandi che possiamo impartire ad htop attraverso i tasti funzione (F1-F12) per assegnare un nice minore ad un processo, uno maggiore, e mandargli vari segnali come TERM e KILL, in caso ci stia dando problemi. Abbiamo a disposizione in questo modo quindi un vero e proprio task manager capillare da utilizzare attraverso la consolle dei comandi.

Potremmo dire (e anzi io lo sostengo fermamente) che htop è il migliore amico di un sysadmin, ed è qualcosa che i sistemisti Linux dovrebbero avere sempre nella cassetta degli attrezzi. Grazie ad htop infatti è possibile cavarsi di impiccio in tutte quelle situazioni in cui abbiamo task che non rispondono nemmeno agli script start/stop e stanno mettendo a rischio l'intera operatività di una infrastruttura in produzione.

iotop

Un altro software che ci consente di fare monitoring della nostra macchina Linux è iotop, che invece che monitorare i processi in virtù della CPU utilizzata insieme al parametro che indica la memoria virtuale impiegata, permette di ordinare i programmi in esecuzione in base allo stato di input e output. Avremo quindi un benchmark in tempo reale di quali programmi stanno usando in maniera massiccia la memoria (quella di massa, l'hard disk o la memoria SSD) e, in caso di malfunzionamenti, avremo la possibilità di controllare quale è il software che fa da collo di bottiglia e impedisce alla macchina (e agli altri programmi) di avere buone prestazioni.

Figura 3. iotop in esecuzione su una workstation Linux
iotop in esecuzione su una workstation Linux

Attraverso iotop quindi possiamo avere in ogni momento una panoramica della situazione relativa agli hard disk: se un applicativo mette alla prova il nostro hardware con moltissime scritture su disco rendendo il tutto inutilizzabile, potremo rendercene conto grazie a questo applicativo.

iptraf: sniffing minimale per controllare la rete su Linux

Un altro software che un sysadmin può usare per tracciare le proprie performance è iptraf: tramite questo programma infatti è possibile eseguire una traccia completa di tutto quello che viene inviato e ricevuto attraverso la rete, tenendo d'occhio un'interfaccia specifica, gruppi di interfacce o semplicemente ogni pacchetto per ogni interfaccia.

Figura 4. iptraf traccia il traffico di rete su una workstation Linux
iptraf traccia il traffico di rete su una workstation Linux

Possiamo quindi, attraverso iptraf, controllare lo stato delle nostre interfacce di rete e fare un check, quando vogliamo, che queste non siano congestionate da processi entrati in loop che continuano loro malgrado a inviare e ricevere pacchetti "inutili", togliendo risorse alla macchina che si trova a smaltire questo carico attraverso uno stack limitato e banda agli altri applicativi che così funzionerebbero molto male, nonché all'intera macchina che non risponderebbe correttamente neanche più via SSH.

Iptraf è veramente ottimo: dispone di una pratica interfaccia ncurses attraverso la quale in poche azioni possiamo decidere cosa tracciare e come farlo, scorrendo poi l'output della traccia per controllare il traffico di rete sniffato e farci un'idea sulla banda utilizzata dalle applicazioni web, e sui pacchetti in circolo attraverso le interfacce (locali) che stiamo monitorando.

Ti consigliamo anche