Skip to main content
Ejemplos prácticos con sar (Sysstat) para la supervisión del rendimiento de UNIX / Linux

Ejemplos prácticos con sar (Sysstat) para la supervisión del rendimiento de UNIX / Linux

Con sar se puede monitorizar en tiempo real el rendimiento de nuestro sistema (CPU, memoria, IO…), además de poder recopilar de forma continua estadísticas de la misma.

 Bienvenidos a un nuevo post en ByteMind, en este caso vamos a mostrar varios ejemplos prácticos con la utilidad sar para supervisar el rendimiento de nuestro sistema basado en Linux o Unix.

Con sar se puede monitorizar en tiempo real el rendimiento de nuestro sistema (CPU, memoria, IO…), además de poder recopilar de forma continua los datos de rendimiento, almacenarlos y realizar análisis históricos con el fin de identificar problemas.

Sar es parte del paquete sysstat y en este post veremos como instalar esta utilidad y como monitorizar diferentes estadísticas que recogemos en el siguiente listado:

  • Uso colectivo de la CPU
  • Estadísticas individuales de CPU
  • Memoria utilizada y disponible
  • Espacio de intercambio utilizado y disponible
  • Actividades generales de I/O del sistema
  • Actividades de I/O de dispositivos individuales
  • Estadísticas de cambio de contexto
  • Ejecutar cola y promedio de carga de datos
  • Estadísticas de red
  • Informe de datos en una franja horaria específica

 

Instalación

La instalación de sysstat podemos hacerla de dos formas, desde paquete o desde el origen compilando previamente el código, para ello vamos a ver a continuación las dos opciones.

 

Instalación paquete Sysstat

Dependiendo de la distribución utilizada instalaremos el paquete con un comando u otro.

En el caso de distribuciones basadas en Debian:

En el caso de distribuciones basadas en RedHat:

Otra opción, para los que usen distribuciones basadas en RedHat es la instalación por medio del paquete rpm que se puede descargar desde la web oficial en el siguiente enlace e instalar con el siguiente comando:

 

Instalación desde source

Lo primero será descargar el paquete desde la web oficial en el siguiente enlace, podemos utilizar wget para ello:

Descomprimimos el mismo:

Accedemos al directorio

Y procederemos con la instalación, el primer paso será configurar el paquete

Utilizamos la opción –enable-install-cron para que automáticamente nos configure la tarea encargada de generar las estadísticas a diario y posteriormente lo compilamos e instalamos

 

Completada la instalación podemos ver la versión con el siguiente comando:

 

Utilidades de Sysstat

Las siguientes son las otras utilidades de sysstat.

  • sar           -> recopila y muestra TODAS las estadísticas de actividades del sistema.
  • sadc         -> significa «recopilador de datos de actividad del sistema». Esta es la herramienta de backend sar que realiza la recopilación de datos.
  • sa1           -> almacena las actividades del sistema en un archivo de datos binarios. sa1 depende de sadc para este propósito y se ejecuta desde cron.
  • sa2           -> crea un resumen diario de las estadísticas recopiladas y se ejecuta desde cron.
  • sadf          -> puede generar informes sar en CSV, XML y varios otros formatos. Se utiliza principalmente para integrar datos sar con otras herramientas.
  • iostat       -> genera estadísticas de CPU, I/O
  • mpstat     -> muestra estadísticas de la CPU.
  • pidstat     -> estadísticas basadas en la identificación del proceso (PID)
  • nfsiostat  -> muestra estadísticas de I/O NFS.
  • cifsiostat -> genera estadísticas CIFS.

Este artículo se centra en los fundamentos de sysstat y la utilidad sar.

 

Recolectar estadísticas utilizando cron: sa1 y sa2

Creamos el archive sysstat en el directorio /etc/cron.d para especificar las tareas de recopilación de datos históricos de sar con el siguiente contenido

Si ha instalado sysstat desde la fuente, la ubicación predeterminada de sa1 y sa2 es /usr/local/lib/sa.

Si ha instalado utilizando su método de actualización de distribución (por ejemplo: yum, dnf o apt), la ruta sería /usr/lib/sa/sa1 y /usr/lib/sa/sa2.

Pasamos a explicar las dos líneas incluidas en nuestro fichero de cron:

/usr/local/lib/sa/sa1

  • Esta tarea se ejecutará cada 10 minutos y recopilará datos sar para referencia histórica.
  • Si desea recopilar estadísticas sar cada 5 minutos, cambie */10 a */5 en el archivo /etc/cron.d/sysstat anterior.
  • Esto escribe los datos en el archivo /var/log/sa/sa{dia_del_mes}. El archivo sa{dia_del_mes} es un archivo binario. No puede ver su contenido abriéndolo en un editor de texto.
  • Por ejemplo, si hoy es el día 26 del mes, sa1 escribe los datos sar en /var/log/sa/sa26
  • Puede pasar dos parámetros a sa1: intervalo (en segundos) y conteo.
  • En el ejemplo de crontab anterior: sa1 1 1 significa que sa1 recopila datos sar 1 vez con un intervalo de 1 segundo (por cada 10 minutos).

