Esempi di utilizzo del comando SAR per il monitoraggio del sistema in Linux

, Author

System Activity Reporter è uno strumento importante che aiuta gli amministratori di sistema ad avere una panoramica della macchina server con lo stato di diverse metriche importanti in diversi punti del tempo.

Se supponiamo che tu stia avendo un problema con il sistema attualmente, come alcuni dei tuoi clienti non sono in grado di elencare alcuni dati dal database. La prima cosa che la maggior parte degli amministratori di sistema Linux fa è ricordare lo stesso problema quando si è verificato in precedenza, e se si ricorda il giorno del suo precedente verificarsi allora si può facilmente confrontare le statistiche interne del sistema con le statistiche attuali.

SAR è molto utile per fare esattamente questo.

La prima cosa che dobbiamo fare è controllare e confermare se avete l’utilità SAR installata sulla macchina. Il che può essere controllato elencando tutti gli rpm e cercando questa utility.

SAR è una delle utility all’interno di sysstat. Potete facilmente scaricarla e installarla nella vostra macchina molto facilmente attraverso YUM. (Ma sì, non preoccuparti perché la maggior parte delle distribuzioni è preconfezionata con lo strumento sysstatsmiley).

# yum install sysstat

Sì, ma assicurati di avere epel, rpmformge repository abilitato per l’installazione. Altrimenti il DVD della tua distribuzione sarà un bel posto dove cercare il pacchetto.

SAR (System Activity Reporter) darà informazioni sulle seguenti cose:

  1. Attività del buffer di sistema
  2. Informazioni sulle chiamate di sistema
  3. Informazioni sui dispositivi a blocchi
  4. Informazioni sul paging complessivo
  5. Informazioni sulemaphore e sull’allocazione della memoria
  6. Utilizzo della CPU e rapporto sui processi

La cosa principale che dobbiamo capire riguardo a SAR è che tutto viene fatto usando un cron. Per default in molte distribuzioni Linux avrete un file chiamato /etc/cron.d/sysstat.

Vediamo come funziona realmente SAR.

Se iniziamo a pensare al monitoraggio del sistema, allora lo strumento deve avere tutti i dati sui diversi aspetti del sistema e deve coprire tutti gli intervalli di tempo. Il che significa che un sistema di monitoraggio deve essere in grado di fornire le statistiche della macchina per un dato tempo.

Non c’è altro modo che prendere tutte le metriche e le statistiche della macchina in un determinato intervallo di tempo. Riducendo l’intervallo di tempo per la raccolta delle statistiche aumenterà la quantità di statistiche dettagliate che abbiamo (perché avremo più dati sul sistema).

SAR fa esattamente questo. sar prende le statistiche di diversi aspetti della macchina ad un intervallo di tempo definito. Quindi SAR funziona attraverso CRON.

# cat /etc/cron.d/sysstat# esegue lo strumento di contabilità delle attività di sistema ogni 10 minuti*/10 * * * * root /usr/lib64/sa/sa1 1 1# genera un riassunto giornaliero della contabilità dei processi alle 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
  • Così si può vedere dal suddetto file cron per SAR che sta eseguendo lo script “sa1” situato in “/usr/lib64/sa/” ogni 10 minuti
  • E sta anche eseguendo uno script /usr/lib64/sa/sa2 alla fine della giornata alle 23 circa.53

Così la prima voce di cron per SAR (/usr/lib64/sa/sa1) verrà eseguita ogni 10 minuti che a sua volta chiamerà l’utilità sadc per raccogliere le statistiche di sistema e memorizzarle in un file binario (un file per ogni giorno)

E la seconda voce di cron scaricherà tutto il contenuto di quel file binario in un altro file di testo, ed elimina i dati più vecchi di un particolare numero di giorni, normalmente 7 giorni per impostazione predefinita (che è menzionato nel seguente file),

# cat /etc/sysconfig/sysstat# Quanto tempo tenere i file di log (giorni), il massimo è un meseHISTORY=7

Si può modificare facilmente la voce HISTORY modificando il file.

Così, anche se le statistiche di sistema vengono raccolte ogni 10 minuti tramite cron (modificare il cron per eseguire ogni 1 minuto per informazioni più accurate) Se si desidera vedere le statistiche, allora è necessario eseguire il comando come segue.

