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 son las siglas de System Activity Reporter, herramientas muy útiles para que cualquier administrador de Linux supervise el rendimiento del sistema e investigue los cuellos de botella. Esta herramienta la proporciona el paquete sysstat.
En este tutorial, veremos cómo instalar el paquete sysstat y usar el comando sar en Linux.
Instalar el paquete sysstat
El paquete sysstat contiene muchas utilidades que son una colección de herramientas de monitoreo de desempeño 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 sysstat se haya instalado correctamente, 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 mantendrá 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 la cantidad 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 establecer 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 conservarán en 7 días de forma predeterminada.
$ cat /etc/sysstat/sysstat HISTORY=7
Desde Fedora 21, sysstat viene por defecto 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 esta ejecución cron, puede modificarlo en ‘/etc/cron.d/sysstat’.
Para systemd, el archivo de la unidad de 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]
Dónde:
intervalo: el período en segundos.
contar: número de veces para realizar 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

Dónde:
%usuario denota el porcentaje de utilización de la CPU que se produjo durante la ejecución a nivel de usuario (espacio de usuario)
%sistema denota 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
los -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 utilizar el -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. Encuentra el uso de memoria
Puede encontrar el uso de memoria (memoria usada y libre del servidor) a lo largo del tiempo usando el -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
Dónde:
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 memoria para un día en particular, diga: 05 de septiembre, debe ejecutarlo como se muestra a continuación:
$ sar -r -f /var/log/sa/sa05

4. Busque la actividad de intercambio
Puede comprobar el uso de intercambio de la máquina utilizando el -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
Dónde:
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 produjo por segundo.
Si desea recopilar los usos de intercambio para un día en particular, digamos el 05 de septiembre, debe ejecutarlo como el siguiente comando sar:
$ sar -W -f /var/log/sa/sa05
5. Encuentre promedios de carga a lo largo del tiempo
Puede encontrar los promedios de carga en el tiempo extra usando el -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
Dónde:
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 durante el último minuto / últimos 5 minutos / últimos 15 minutos.
Si desea recopilar los promedios de carga para un día en particular, digamos el 05 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 utilizando el -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, digamos el 10 de junio.
$ sar -F -f /var/log/sa/sa10
7. Informar detalles de inodo, tablas de kernel y tablas de archivos
Puede obtener los detalles del inodo, procesos, subprocesos del kernel y tablas de archivos utilizados por el sistema mediante 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
Dónde:
dentunusd: número de entradas de caché no utilizadas en la caché del directorio
file-nr: número de identificadores de archivos en uso
inode-nr: manipuladores de inodo
pty-nr: pseudo terminales
8. Compruebe el cuello de botella de la CPU
Puede usar el comando sar para averiguar qué número de interrupciones puede causar un cuello de botella en la CPU.
En el siguiente ejemplo #9 fue la mayor interrupción del sistema excluyendo #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. Informar 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
Dónde:
DEV: se informan las estadísticas de los dispositivos de red
YO AFRONTO: 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
CALCETÍN: indica los enchufes en uso
TCP: indica el tráfico de red TCP v4
UDP: indica el 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.
Instalación de 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 haga que el archivo run.sh sea ejecutable y ejecútelo 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 mirar los gráficos haciendo clic en el panel izquierdo y mirando en el lado derecho el gráfico mostrado:

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 del 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, queda claro que es una gran herramienta para recopilar, informar o guardar información sobre la actividad del sistema.
Gracias por leer y 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
