SAR: Informes de CPU, memoria y disco en GNU/Linux
SAR es una herramienta clásica de los sistemas UNIX y GNU/Linux. SAR significa “System Activity Report”, esto es, en el idioma de Cervantes y Cortázar: Informe de actividad del sistema.
Se utiliza para recopilar, informar y guardar datos de la CPU, memoria y lectura/escritura del disco. El comando SAR genera los informes sobre la marcha, además también se puede configurar para guardar dichos informes en ficheros de registro.
Informes de CPU, memoria y disco en GNU/Linux con SAR
Para la entrada voy a utilizar un sistema Linux Mint LMDE 3, pero los ejemplos deberían servir para la mayoría de las distribuciones que tengan esta herramienta de SYSSTAT instalada.
Si no lo tenemos instalada, realizamos el siguiente paso:
#En sistemas RHEL, Centos y ScientificLinux
sudo yum -y install sysstat
# En sistemas Debian, Ubuntu o Linux Mint
sudo apt install sysstat
# En sistemas Fedora
sudo dnf install sysstat
# En sistemas SUSE o Opensuse mediante YAST o
sudo zypper -i sysstat
Una vez instalado “sysstat”, se creará el servicio con el mismo nombre, que debemos añadir al inicio:
systemctl enable sysstat
systemctl start sysstat
En sistemas antiguos debemos utilizar “chkconfig”, por ejemplo:
chkconfig –level 3 sysstat on
service sysstat start
Además, este servicio añade una serie de tareas al crontab, lo podemos comprobar:
root@turbolinuxpc:/etc/cron.d# cat sysstat
# The first element of the path is a directory where the debian-sa1
# script is located
PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
# 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
Por último que no menos importante en esta parte, habilitamos la recopilación de datos, modificando el fichero de configuración «/etc/default/sysstat»
sudo vi /etc/default/sysstat
cambiamos ENABLED="false" to ENABLED="true"
Modos de uso de SAR
Veamos algunos ejemplos, el primero el uso más básico, que nos muestre información del sistema cada 2 segundos hasta cinco veces:
sar 2 5
Con el resultado:
davidochobits@turbolinuxpc:~$ sar 2 5
Linux 4.9.0-8-amd64 (turbolinuxpc) 12/03/19 _x86_64_ (8 CPU)
19:00:00 CPU %user %nice %system %iowait %steal %idle
19:00:02 all 0,31 0,06 0,50 0,37 0,00 98,75
19:00:04 all 0,06 0,06 0,00 0,13 0,00 99,75
19:00:06 all 0,12 0,00 0,12 0,12 0,00 99,62
19:00:08 all 0,19 0,06 0,06 0,19 0,00 99,50
19:00:10 all 0,13 0,06 0,13 0,13 0,00 99,56
Media: all 0,16 0,05 0,16 0,19 0,00 99,442
Si el tanto por ciento de espera (iowait) de E/S es más que cero, durante un periodo largo, entonces podemos considerar que hay algún cuello de botella en el sistema de E/S, bien de disco bien de red.
Guardar la información de SAR en un fichero
Para logar el objetivo de guardar la información de SAR en un fichero, utilizando la salida standard, debemos utilizar el parámetro “-o”
sar 2 5 -o /tmp/datos > /dev/null 2>&1
Así más adelante podemos consultar la información:
sar -f /tmp/datos
Podemos un vídeo generado con Peek, del que hablamos recientemente:
Generar informe de memoria
Para generar un reporte extenso centrado en el uso de la memoria, usaremos el parámetro “-r”, como sigue:
[root@localhost ~]# sar -r 2 5
Con el resultado:
davidochobits@turbolinuxpc:~$ sar -r 2 5
Linux 4.9.0-8-amd64 (turbolinuxpc) 12/03/19 _x86_64_ (8 CPU)
19:02:05 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
19:02:07 5583852 2525752 31,15 57608 883476 5079048 30,59 1619212 704296 124
19:02:09 5584072 2525532 31,14 57608 883576 5079048 30,59 1619016 704396 124
19:02:11 5583948 2525656 31,14 57608 883512 5079048 30,59 1619112 704328 124
19:02:13 5584072 2525532 31,14 57608 883512 5079048 30,59 1619112 704328 124
19:02:15 5584072 2525532 31,14 57608 883512 5079048 30,59 1619180 704328 124
Media: 5584003 2525601 31,14 57608 883518 5079048 30,59 1619126 704335 12
“kbcommit” y “%commit” es la memoria general utilizada, incluida la memoria RAM y la transaccional o SWAP
Crear reporte de los dispositivos de bloque
Si queremos crear un informe dedicado a los dispositivos de bloque, esto es, mayormente los discos, debemos utilizar el parámetro “-d” Si además le añadimos el parámetro “-p”, la salida será mucho más legible.
sar -d -p 2 4
Veamos el resultado:
davidochobits@turbolinuxpc:~$ sar -d -p 2 4
Linux 4.9.0-8-amd64 (turbolinuxpc) 12/03/19 _x86_64_ (8 CPU)
19:03:18 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
19:03:20 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
19:03:20 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
19:03:22 sda 2,50 0,00 140,00 56,00 0,00 0,00 0,00 0,00
19:03:22 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
19:03:24 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
19:03:24 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
19:03:26 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Media: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Media: sda 0,62 0,00 35,00 56,00 0,00 0,00 0,00 0,00
Informe con estadísticas de red
Si utilizamos el parámetro “-n”, generaremos un reporte con toda la actividad de la red reciente:
Por ejemplo:
sar -n ALL
Consultar los registros de SAR
Los registros por defecto se almacenan en la ruta “/var/log/sysstat”, utilizando el valor “-f”, podemos leer los ficheros de registro:
sar -r -f /var/log/sysstat/
Fuentes consultadas:
Linuxtechi.com – Generate CPU, Memory and I/O report using SAR command