L’output del comando sar semplice è come mostrato di seguito.

12:00:01 AM CPU %user %nice %system %iowait %steal %idle12:01:01 AM all 73.28 0.00 1.25 0.00 0.00 25.4712:02:01 AM all 7.83 0.00 0.44 0.00 0.00 91.7312:03:01 AM tutti 61.65 0.00 0.70 0.00 0.00 37.6612:04:01 AM tutti 57.85 0.00 0.82 0.00 0.00 41.3412:05:01 AM tutti 4.25 0.00 0.41 0.00 0.00 95.3412:06:01 AM tutti 4.20 0.00 0.22 0.00 0.00 95.581212:07:01 AM tutti 5.05 0.00 0.33 0.00 0.00 94.6312:08:01 AM tutti 4.76 0.00 0.06 0.00 0.00 95.1812:09:01 AM tutti 37.57 0.00 0.37 0.00 0.00 62.0512:10:01 AM tutti 70.04 0.00 0.80 0.00 0.00 29.1612:11:01 AM tutti 5.03 0.00 0.12 0.00 0.00 0.00 94.84

Si può vedere dall’output che mi riporta l’output delle statistiche raccolte per ogni minuto (il che significa che ho il mio cron a 1 minuto di intervallo), e mostrerà i dettagli dell’intera giornata (o mostrerà i dettagli raccolti fino a quando hai digitato il comando).

Comprendere l’output del comando SAR

%user: Questo mostra il tempo totale che il processore sta spendendo su diversi processi YCX5UKN5ZKEJ

%sys: questo mostra la percentuale di tempo speso dal processore per i compiti del sistema operativo (perché l’utente precedente mostra il tempo speso per i processi finali dell’utente)

%iowait: il nome stesso iowait suggerisce che è il tempo speso dal processore in attesa dei dispositivi (input e output)

%nice: Molti di voi devono sapere che un utente può cambiare la priorità di un processo in Linux cambiando il valore nice in Linux. Questa tabella mostra il tempo speso dalla CPU per il processo il cui valore di nice è stato cambiato.

%steal: Questa colonna mostra la quantità di tempo speso da una CPU (che è virtualizzata), per le risorse dalla CPU fisica

%idle: Questo suggerisce il tempo inattivo speso dal processore.

Di default sar memorizza tutti i suoi dati sotto /var/log/sa/ e un giorno sono nominati come mostrato di seguito.

s01 – per il primo giorno del mese

s02-per il secondo giorno del mese

s03,s04..e così via.

opzione-d nel comando SAR

Questa opzione -d può essere usata per riportare ogni singola attività relativa ai diversi dispositivi collegati al sistema (dispositivi a blocchi). Un tipico output del comando sar con l’opzione -d è mostrato qui sotto.

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00.0012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev8-0 1.55 0.00 35.29 22.70 0.01 7.26 1.86 0.2912:02:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-0 0.00 0.00.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00

DEV: questa colonna nomina i dispositivi sulla macchina, secondo i numeri maggiori e minori di un dispositivo a blocchi di Linux. Si può controllare facendo un ls -l nella directory /dev. come mostrato di seguito.

brw-r----- 1 root disk 8, 0 Nov 16 16:29 sdabrw-r----- 1 root disk 8, 1 Nov 16 16:29 sda1brw-r----- 1 root disk 8, 2 Nov 16:29 sda2

nel risultato di “ls -l” mostrato sopra per “sda”, il numero maggiore è “8”, e quello minore è “0”…. Quindi si può facilmente identificare il disco menzionato nell’output del comando sar.

tps: tps sta per trasferimento al secondo, quindi mostra il trasferimento al secondo su quel particolare dispositivo

rd_sec/s: questo mostra il numero totale di settori su quel dispositivo che vengono letti

wr_sec/s: se rd_sec/s è settori letti al secondo allora ovviamente wr_sec è settori scritti al secondo.

avgrq-sz: questa colonna mostra la media.

await: questo mostra il numero totale di tempo che il processore ha aspettato per le richieste riguardanti l’IO

%util: questa colonna mostra l’uso della cpu in percentuale quando la richiesta è stata generata

