GNU/Linux >> Linux Esercitazione >  >> Linux

Sar Command 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 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

Linux
  1. Comando wc Linux con esempi

  2. Comando di ordinamento Linux con esempi

  3. Comando Tee Linux con esempi

  4. Comando testa di Linux con esempi

  5. Comando JQ in Linux con esempi

Comando CD Linux con esempi

Comando Linux watch con esempi

Attendi comando in Linux con esempi

Comando di esportazione Linux con esempi

Comando IP Linux con esempi

sar Esempi di comandi in Linux