GNU/Linux >> Tutoriales Linux >  >> Linux

Comando Sar en Linux con ejemplos


El comando Sar se utiliza para producir informes estadísticos sobre una variedad de recursos, incluido el uso de la CPU, la utilización de la memoria, el consumo de dispositivos de E/S, el monitor de red, el intercambio y los promedios de carga.

SAR significa System Activity Reporter, herramientas muy útiles para cualquier administrador de Linux para monitorear el rendimiento del sistema e investigar los cuellos de botella. Esta herramienta es proporcionada por el paquete sysstat.

En este tutorial, veremos cómo instalar el paquete sysstat y usar el comando sar en Linux.

Instalar paquete sysstat

El paquete sysstat contiene muchas utilidades que son una colección de herramientas de monitoreo de rendimiento para el sistema Linux. Sar es una herramienta que pertenece al paquete sysstat.

Instalación del paquete sysstat en RHEL y CentOS

$ sudo yum install sysstat

Una vez que el sysstat se haya instalado con éxito, verificando la instalación mediante el comando:

$ which sar
/usr/bin/sar

De forma predeterminada, sysstat almacenará las estadísticas del servidor en el archivo '/var/log/sa/saDD' (DD es el día del mes, por ejemplo:/var/log/sa/sa08) y conservará los datos durante 28 días. Si desea conservar más los datos, debe modificar el archivo de configuración de sysstat '/etc/sysconfig/sysstat'.

$ sudo cat /etc/sysconfig/sysstat

HISTORY=28

Modificar el valor de HISTORY con el número de días que desea conservar los registros.

Instalación del paquete sysstat en Ubuntu y Debian

$ sudo apt install sysstat

Verificando la instalación por comando:

$ which sar
/usr/bin/sar

En Ubuntu, necesitamos habilitarlo mientras CentOS no es necesario.

Usando su editor favorito (vim, nano o gedit) para editar el siguiente archivo:

$ sudo nano /etc/default/sysstat

Y configura ENABLED a true :

ENABLED="true"

Reiniciar el servicio

$ sudo service sysstat restart

En Ubuntu, el archivo de configuración es '/etc/sysstat/sysstat' y los datos se guardarán en 7 días de manera predeterminada.

$ cat /etc/sysstat/sysstat

HISTORY=7

Desde Fedora 21, sysstat viene de forma predeterminada y todo lo que necesita hacer es ejecutar los siguientes comandos:

$ sudo systemctl enable sysstat.service
$ sudo systemctl start sysstat.service

Hay un trabajo cron para sysstat que se ejecuta cada 10 minutos para recopilar datos y los almacenará en el archivo correspondiente /var/log/sa/saDD. Si desea cambiar el intervalo de ejecución de este cron, puede modificarlo en '/etc/cron.d/sysstat'.

Para systemd, el archivo de la unidad del temporizador llama a sysstat-collect.service (/usr/lib/systemd/system/sysstat-collect.service) cada 10 minutos para recopilar las estadísticas.

$ 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

Uso del comando Sar

La sintaxis básica para el uso del comando sar es la siguiente:

sar [option] [-o filename] [-f filename] [interval] [count]

donde:

intervalo :el período en segundos.

recuento: número de veces para hacer estadísticas de salida.

1. Encuentra la actividad de la CPU

De forma predeterminada (sin otras opciones dadas), el comando sar informará la actividad de la CPU del servidor. Además, la opción -u se puede utilizar para obtener el informe de utilización de la CPU.

Si desea obtener el informe de actividad de la CPU cada 2 segundos durante 3 veces, puede usar el siguiente 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

donde:

%usuario indica el porcentaje de utilización de la CPU que se produjo durante la ejecución a nivel de usuario (espacio de usuario)

%sistema indica el porcentaje de utilización de la CPU que se produjo durante la ejecución a nivel del sistema (espacio del kernel)

% inactivo es el porcentaje de tiempo que la CPU o las CPU estuvieron inactivas y el sistema no tuvo una solicitud de E/S de disco pendiente.

Si desea obtener la salida en un archivo en forma binaria, debe agregar -o nombre de archivo con el comando sar. Por ejemplo:

$ sar -u 2 3 -o log-file

Además, puede obtener el informe de actividad de la CPU de un día en particular, digamos:9 de junio de 2020. Puede encontrarlo como:

$ sudo sar -u -f /var/log/sa/sa09

2. Encuentre el uso de CPU para cada procesador

El -u La opción proporciona el uso de la CPU en todos los procesadores. Si desea encontrar la actividad de la CPU en todos los procesadores por separado, debe usar -P opción.

$ 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. Buscar uso de memoria

Puede encontrar el uso de memoria (memoria usada y libre del servidor) a lo largo del tiempo usando -r cambiar.

$ 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

donde:

kbmemfree indica la cantidad de memoria libre disponible en kilobytes.

kbmemused indica la cantidad de memoria utilizada en kilobytes. Esto no tiene en cuenta la memoria utilizada por el propio kernel.

Si desea recopilar el uso de la memoria para un día en particular, diga:05 de septiembre, debe ejecutarlo como se indica a continuación:

$ sar -r -f /var/log/sa/sa05

4. Encuentra actividad de intercambio

Puede verificar el uso de intercambio de la máquina usando -W opción.

$ 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

donde:

pswpin/s indica el número total de páginas de intercambio que el sistema trajo por segundo.

pswpout/s indica el número total de páginas de intercambio que el sistema generó por segundo.

