Comando Sar in Linux con esempi

Il comando sar viene utilizzato per produrre report statistici su una varietà di risorse, inclusi l’utilizzo della CPU, l’utilizzo della memoria, il consumo del dispositivo I/O, il monitoraggio della rete, lo scambio e gli ambienti di caricamento.
SAR è l’acronimo di System Activity Reporter, strumenti molto utili per qualsiasi amministratore Linux per monitorare le prestazioni del sistema e indagare sui crash. Questo strumento è fornito dal pacchetto sysstat.
In questo tutorial vedremo come installare il pacchetto sysstat e utilizzare il comando sar su Linux.
Installa il pacchetto sysstat
Il pacchetto sysstat contiene molte utilità che sono una raccolta di strumenti di monitoraggio delle prestazioni del sistema Linux. Sar è uno strumento che appartiene al pacchetto sysstat.
Installazione del pacchetto sysstat su RHEL e CentOS
$ sudo yum install sysstat
Una volta che sysstat è stato installato con successo, verificando l’installazione tramite comando:
$ which sar
/usr/bin/sar
Per impostazione predefinita, sysstat memorizzerà le statistiche del server nel file “/var/log/sa/saDD” (DD è il giorno del mese, ad esempio: /var/log/sa/sa08) e conserverà i dati per 28 giorni. Se vuoi conservare i dati più a lungo, devi modificare il file di configurazione di sysstat “/etc/sysconfig/sysstat”.
$ sudo cat /etc/sysconfig/sysstat
HISTORY=28
Cambia il suo valore HISTORY
con il numero di giorni in cui si desidera conservare i registri.
Installazione del pacchetto sysstat su Ubuntu e Debian
$ sudo apt install sysstat
Verificare l’installazione tramite comando:
$ which sar
/usr/bin/sar
Su Ubuntu, dobbiamo abilitarlo mentre su CentOS non è richiesto.
Usando il tuo editor preferito (vim, nano o gedit) per modificare il seguente file:
$ sudo nano /etc/default/sysstat
E impostare ENABLED
a true
:
ENABLED="true"
Riavvia il servizio
$ sudo service sysstat restart
Su Ubuntu, il file di configurazione è “/etc/sysstat/sysstat” e i dati verranno conservati per 7 giorni per impostazione predefinita.
$ cat /etc/sysstat/sysstat
HISTORY=7
A partire da Fedora 21, sysstat viene fornito di default e tutto ciò che devi fare è eseguire i seguenti comandi:
$ sudo systemctl enable sysstat.service
$ sudo systemctl start sysstat.service
Esiste un cron job per sysstat che viene eseguito ogni 10 minuti per raccogliere i dati e memorizzarli nel file appropriato /var/log/sa/saDD. Se vuoi cambiare l’intervallo di questa esecuzione di cron, puoi cambiarlo in “/etc/cron.d/sysstat”.
Per systemd, il file dell’unità timer chiama sysstat-collect.service (/usr/lib/systemd/system/sysstat-collect.service) ogni 10 minuti per raccogliere statistiche.
$ cat /etc/cron.d/sysstat
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
Usando il comando Salta
La sintassi di base per l’utilizzo del comando sar è la seguente:
sar [option] [-o filename] [-f filename] [interval] [count]
Dove:
intervallo: periodo in secondi.
contare: quante volte fare statistiche di output.
1. Trova l’attività della CPU
Per impostazione predefinita (senza altre opzioni fornite) il comando sar riporterà l’attività della CPU del server. Anche l’opzione -u
può essere utilizzato per ottenere report sull’utilizzo della CPU.
Se desideri ottenere il rapporto sull’attività della CPU ogni 2 secondi per 3 volte, puoi utilizzare il seguente comando sar:
$ sar -u 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 09/06/2020 _x86_64_ (2 CPU)
22:26:54 CPU %user %nice %system %iowait %steal %idle
22:26:56 all 4,03 0,00 0,50 0,00 0,00 95,47
22:26:58 all 8,08 0,00 0,51 0,00 0,00 91,41
22:27:00 all 12,50 0,00 1,00 0,00 0,00 86,50
Average: all 8,21 0,00 0,67 0,00 0,00 91,11

Dove:
%utente denota la percentuale di utilizzo della CPU che si è verificata durante l’esecuzione a livello di utente (spazio utente).
%sistema denota la percentuale di utilizzo della CPU che si è verificata durante l’esecuzione a livello di sistema (spazio del kernel)
%non attivo è la percentuale di tempo in cui la CPU o le CPU sono rimaste inattive e il sistema non ha ricevuto una richiesta di I/O su disco.
Se vuoi ottenere l’output in un file in formato binario, devi aggiungere -o
nomefile con il comando sar. Per esempio:
$ sar -u 2 3 -o log-file
Puoi anche ottenere il rapporto sull’attività della CPU per un giorno specifico, ad esempio: 09 giugno 2020. Puoi trovarlo come:
$ sudo sar -u -f /var/log/sa/sa09
2. Trova l’utilizzo della CPU per ciascun processore
Il -u
l’opzione fornisce l’utilizzo della CPU su tutte le CPU. Se vuoi trovare l’attività della CPU su tutti i processori separatamente, devi usare -P
opzione.
$ sar -P ALL 1 1
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:38:18 CPU %user %nice %system %iowait %steal %idle
05:38:19 all 3,03 0,00 0,00 0,00 0,00 96,97
05:38:19 0 3,96 0,00 0,99 0,00 0,00 95,05
05:38:19 1 3,00 0,00 0,00 0,00 0,00 97,00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 3,03 0,00 0,00 0,00 0,00 96,97
Average: 0 3,96 0,00 0,99 0,00 0,00 95,05
Average: 1 3,00 0,00 0,00 0,00 0,00 97,00
3. Trova l’utilizzo della memoria
È possibile trovare l’utilizzo della memoria (memoria del server utilizzata e libera) nel tempo utilizzando -r
interruttore.
$ sar -r 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:41:04 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:41:05 855300 3025220 77,96 0 1495276 2426864 30,55 1265008 1158172 100
05:41:06 854800 3025720 77,97 0 1495276 2426864 30,55 1265132 1158172 100
05:41:07 855032 3025488 77,97 0 1495276 2426864 30,55 1265012 1158172 100
Average: 855044 3025476 77,97 0 1495276 2426864 30,55 1265051 1158172 100
Dove:
kbmemfree indica la quantità di memoria libera disponibile in kilobyte.
kbmemused indica la quantità di memoria utilizzata in kilobyte. Questo non tiene conto della memoria utilizzata dal kernel stesso.
Se vuoi raccogliere l’utilizzo della memoria per un giorno specifico, ad esempio: 05 settembre, devi eseguirlo come di seguito:
$ sar -r -f /var/log/sa/sa05

