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