Show Memory usage in SAR command

l’opzione -r disponibile in sar command è molto utile. mostra la memoria, lo swap, la memoria cache ecc ad ogni intervallo o intervallo di tempo richiesto.

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad02:30:01 AM 609500 1487652 70.94 242420 777560 1075980 364 0.03 36002:40:01 AM 609500 1487652 70.94 242424 777568 1075980 364 0.03 36002:50:01 AM 609500 1487652 70.94 242424 777592 1075980 364 0.03 36003:00:01 AM 608980 1488172 70.96 242424 777600 1075980 364 0.03 36003:10:01 AM 608584 1488568 70.98 242424 777628 1075980 364 0.03 36003:20:01 AM 608584 1488568 70.98 242424 777648 1075980 364 0.03 360
nell’output di sopra la maggior parte delle colonne sono auto esplicative (e la maggior parte degli output sono in KB).
kbmemfree: questo mostra la quantità di memoria libera
Kbmemused: memoria usata
%memused: percentuale di memoria usata
kbbuffers: memoria buffer usata dal kernel.
kbcached: memoria cache usata dal kernel
tutte le altre voci per la memoria sono swap (libera, usata, percentuale ecc.)

Come recuperare le metriche di un particolare giorno usando SAR in linux

Come detto prima tutte le metriche di un particolare giorno sono salvate in sa<giorno del mese>. Quindi se voglio conoscere le mie metriche per il 27° giorno del mese posso facilmente trovarle come mostrato di seguito.
# sar -f /var/log/sa/sa27Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.86
Nel comando sopra abbiamo passato /var/log/sa/sa27 come argomento perché avevo bisogno di statistiche per quel giorno.passare il sa<giorno del mese>come richiesto nel comando sopra

Come recuperare le metriche SAR per un tempo specifico in una data particolare

questo può essere ottenuto passando un altro argomento come mostrato sotto.

# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %user %nice %system %iowait %steal %idle02:30:01 AM all 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM all 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM all 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM all 3.27 0.00 0.71 1.12 0.04 94.8603:10:01 AM tutti 2.72 1.06 0.75 1.09 0.04 94.33Media: tutti 2.76 0.21 0.70 1.11 0.04 95.18
Nell’esempio mostrato sopra ho chiesto a SAR di recuperare le metriche tra le 2:20:00 e le 3:20:00 del 27° giorno del mese
Puoi anche passare qualsiasi altra opzione di metrica insieme all’intervallo di tempo…come -d o -r
Hai notato? SAR può mostrarci accuratamente le statistiche della macchina di un particolare giorno in un particolare momento…quindi è molto più facile identificare i colli di bottiglia.
Utilizzando l’opzione -A insieme al comando di cui sopra, si mostrerà TUTTO (tutte le metriche raccolte da sar).
sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A
L’output sarà elaborato. e otterrai quasi tutto in sar da quell’opzione -A sul tuo schermo!

Mostra le statistiche di rete usando il comando sar

il comando sar mostra anche le statistiche di rete. Questo può essere fatto usando l’opzione -n DEV nel comando sar.

# sar -n DEVLinux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s02:30:01 AM lo 0,01 0,01 0,77 0,77 0,00 0,00 0,0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.00 0.00 0.0002:30:01 AM eth1 14.45 0.00 1399.34 0.00 0.00 0.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00.0002:40:01 AM lo 0.01 0.01 0.77 0.77 0.00 0.00 0.0002:40:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.0002:40:01 AM eth1 13.96 0.00 1352.87 0.00 0.00 0.00 0.00

IFACE: sta per il nome dell’interfaccia della scheda nic

rxpck/s: mostra il totale dei pacchetti ricevuti al secondo

txpck/s:pacchetti trasmessi al secondo

rxcmp/s: pacchetti compressi ricevuti

txcmp/s: pacchetti compressi trasmessi

rxmcst/s: pacchetti multicast al secondo.

Alcune altre metriche che possono essere determinate usando sar

-y opzione in sar: può essere usata per determinare i dettagli della tty

-X opzione in sar per ottenere dettagli di un particolare processo. È necessario passare pid come argomento a questa opzione.

-n opzione SOCK in sar: questa opzione riporterà tutti i dettagli dei socket.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.