/usr/local/lib/sa/sa2

  • Esta tarea se ejecuta cerca de la medianoche (a las 23:50) para crear el informe de resumen diario de los datos sar.
  • sa2 crea el archivo /var/log/sa/sar{dia_del_mes} (tenga en cuenta que esto es diferente al archivo sa{dia_del_mes} creado por sa1). Este archivo sar{dia_del_mes} creado por sa2 es un archivo ascii que puede ver en un editor de texto.
  • Esto también eliminará los archivos sa{dia_del_mes} que son más antiguos que una semana. Por lo tanto, escriba un script de shell rápido que se ejecute todas las semanas para copiar los archivos /var/log/sa/* en algún otro directorio para realizar análisis de datos sar históricos.

 

Ejemplos prácticos de uso de Sar

Hay dos formas de invocar sar.

  1. sar seguido de una opción (sin especificar un archivo de datos ). Esto buscará el archivo de datos del día actual e informará los datos de rendimiento que se registraron hasta ese punto para el día actual.
  2. sar seguido de una opción, y además especificando un archivo de datos usando la opción -f. Esto informará los datos de rendimiento para ese día en particular.

En todos los ejemplos a continuación, explicaremos cómo ver ciertos datos de rendimiento para el día actual. Para buscar un día específico, agregue «-f /var/log/sa/sa{dia_del_mes}» al final del comando sar.

Todo comando sar tendrá lo siguiente como primera línea en su salida.

  • Linux 3.10.0-862.el7.x86_64 – Versión del kernel de Linux del sistema.
  • (centosbytemind): el nombre de host donde se recopilaron los datos sar.
  • 02/04/2020: la fecha en que se recopilaron los datos sar.
  • _x86_64_ – La arquitectura del sistema
  • (8 CPU): número de CPU disponibles en este sistema. En sistemas multinúcleo, esto indica el número total de núcleos.

 

Uso de CPU de TODAS las CPU

Proporciona el uso de CPU acumulativo en tiempo real de todas las CPU. 

Las siguientes son algunas variaciones:

  • sar -u Muestra el uso de CPU para el día actual que se recopiló hasta ese momento.
  • sar -u 1 3 Muestra el uso de la CPU en tiempo real cada 1 segundo durante 3 veces.
  • sar -u ALL Igual que «sar -u» pero muestra campos adicionales.
  • sar -u ALL 1 3 Igual que «sar -u 1 3» pero muestra campos adicionales.
  • sar -u -f /var/log/sa/sa10 Muestra el uso de la CPU para el día 10 del mes desde el archivo sa10.

 

Uso de CPU individual

Si tiene 4 núcleos en la máquina y desea ver qué están haciendo los núcleos individuales, podemos hacerlo de la siguiente forma.

«-P ALL» indica que debe mostrar estadísticas para TODOS los núcleos individuales.

En el siguiente ejemplo en la columna «CPU» 0, 1, 2 y 3 indica los números de núcleo de CPU correspondientes.

«-P 1» indica que debe mostrar estadísticas solo para el segundo núcleo. (Tenga en cuenta que el número de núcleo comienza desde 0).

Las siguientes son algunas variaciones:

  • sar -P ALL Muestra el uso de CPU desglosado por todos los núcleos para el día actual.
  • sar -P ALL 1 3 Muestra el uso de CPU en tiempo real para TODOS los núcleos cada 1 segundo durante 3 veces (desglosado por todos los núcleos).
  • sar -P 1 Muestra el uso de CPU para el núcleo número 1 para el día actual.
  • sar -P 1 1 3 Muestra el uso de CPU en tiempo real para el número central 1, cada 1 segundo durante 3 veces.
  • sar -P ALL -f /var/log/sa/sa10 Muestra el uso de la CPU desglosado por todos los núcleos para el día 10 del mes desde el archivo sa10.

 

Memoria libre y usada

Esto informa las estadísticas de memoria. «1 3» informa por cada 1 segundo un total de 3 veces. 

Lo más probable es que se centre en «kbmemfree» y «kbmemused» para la memoria libre y usada.

Algunas variaciones serían las siguientes:

  • sar -r
  • sar -r 1 3
  • sar -r -f /var/log/sa/sa10

 

Espacio de intercambio utilizado

Esto informa las estadísticas de intercambio. «1 3» informa por cada 1 segundo un total de 3 veces. 

Si «kbswpused» y «% swpused» están en 0, entonces su sistema no está intercambiando.

Algunas variaciones serían las siguientes:

  • sar -S
  • sar -S 1 3
  • sar -S -f / var / log / sa / sa10

Notas:

  • Use «sar -R» para identificar el número de páginas de memoria liberadas, utilizadas y almacenadas en caché por segundo por el sistema.
  • Use «sar -H» para identificar las páginas enormes (en KB) que se utilizan y están disponibles.
  • Use «sar -B» para generar estadísticas de paginación. es decir, número de KB paginado (y fuera) del disco por segundo.
  • Use «sar -W» para generar estadísticas de intercambio de páginas. es decir, cambio de página (y fuera) por segundo.

 

Actividades generales de I/O

Esto informa las estadísticas de I/O. «1 3» informa por cada 1 segundo un total de 3 veces.

Los siguientes campos se muestran en el ejemplo a continuación.

  • tps: transacciones por segundo (esto incluye lectura y escritura)
  • rtps – Leer transacciones por segundo
  • wtps: escribir transacciones por segundo
  • pan/s – Bytes leídos por segundo
  • bwrtn/s – Bytes escritos por segundo

Algunas variaciones serían las siguientes:

  • sar -b
  • sar -b 1 3
  • sar -b -f / var / log / sa / sa10

Nota: 

  • Use «sar -v» para mostrar el número de manejadores de inodo, manejadores de archivos y pseudo terminales utilizados por el sistema.

 

Actividades de I/O del dispositivo de bloque individual

Para identificar las actividades de los dispositivos de bloque individuales (es decir, un punto de montaje específico, o LUN, o partición), use «sar -d»

En el ejemplo anterior, «DEV» indica el dispositivo de bloque específico.

Por ejemplo: «dev120-1» significa un dispositivo de bloque con 120 como número mayor y 1 como número menor.

El nombre del dispositivo (columna DEV) puede mostrar el nombre real del dispositivo (por ejemplo: sda, sda1, sdb1, etc.), si usa la opción -p (impresión bonita) como se muestra a continuación.

Algunas variaciones serían las siguientes:

  • sar -d
  • sar -d 1 3
  • sar -d -f / var / log / sa / sa10
  • sar -p -d

 

Mostrar cambio de contexto por segundo

Esto informa el número total de procesos creados por segundo y el número total de cambios de contexto por segundo. «1 3» informa por cada 1 segundo un total de 3 veces.

Algunas variaciones serían las siguientes:

  • sar -w
  • sar -w 1 3
  • sar -w -f / var / log / sa / sa10

 

Los informes ejecutan la cola y el promedio de carga

Esto informa el tamaño de la cola de ejecución y el promedio de carga de los últimos 1 minuto, 5 minutos y 15 minutos. «1 3» informa por cada 1 segundo un total de 3 veces.

Nota: La columna «blocked» muestra la cantidad de tareas que están actualmente bloqueadas y en espera de que se complete la operación de I/O.

Algunas variaciones serían las siguientes:

  • sar -q
  • sar -q 1 3
  • sar -q -f /var/log/sa/sa10

 

Informe de estadísticas de red

Esto informa varias estadísticas de red. Por ejemplo: número de paquetes recibidos (transmitidos) a través de la tarjeta de red, estadísticas de falla de paquetes, etc. «1 3» informa por cada 1 segundo un total de 3 veces.

KEYWORD puede ser uno de los siguientes:

  • DEV: muestra las estadísticas vitales de los dispositivos de red para eth0, eth1, etc.,
  • EDEV: muestra estadísticas de fallas de dispositivos de red
  • NFS: muestra las actividades del cliente NFS
  • NFSD: muestra las actividades del servidor NFS
  • SOCK – Muestra los enchufes en uso para IPv4
  • IP: muestra el tráfico de red IPv4
  • EIP: muestra errores de red IPv4
  • ICMP: muestra el tráfico de red ICMPv4
  • EICMP: muestra errores de red ICMPv4
  • TCP: muestra el tráfico de red TCPv4
  • ETCP: muestra errores de red TCPv4
  • UDP: muestra el tráfico de red UDPv4
  • SOCK6, IP6, EIP6, ICMP6, UDP6 son para IPv6
  • TODOS: muestra toda la información anterior. La salida será muy larga.

 

Informe de datos Sar utilizando la hora de inicio

Cuando ve datos sar históricos desde el archivo /var/log/sa/saXX usando la opción «sar -f», muestra todos los datos sar para ese día específico a partir de las 12:00 am de ese día.

Usando la opción «-s hh:mi:ss», puede especificar la hora de inicio. Por ejemplo, si especifica «sar -s 10:00:00», mostrará los datos sar a partir de las 10 a.m. (en lugar de comenzar a partir de la medianoche) como se muestra a continuación.

Puede combinar la opción -s con otra opción sar.

Por ejemplo, para informar el promedio de carga el día 2 de este mes a partir de las 10 de la mañana, combine las opciones -q y -s como se muestra a continuación.

No hay opción para limitar el tiempo final. Solo tiene que ser creativo y usar el comando head como se muestra a continuación.

Por ejemplo, a partir de las 10 a.m., si desea ver 7 entradas, debe canalizar la salida anterior a «head -n 10».

 

 

Esto es todo por ahora, espero les sea de utilidad y les haya gustado. Si tienen algún aporte al respecto, comentario o duda expónganlo en la sección de comentarios de esta página. Nos vemos en el siguiente post.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *