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 dei dispositivi I/O, il monitoraggio della rete, lo scambio e le medie di carico.
SAR sta per System Activity Reporter, uno strumento molto utile per qualsiasi amministratore Linux per monitorare le prestazioni del sistema e per indagare sui colli di bottiglia. Questo strumento è fornito dal pacchetto sysstat.
In questo tutorial, analizzeremo 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 per il 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 il sysstat è stato installato correttamente, verificando l'installazione tramite il 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 manterrà i dati per 28 giorni. Se vuoi conservare i dati di più, devi modificare il file di configurazione di sysstat '/etc/sysconfig/sysstat'.
$ sudo cat /etc/sysconfig/sysstat
HISTORY=28
Modifica il valore di HISTORY
con il numero di giorni in cui desideri conservare i registri.
Installazione del pacchetto sysstat su Ubuntu e Debian
$ sudo apt install sysstat
Verifica dell'installazione tramite comando:
$ which sar
/usr/bin/sar
Su Ubuntu, dobbiamo abilitarlo mentre CentOS non è necessario.
Utilizzando il tuo editor preferito (vim, nano o gedit) per modificare il seguente file:
$ sudo nano /etc/default/sysstat
E imposta ENABLED
su true
:
ENABLED="true"
Riavvia il servizio
$ sudo service sysstat restart
Su Ubuntu, il file di configurazione è '/etc/sysstat/sysstat' e i dati verranno conservati in 7 giorni per impostazione predefinita.
$ cat /etc/sysstat/sysstat
HISTORY=7
Da Fedora 21, sysstat viene fornito per impostazione predefinita e tutto ciò che devi fare è eseguire i seguenti comandi:
$ sudo systemctl enable sysstat.service
$ sudo systemctl start sysstat.service
C'è un lavoro cron per sysstat che viene eseguito ogni 10 minuti per raccogliere dati e li memorizzerà nel file corrispondente /var/log/sa/saDD. Se vuoi cambiare l'intervallo di questa esecuzione di cron, puoi modificarlo 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 le 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
Utilizzo del comando Sar
La sintassi di base per l'utilizzo del comando sar è la seguente:
sar [option] [-o filename] [-f filename] [interval] [count]
Dove:
intervallo :il periodo in secondi.
contare: numero di volte per creare 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. Inoltre, l'opzione -u
può essere utilizzato per ottenere il rapporto sull'utilizzo della CPU.
Se vuoi ricevere il rapporto sull'attività della CPU ogni 2 secondi per 3 volte, puoi usare 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 indica la percentuale di utilizzo della CPU che si è verificata durante l'esecuzione a livello di sistema (spazio del kernel)
%inattivo è 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 del disco in sospeso.
Se vuoi ottenere l'output in un file in formato binario, devi aggiungere -o
nomefile con il comando sar. Ad esempio:
$ sar -u 2 3 -o log-file
Inoltre, puoi ottenere il rapporto sull'attività della CPU di un giorno particolare, 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 tutti i processori. Se vuoi trovare l'attività della CPU su tutti i processori separatamente, devi usare il -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
Puoi trovare l'utilizzo della memoria (usata e libera del server) nel tempo usando il -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.
kbmemossa 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 particolare, dì:05 settembre, devi eseguirlo come segue:
$ sar -r -f /var/log/sa/sa05
4. Trova attività di scambio
È possibile verificare l'utilizzo dello scambio della macchina utilizzando il -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/i indica il numero totale di pagine di scambio che il sistema ha portato al secondo.
pswpout/i indica il numero totale di pagine di scambio che il sistema ha prodotto al secondo.
Se vuoi raccogliere gli utilizzi di scambio per un giorno particolare, ad esempio il 05 settembre, devi eseguirlo come segue sar comando:
$ sar -W -f /var/log/sa/sa05
5. Trova le medie di carico nel tempo
Puoi trovare le medie di carico straordinari utilizzando il -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 di esecuzione).
plist-sz :mostra il numero di attività nell'elenco delle attività.
ldavg-5/1/15 :carico medio del sistema per l'ultimo minuto/ultimi 5 minuti/ultimi 15 minuti.
Se vuoi raccogliere le medie di carico per un giorno particolare, diciamo il 05 settembre, devi eseguirlo seguendo il comando sar:
$ sar -q -f /var/log/sa/sa05
6. Report dei filesystem montati
Puoi ottenere le statistiche per i filesystem attuali usando il -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 particolare, diciamo il 10 giugno.
$ sar -F -f /var/log/sa/sa10
7. Riporta i dettagli di inode, tabelle del kernel e tabelle di file
Puoi ottenere i dettagli di inode, processi, thread del kernel e tabelle di file utilizzati dal sistema usando il comando sar con -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 :numero di voci della cache inutilizzate nella cache della directory
file-nr: numero di handle di file in uso
inode-nr: gestori di inode
pty-nr :pseudo terminali
8. Controlla il collo di bottiglia della CPU
Puoi usare il comando sar per scoprire quale numero di interrupt potrebbe causare il collo di bottiglia della CPU.
Nell'esempio seguente #9
era l'interrupt di sistema più alto escluso #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'interruzione interrompe momentaneamente l'elaborazione in modo che possano verificarsi operazioni di I/O o altre operazioni. L'elaborazione riprende dopo l'esecuzione dell'operazione specifica. Quindi è molto importante che ogni dispositivo installato nella macchina sia dotato di un'impostazione di interrupt che non sia in conflitto con le impostazioni utilizzate dall'hardware e dalle 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 fa riferimento al numero IRQ. La colonna successiva riporta il tipo di interrupt e l'ultima colonna contiene il nome del dispositivo che si trova su IRQ.
9. Segnala le statistiche di rete
Per ottenere il report delle statistiche di rete, utilizzare il comando sar con -n
opzione. Ad 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:
SVILUPPO :vengono riportate le statistiche dei dispositivi di rete
FACCIA :nome dell'interfaccia (nell'esempio sopra:ens192)
rxpck/s / txpck/s :numero totale di pacchetti ricevuti/trasmessi al secondo
Ci sono altre opzioni oltre a DEV, come:
NFS :mostra le attività dei clienti NFS
CALZINO :indica le prese in uso
TCP :indica il traffico di rete TCP v4
UDP :indica il traffico di rete UDP v4
Se vuoi raccogliere le statistiche di rete per un giorno particolare, ad esempio il 9 giugno, devi eseguirlo come segue:
$ sar -n DEV -f /var/log/sa/sa09
Grafico Sar
Le sezioni precedenti hanno spiegato come utilizzare sar dal 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 nella directory
$ 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. Andiamo su Data > Run Local Command
e lì possiamo usare il comando predefinito.
Successivamente, possiamo guardare i grafici facendo clic sul pannello di sinistra e guardando a destra il grafico visualizzato:
È anche possibile caricare i grafici 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'abbiamo salvato.
Conclusione
In questo tutorial, abbiamo appreso come utilizzare il comando sar per aiutarti a notare l'utilizzo delle risorse di sistema e migliorare le prestazioni mentre lavori con il tuo sistema operativo.
Dagli esempi di sar, è chiaro che è un ottimo strumento per raccogliere, segnalare o salvare informazioni sull'attività del sistema.
Grazie per la lettura 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