4. Trova l’attività di scambio
Puoi controllare l’utilizzo del cambio dell’auto utilizzando -W
opzione.
$ sar -W 1 3
Linux 2.6.18-274.18.1.el5 (myserver) 09/06/2012
03:31:12 PM pswpin/s pswpout/s
03:31:13 PM 16.16 0.00
03:31:14 PM 16.00 0.00
03:31:15 PM 15.84 0.00
Average: 16.00 0.00
Dove:
pswpin/s indica il numero totale di pagine di scambio recuperate dal sistema al secondo.
pswpout/s indica il numero totale di pagine di scambio che il sistema ha emesso al secondo.
Se vuoi raccogliere gli utilizzi di scambio per un giorno specifico come il 05 settembre, devi eseguirlo come il seguente comando sar:
$ sar -W -f /var/log/sa/sa05
5. Trova le medie di caricamento nel tempo
È possibile trovare le medie di carico per gli straordinari utilizzando -q
opzione.
$ sar -q 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:16:13 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
06:16:14 0 329 0,00 0,04 0,09 0
06:16:15 0 329 0,00 0,04 0,09 0
06:16:16 0 329 0,00 0,04 0,09 0
Average: 0 329 0,00 0,04 0,09 0
Dove:
runq-sz: mostra la lunghezza della coda di esecuzione (numero di attività in attesa del tempo di esecuzione).
plist-sz: mostra il numero di attività nell’elenco delle attività.
ldavg-1/5/15: Carico medio del sistema per l’ultimo minuto/ ultimi 5 minuti/ ultimi 15 minuti.
Se desideri raccogliere le medie di carico per un giorno specifico, ad esempio il 05 settembre, devi eseguire il seguente comando sar:
$ sar -q -f /var/log/sa/sa05
6. Rapporto sui file system montati
È possibile ottenere le statistiche per i file system correnti utilizzando -F
opzione
$ sar -F 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:30:18 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:20 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:20 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:20 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:22 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:22 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:22 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:24 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:24 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
Summary: MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
Summary 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
Summary 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
Se vuoi raccogliere i filesystem montati per un giorno specifico, diciamo il 10 giugno.
$ sar -F -f /var/log/sa/sa10
7. Riporta i dettagli su inode, tabelle del kernel e tabelle di file
È possibile ottenere dettagli su inode, processi, thread del kernel e tabelle di file utilizzati dal sistema utilizzando il comando sar cu -v
opzione.
$ sar -v 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:57:23 dentunusd file-nr inode-nr pty-nr
06:57:25 160833 2400 132081 3
06:57:27 160833 2400 132081 3
06:57:29 160833 2400 132081 3
Average: 160833 2400 132081 3
Dove:
dentunusd: il numero di voci cache inutilizzate nella directory cache
nessun file: il numero di handle di file in uso
inode-no: gestori di inode
pty no: pseudo terminali
8. Verificare il blocco della CPU
È possibile utilizzare il comando sar per scoprire quale numero di interruzioni potrebbe causare deadlock della CPU.
Nell’esempio qui sotto #9
è stata la più grande interruzione del sistema esclusa #0
.
$ sar -I XALL 2 10
02:07:10 AM INTR intr/s
02:07:12 AM 0 992.57
02:07:12 AM 1 0.00
02:07:12 AM 2 0.00
02:07:12 AM 3 0.00
02:07:12 AM 4 0.00
02:07:12 AM 5 0.00
02:07:12 AM 6 0.00
02:07:12 AM 7 0.00
02:07:12 AM 8 0.00
02:07:12 AM 9 350.50
Anche i dettagli nel file “/proc/interrupts” ti saranno utili L’interrupt interrompe momentaneamente l’elaborazione in modo che l’I/O o altre operazioni possano aver luogo. L’elaborazione riprende dopo l’esecuzione dell’operazione specifica. Pertanto, è molto importante che ogni dispositivo installato nella macchina abbia un’impostazione di interrupt che non sia in conflitto con le impostazioni utilizzate dall’hardware e da altre periferiche.
$ sudo cat /proc/interrupts
CPU0 CPU1
0: 48 0 IO-APIC-edge timer
1: 54 0 IO-APIC-edge i8042
8: 1 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 35 116 IO-APIC-edge i8042
14: 0 0 IO-APIC-edge ata_piix
15: 0 0 IO-APIC-edge ata_piix
16: 118 2513 IO-APIC-fasteoi vmwgfx
24: 0 0 PCI-MSI-edge PCIe PME, pciehp
25: 0 0 PCI-MSI-edge PCIe PME, pciehp
26: 0 0 PCI-MSI-edge PCIe PME, pciehp
27: 0 0 PCI-MSI-edge PCIe PME, pciehp
NMI: 0 0 Non-maskable interrupts
LOC: 35392807 14792833 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 2677624 215297 IRQ work interrupts
...
La prima colonna si riferisce al numero IRQ. La colonna successiva riporta il tipo di interruzione e l’ultima colonna contiene il nome del dispositivo che risiede nell’IRQ.
9. Segnalare le statistiche di rete
Per ottenere il rapporto sulle statistiche di rete, utilizzare il comando sar cu -n
opzione. Per esempio:
$ sar -n DEV
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
19:20:23 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
19:20:24 ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
19:20:24 lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
Average: lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
Dove:
SV: Vengono riportate le statistiche dai dispositivi di rete
SONO AFFRONTATO: nome interfaccia (nell’esempio sopra: ens192)
rxpck/s / txpck/s: numero totale di pacchetti ricevuti/trasmessi al secondo
Ci sono opzioni diverse da DEV come:
NFS: mostra le attività del client NFS
CALZA: indica le prese in uso
TCP: indica il traffico di rete TCP v4
UDP: indica il traffico di rete UDP v4
Se desideri raccogliere statistiche di rete per un giorno specifico, ad esempio il 9 giugno, devi eseguirlo come segue:
$ sar -n DEV -f /var/log/sa/sa09
Carta Sar
Le sezioni precedenti hanno spiegato come utilizzare il sale nel terminale. kSar è un’applicazione GUI basata su Java che visualizza i tuoi dati sar.
Installazione di ksar:
$ sudo apt install openjdk-11-jdk
$ sudo yum install epel-release
$ sudo yum install java-openjdk
Scarica ksar e decomprimilo:
$ wget https://sourceforge.net/projects/ksar/files/latest/download
$ mv download kSar.zip
$ unzip kSar.zip
Ora cd in dir
$ cd kSar-*
Ora rendi eseguibile il file run.sh ed eseguilo come root.
$ chmod +x run.sh
$ sudo su
./run.sh
Ora possiamo testare eseguendo il comando locale. Andando a Data > Run Local Command
e lì possiamo usare il comando predefinito.

Successivamente, possiamo guardare i grafici facendo clic sul pannello di sinistra e osservando il grafico visualizzato a destra:

È anche possibile caricare grafica da file. Per prima cosa, dobbiamo eseguire sar:
LC_ALL=C sar -A > /tmp/sar.data.txt
E poi nei menu, selezioniamo Data > Load
dal file di testo e trova il file in /tmp
o ovunque l’ho salvato.
Conclusione
In questo tutorial, abbiamo appreso come utilizzare il comando sar per aiutarti a osservare l’utilizzo delle risorse di sistema e migliorare le prestazioni mentre lavori con il tuo sistema operativo.
Dagli esempi SAR, è chiaro che si tratta di un ottimo strumento per raccogliere, segnalare o salvare informazioni sull’attività del sistema.
Grazie per aver letto e per favore lascia il tuo suggerimento nella sezione commenti qui sotto.
Related Read: 10 Linux iostat Command to Report CPU and I/O Statistics