Si desea recopilar los usos de intercambio para un día en particular, digamos el 5 de septiembre, debe ejecutarlo como el siguiente comando sar:

$ sar -W -f /var/log/sa/sa05

5. Encuentra promedios de carga a lo largo del tiempo

Puede encontrar los promedios de carga en horas extra usando -q opción.

$ 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

donde:

runq-sz :Muestra la longitud de la cola de ejecución (número de tareas en espera de tiempo de ejecución).

plist-sz :Muestra el número de tareas en la lista de tareas.

ldavg-1/5/15 :Promedio de carga del sistema para el último minuto/últimos 5 minutos/últimos 15 minutos.

Si desea recopilar los promedios de carga para un día en particular, digamos el 5 de septiembre, debe ejecutarlo siguiendo el comando sar:

$ sar -q -f /var/log/sa/sa05

6. Informe de sistemas de archivos montados

Puede obtener las estadísticas de los sistemas de archivos actuales usando -F opción

$ 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

Si desea recopilar los sistemas de archivos montados para un día en particular, diga el 10 de junio.

$ sar -F -f /var/log/sa/sa10

7. Informar detalles de inodo, tablas del kernel y tablas de archivos

Puede obtener los detalles del inodo, los procesos, los subprocesos del núcleo y las tablas de archivos que utiliza el sistema utilizando el comando sar con -v opción.

$ 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

donde:

dentunusd :número de entradas de caché no utilizadas en el directorio caché

archivo-nr: números de identificadores de archivos en uso

inode-nr: manejadores de inodos

pty-nr :pseudoterminales

8. Comprobar el cuello de botella de la CPU

Puede usar el comando sar para averiguar qué número de interrupción puede causar un cuello de botella en la CPU.

En el siguiente ejemplo #9 fue el más alto excluyendo la interrupción del sistema #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

Los detalles en el archivo '/proc/interrupts' también le resultarán útiles. La interrupción detiene el procesamiento momentáneamente para que puedan ocurrir E/S u otras operaciones. El procesamiento se reanuda después de que se lleva a cabo la operación específica. Por lo tanto, es muy importante que cada dispositivo instalado en la máquina tenga una configuración de interrupción que no entre en conflicto con la configuración utilizada por el hardware y otros periféricos.

$ 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 primera columna se refiere al número de IRQ. La siguiente columna informa el tipo de interrupción y la última columna contiene el nombre del dispositivo que se encuentra en IRQ.

9. Informe de estadísticas de la red

Para obtener el informe de las estadísticas de la red, use el comando sar con -n opción. Por ejemplo:

$ 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

donde:

DEV :se informan las estadísticas de los dispositivos de red

IFACE :nombre de la interfaz (En el ejemplo anterior:ens192)

rxpck/s / txpck/s :número total de paquetes recibidos/transmitidos por segundo

Hay algunas otras opciones además de DEV, como:

NFS :muestra las actividades del cliente NFS

CALCETIN :indicar los enchufes en uso

TCP :indica tráfico de red TCP v4

UDP :indica tráfico de red UDP v4

Si desea recopilar las estadísticas de la red para un día en particular, digamos el 9 de junio, debe ejecutarlo de la siguiente manera:

$ sar -n DEV -f /var/log/sa/sa09

Gráfico SAR

Las secciones anteriores explicaron la forma de usar sar desde la terminal. kSar es una aplicación GUI basada en Java que visualiza sus datos sar.

Instalando ksar:

$ sudo apt install openjdk-11-jdk
$ sudo yum install epel-release
$ sudo yum install java-openjdk

Descarga ksar y descomprímelo:

$ wget https://sourceforge.net/projects/ksar/files/latest/download
$ mv download kSar.zip
$ unzip kSar.zip

Ahora cd en dir

$ cd kSar-*

Ahora haz que el archivo run.sh sea ejecutable y ejecútalo como root.

$ chmod +x run.sh
$ sudo su
./run.sh

Ahora podemos probar ejecutando el comando local. Vamos a Data > Run Local Command y allí podemos usar el comando predeterminado.

A continuación, podemos ver los gráficos haciendo clic en el panel izquierdo y mirando en el lado derecho el gráfico que se muestra:

También es posible cargar gráficos desde un archivo. Primero, necesitamos ejecutar sar:

LC_ALL=C sar -A > /tmp/sar.data.txt

Y luego en los menús, seleccionamos Data > Load desde el archivo de texto y busque el archivo en /tmp o donde lo hayamos guardado.

Conclusión

En este tutorial, aprendimos cómo se puede usar el comando sar para ayudarlo a notar el uso de los recursos del sistema y mejorar el rendimiento mientras trabaja con su sistema operativo.

A partir de los ejemplos de sar, está claro que es una gran herramienta para recopilar, informar o guardar información sobre la actividad del sistema.

Gracias por leer y por favor deje su sugerencia en la sección de comentarios a continuación.

Related Read: 10 Linux iostat Command to Report CPU and I/O Statistics

Linux
  1. Comando wc Linux con ejemplos

  2. Comando de clasificación de Linux con ejemplos

  3. Comando Linux Tee con ejemplos

  4. Comando de cabeza de Linux con ejemplos

  5. Comando JQ en Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando de vigilancia de Linux con ejemplos

Comando de espera en Linux con ejemplos

Comando de exportación de Linux con ejemplos

Comando IP de Linux con ejemplos

Ejemplos de comandos sar en Linux