Utilizzando sar è possibile monitorare le prestazioni di vari sottosistemi Linux (CPU, memoria, I/O..) in tempo reale volta.
Utilizzando sar, puoi anche raccogliere tutti i dati sulle prestazioni su base continuativa, archiviarli ed eseguire analisi storiche per identificare i colli di bottiglia.
Sar fa parte del pacchetto sysstat.
Questo articolo spiega come installare e configurare il pacchetto sysstat (che contiene l'utilità sar) e come monitorare le seguenti statistiche sulle prestazioni di Linux usando sar.
- Utilizzo collettivo della CPU
- Statistiche della singola CPU
- Memoria utilizzata e disponibile
- Scambia spazio utilizzato e disponibile
- Attività complessive di I/O del sistema
- Attività I/O del singolo dispositivo
- Statistiche sul cambio di contesto
- Esegui coda e carica dati medi
- Statistiche di rete
- Segnala i dati sar da un momento specifico
Questa è l'unica guida di cui avrai bisogno per l'utilità sar. Quindi, aggiungi questo ai segnalibri per il tuo riferimento futuro.
Io. Installa e configura Sysstat
Installa il pacchetto Sysstat
Innanzitutto, assicurati che l'ultima versione di sar sia disponibile sul tuo sistema. Installalo utilizzando uno dei seguenti metodi a seconda della tua distribuzione.
sudo apt-get install sysstat (or) yum install sysstat (or) rpm -ivh sysstat-10.0.0-1.i586.rpm
Installa Sysstat dal sorgente
Scarica l'ultima versione dalla pagina di download di sysstat.
Puoi anche usare wget per scaricare il
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.0.tar.bz2 tar xvfj sysstat-10.0.0.tar.bz2 cd sysstat-10.0.0 ./configure --enable-install-cron
Nota: Assicurati di passare l'opzione –enable-install-cron. Questo esegue automaticamente le seguenti operazioni. Se non configuri sysstat con questa opzione, devi fare tu stesso questo brutto lavoro manualmente.
- Crea /etc/rc.d/init.d/sysstat
- Crea collegamenti appropriati dalle directory /etc/rc.d/rc*.d/ a /etc/rc.d/init.d/sysstat per avviare automaticamente sysstat durante il processo di avvio di Linux.
- Ad esempio, /etc/rc.d/rc3.d/S01sysstat è collegato automaticamente a /etc/rc.d/init.d/sysstat
Dopo il ./configure, installalo come mostrato di seguito.
make make install
Nota: Questo installerà sar e altre utilità systat in /usr/local/bin
Una volta installato, verificare la versione sar utilizzando “sar -V”. La versione 10 è l'attuale versione stabile di sysstat.
$ sar -V sysstat version 10.0.0 (C) Sebastien Godard (sysstat orange.fr)
Infine, assicurati che sar funzioni. Ad esempio, quanto segue fornisce le statistiche della CPU del sistema 3 volte (con un intervallo di 1 secondo).
$ sar 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Utility parte di Sysstat
Di seguito sono riportate le altre utilità di sysstat.
- sar raccoglie e visualizza TUTTE le statistiche sulle attività del sistema.
- sadc sta per "raccoglitore di dati sull'attività del sistema". Questo è lo strumento di backend sar che effettua la raccolta dei dati.
- sa1 memorizza le attività di sistema in un file di dati binario. sa1 dipende da sadc per questo scopo. sa1 viene eseguito da cron.
- sa2 crea un riepilogo giornaliero delle statistiche raccolte. sa2 viene eseguito da cron.
- saf può generare report sar in CSV, XML e vari altri formati. Usalo per integrare i dati sar con altri strumenti.
- iostat genera CPU, statistiche I/O
- mpstat visualizza le statistiche della CPU.
- pidstat segnala le statistiche basate sull'ID di processo (PID)
- nfsiostat visualizza le statistiche di I/O NFS.
- cifsiostato genera statistiche CIFS.
Questo articolo è incentrato sui fondamenti di sysstat e sull'utilità sar.
Raccogli le statistiche sar usando cron job – sa1 e sa2
Crea il file sysstat nella directory /etc/cron.d che raccoglierà i dati storici di sar.
# vi /etc/cron.d/sysstat */10 * * * * root /usr/local/lib/sa/sa1 1 1 53 23 * * * root /usr/local/lib/sa/sa2 -A
Se hai installato sysstat dal sorgente, la posizione predefinita di sa1 e sa2 è /usr/local/lib/sa. Se hai installato utilizzando il metodo di aggiornamento della tua distribuzione (ad esempio:yum, up2date o apt-get), questo potrebbe essere /usr/lib/sa/sa1 e /usr/lib/sa/sa2.
Nota :Per comprendere le voci di cron, leggi Linux Crontab:15 fantastici esempi di cron job.
/usr/local/lib/sa/sa1
- Questo viene eseguito ogni 10 minuti e raccoglie i dati sar per riferimento storico.
- Se vuoi raccogliere statistiche sar ogni 5 minuti, cambia */10 in */5 nel file /etc/cron.d/sysstat sopra.
- Questo scrive i dati nel file /var/log/sa/saXX. XX è il giorno del mese. Il file saXX è un file binario. Non puoi visualizzarne il contenuto aprendolo in un editor di testo.
- Ad esempio, se oggi è il 26° giorno del mese, sa1 scrive i dati sar in /var/log/sa/sa26
- Puoi passare due parametri a sa1:intervallo (in secondi) e conteggio.
- Nell'esempio sopra crontab:sa1 1 1 significa che sa1 raccoglie i dati sar 1 volta con un intervallo di 1 secondo (ogni 10 minuti).
/usr/local/lib/sa/sa2
- Questo viene eseguito verso mezzanotte (alle 23:53) per creare il rapporto di riepilogo giornaliero dei dati sar.
- sa2 crea il file /var/log/sa/sarXX (notare che questo è diverso dal file saXX creato da sa1). Questo file sarXX creato da sa2 è un file ascii che puoi visualizzare in un editor di testo.
- Questo rimuoverà anche i file saXX che sono più vecchi di una settimana. Quindi, scrivi un rapido script di shell che venga eseguito ogni settimana per copiare i file /var/log/sa/* in un'altra directory per eseguire l'analisi storica dei dati sar.
II. 10 esempi pratici di utilizzo di Sar
Ci sono due modi per invocare sar.
- sar seguito da un'opzione (senza specificare un file di dati saXX). Questo cercherà il file di dati saXX del giorno corrente e riporterà i dati sulle prestazioni che sono stati registrati fino a quel momento per il giorno corrente.
- sar seguito da un'opzione e specificando inoltre un file di dati saXX utilizzando l'opzione -f. Questo riporterà i dati sulle prestazioni per quel particolare giorno. cioè XX è il giorno del mese.
In tutti gli esempi seguenti, spiegheremo come visualizzare determinati dati sulle prestazioni per il giorno corrente. Per cercare un giorno specifico, aggiungi "-f /var/log/sa/saXX" alla fine del comando sar.
Tutto il comando sar avrà la seguente come prima riga nel suo output.
$ sar -u Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU)
- Linux 2.6.18-194.el5PAE – Versione del kernel Linux del sistema.
- (dev-db) – Il nome host in cui sono stati raccolti i dati sar.
- 26/03/2011 – La data di raccolta dei dati sar.
- _i686_ – L'architettura del sistema
- (8 CPU) – Numero di CPU disponibili su questo sistema. Sui sistemi multi core, indica il numero totale di core.
1. Utilizzo CPU di TUTTE le CPU (sar -u)
Ciò fornisce l'utilizzo cumulativo della CPU in tempo reale di tutte le CPU. “1 3” riporta ogni 1 secondo per un totale di 3 volte. Molto probabilmente ti concentrerai sull'ultimo campo "%idle" per vedere il carico della CPU.
$ sar -u 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:27:32 PM CPU %user %nice %system %iowait %steal %idle 01:27:33 PM all 0.00 0.00 0.00 0.00 0.00 100.00 01:27:34 PM all 0.25 0.00 0.25 0.00 0.00 99.50 01:27:35 PM all 0.75 0.00 0.25 0.00 0.00 99.00 Average: all 0.33 0.00 0.17 0.00 0.00 99.50
Di seguito sono riportate alcune varianti:
- sar -u Visualizza l'utilizzo della CPU per il giorno corrente che è stato raccolto fino a quel momento.
- sar -u 1 3 Visualizza l'utilizzo della CPU in tempo reale ogni 1 secondo per 3 volte.
- sar -u TUTTI Come "sar -u", ma mostra campi aggiuntivi.
- sar -u TUTTI 1 3 Come "sar -u 1 3", ma mostra campi aggiuntivi.
- sar -u -f /var/log/sa/sa10 Visualizza l'utilizzo della CPU per il 10 giorno del mese dal file sa10.
2. Utilizzo CPU della singola CPU o Core (sar -P)
Se hai 4 core sulla macchina e desideri vedere cosa stanno facendo i singoli core, procedi come segue.
"-P ALL" indica che dovrebbe visualizzare le statistiche per TUTTI i singoli Core.
Nell'esempio seguente nella colonna "CPU" 0, 1, 2 e 3 sono indicati i numeri di core della CPU corrispondenti.
$ sar -P ALL 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:34:12 PM CPU %user %nice %system %iowait %steal %idle 01:34:13 PM all 11.69 0.00 4.71 0.69 0.00 82.90 01:34:13 PM 0 35.00 0.00 6.00 0.00 0.00 59.00 01:34:13 PM 1 22.00 0.00 5.00 0.00 0.00 73.00 01:34:13 PM 2 3.00 0.00 1.00 0.00 0.00 96.00 01:34:13 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
“-P 1” indica che dovrebbe visualizzare le statistiche solo per il 2nd Core. (Nota che il numero di Core inizia da 0).
$ sar -P 1 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:36:25 PM CPU %user %nice %system %iowait %steal %idle 01:36:26 PM 1 8.08 0.00 2.02 1.01 0.00 88.89
Di seguito sono riportate alcune varianti:
- sar -P TUTTI Visualizza l'utilizzo della CPU suddiviso per tutti i core per il giorno corrente.
- sar -P ALL 1 3 Visualizza l'utilizzo della CPU in tempo reale per TUTTI i core ogni 1 secondo per 3 volte (suddiviso per tutti i core).
- sar -P 1 Visualizza l'utilizzo della CPU per il core numero 1 per il giorno corrente.
- sar -P 1 1 3 Visualizza l'utilizzo della CPU in tempo reale per il core numero 1, ogni 1 secondo per 3 volte.
- sar -P ALL -f /var/log/sa/sa10 Visualizza l'utilizzo della CPU suddiviso per tutti i core per i 10 giorni del mese dal file sa10.
3. Memoria libera e utilizzata (sar -r)
Questo riporta le statistiche di memoria. “1 3” riporta ogni 1 secondo per un totale di 3 volte. Molto probabilmente ti concentrerai su "kbmemfree" e "kbmemused" per la memoria libera e utilizzata.
$ sar -r 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:28:06 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 07:28:07 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:08 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 07:28:09 AM 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204 Average: 6209248 2097432 25.25 189024 1796544 141372 0.85 1921060 88204
Di seguito sono riportate alcune varianti:
- sar -r
- sar -r 1 3
- sar -r -f /var/log/sa/sa10
4. Scambia spazio utilizzato (sar -S)
Questo riporta le statistiche di scambio. “1 3” riporta ogni 1 secondo per un totale di 3 volte. Se "kbswpused" e "%swpused" sono a 0, il tuo sistema non si sta scambiando.
$ sar -S 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 07:31:06 AM kbswpfree kbswpused %swpused kbswpcad %swpcad 07:31:07 AM 8385920 0 0.00 0 0.00 07:31:08 AM 8385920 0 0.00 0 0.00 07:31:09 AM 8385920 0 0.00 0 0.00 Average: 8385920 0 0.00 0 0.00
Di seguito sono riportate alcune varianti:
- sar -S
- sar -S 1 3
- sar -S -f /var/log/sa/sa10
Note:
- Utilizzare "sar -R" per identificare il numero di pagine di memoria liberate, utilizzate e memorizzate nella cache al secondo dal sistema.
- Utilizza "sar -H" per identificare le hugepage (in KB) utilizzate e disponibili.
- Usa "sar -B" per generare statistiche di paging. vale a dire il numero di KB impaginati in (e in uscita) dal disco al secondo.
- Usa "sar -W" per generare statistiche di scambio di pagina. cioè scambio di pagine in entrata (e uscita) al secondo.
5. Attività di I/O complessive (sar -b)
Questo riporta le statistiche di I/O. "1 3" segnala ogni 1 secondo per un totale di 3 volte.
I seguenti campi sono visualizzati nell'esempio seguente.
- tps – Transazioni al secondo (include lettura e scrittura)
- rtps:leggi le transazioni al secondo
- wtps – Scrivi transazioni al secondo
- pane/i – Byte letti al secondo
- bwrtn/s – Byte scritti al secondo
$ sar -b 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:56:28 PM tps rtps wtps bread/s bwrtn/s 01:56:29 PM 346.00 264.00 82.00 2208.00 768.00 01:56:30 PM 100.00 36.00 64.00 304.00 816.00 01:56:31 PM 282.83 32.32 250.51 258.59 2537.37 Average: 242.81 111.04 131.77 925.75 1369.90
Di seguito sono riportate alcune varianti:
- sar-b
- sar -b 1 3
- sar -b -f /var/log/sa/sa10
Nota: Usa "sar -v" per visualizzare il numero di gestori di inode, gestori di file e pseudo-terminali utilizzati dal sistema.
6. Attività di I/O del dispositivo a blocco individuale (sar -d)
Per identificare le attività dei singoli dispositivi a blocchi (ad es. un punto di montaggio specifico, o LUN o partizione), utilizzare "sar -d"
$ sar -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM dev8-0 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev8-1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM dev120-64 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-65 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM dev120-0 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM dev120-96 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM dev120-97 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
Nell'esempio sopra “DEV” indica il dispositivo a blocchi specifico.
Ad esempio:"dev53-1" indica un dispositivo a blocchi con 53 come numero maggiore e 1 come numero minore.
Il nome del dispositivo (colonna DEV) può visualizzare il nome del dispositivo effettivo (ad esempio:sda, sda1, sdb1 ecc.), se si utilizza l'opzione -p (stampa graziosa) come mostrato di seguito.
$ sar -p -d 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:59:45 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 01:59:46 PM sda 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sda1 1.01 0.00 0.00 0.00 0.00 4.00 1.00 0.10 01:59:46 PM sdb1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sdc1 3.03 64.65 0.00 21.33 0.03 9.33 5.33 1.62 01:59:46 PM sde1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sdf1 8.08 0.00 105.05 13.00 0.00 0.38 0.38 0.30 01:59:46 PM sda2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91 01:59:46 PM sdb2 1.01 8.08 0.00 8.00 0.01 9.00 9.00 0.91
Di seguito sono riportate alcune varianti:
- sar -d
- sar -d 1 3
- sar -d -f /var/log/sa/sa10
- sar -p -d
7. Visualizza il cambio di contesto al secondo (sar -w)
Questo riporta il numero totale di processi creati al secondo e il numero totale di cambi di contesto al secondo. "1 3" segnala ogni 1 secondo per un totale di 3 volte.
$ sar -w 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 08:32:24 AM proc/s cswch/s 08:32:25 AM 3.00 53.00 08:32:26 AM 4.00 61.39 08:32:27 AM 2.00 57.00
Di seguito sono riportate alcune varianti:
- sar -w
- sar -w 1 3
- sar -w -f /var/log/sa/sa10
8. I rapporti eseguono la coda e caricano la media (sar -q)
Questo riporta la dimensione della coda di esecuzione e la media di carico degli ultimi 1 minuto, 5 minuti e 15 minuti. "1 3" segnala ogni 1 secondo per un totale di 3 volte.
$ sar -q 1 3 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 06:28:53 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 06:28:54 AM 0 230 2.00 3.00 5.00 0 06:28:55 AM 2 210 2.01 3.15 5.15 0 06:28:56 AM 2 230 2.12 3.12 5.12 0 Average: 3 230 3.12 3.12 5.12 0
Nota: La colonna "bloccata" mostra il numero di attività attualmente bloccate e in attesa del completamento dell'operazione di I/O.
Di seguito sono riportate alcune varianti:
- sar -q
- sar -q 1 3
- sar -q -f /var/log/sa/sa10
9. Segnala le statistiche di rete (sar -n)
Questo riporta varie statistiche di rete. Ad esempio:numero di pacchetti ricevuti (trasmessi) attraverso la scheda di rete, statistiche sull'errore di pacchetto ecc.,. "1 3" segnala ogni 1 secondo per un totale di 3 volte.
sar -n KEYWORD
KEYWORD può essere una delle seguenti:
- DEV – Visualizza le statistiche vitali dei dispositivi di rete per eth0, eth1, ecc.
- EDEV:mostra le statistiche sui guasti dei dispositivi di rete
- NFS:mostra le attività dei clienti NFS
- NFSD:mostra le attività del server NFS
- SOCK – Visualizza i socket in uso per IPv4
- IP:mostra il traffico di rete IPv4
- EIP:mostra gli errori di rete IPv4
- ICMP – Visualizza il traffico di rete ICMPv4
- EICMP – Visualizza gli errori di rete ICMPv4
- TCP – Visualizza il traffico di rete TCPv4
- ETCP – Visualizza gli errori di rete TCPv4
- UDP:mostra il traffico di rete UDPv4
- SOCK6, IP6, EIP6, ICMP6, UDP6 sono per IPv6
- ALL – Visualizza tutte le informazioni di cui sopra. L'output sarà molto lungo.
$ sar -n DEV 1 1 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 01:11:13 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 01:11:14 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:11:14 PM eth0 342.57 342.57 93923.76 141773.27 0.00 0.00 0.00 01:11:14 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10. Segnala i dati Sar utilizzando l'ora di inizio (sar -s)
Quando visualizzi i dati sar storici dal file /var/log/sa/saXX utilizzando l'opzione "sar -f", vengono visualizzati tutti i dati sar per quel giorno specifico a partire dalle 00:00 di quel giorno.
Usando l'opzione "-s hh:mi:ss", puoi specificare l'ora di inizio. Ad esempio, se si specifica "sar -s 10:00:00", verranno visualizzati i dati sar a partire dalle 10:00 (anziché a partire da mezzanotte) come mostrato di seguito.
Puoi combinare l'opzione -s con un'altra opzione sar.
Ad esempio, per riportare la media del carico il 26 di questo mese a partire dalle 10:00 del mattino, combinare l'opzione -q e -s come mostrato di seguito.
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 ... 11:20:01 AM 0 127 5.00 3.00 3.00 0 12:00:01 PM 0 127 4.00 2.00 1.00 0
Non c'è alcuna opzione per limitare il tempo di fine. Devi solo essere creativo e usare il comando head come mostrato di seguito.
Ad esempio, a partire dalle 10:00, se vuoi vedere 7 voci, devi reindirizzare l'output sopra a "head -n 10".
$ sar -q -f /var/log/sa/sa23 -s 10:00:01 | head -n 10 Linux 2.6.18-194.el5PAE (dev-db) 03/26/2011 _i686_ (8 CPU) 10:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:10:01 AM 0 127 2.00 3.00 5.00 0 10:20:01 AM 0 127 2.00 3.00 5.00 0 10:30:01 AM 0 127 3.00 5.00 2.00 0 10:40:01 AM 0 127 4.00 2.00 1.00 2 10:50:01 AM 0 127 3.00 5.00 5.00 0 11:00:01 AM 0 127 2.00 1.00 6.00 0 11:10:01 AM 0 127 1.00 3.00 7.00 2
C'è molto altro da trattare nel monitoraggio e nell'ottimizzazione delle prestazioni di Linux. Siamo solo all'inizio. Altri articoli in arrivo nella serie di spettacoli.
Articoli precedenti nella serie sul monitoraggio e l'ottimizzazione delle prestazioni di Linux:
- Introduzione al monitoraggio delle prestazioni e all'ottimizzazione di Linux
- 15 Esempi pratici di comandi principali di Linux