Este artículo explica cómo instalar y configurar sysstat en Linux (no confundir con SYSSTAT) para monitorear la actividad y rendimiento del sistema (memoria, CPU, E/S, redes, etc.). Además demuestra la instalación y configuración de Sysstat Graph, una herramienta que genera gráficos en formato HTML a partir de los datos de rendimiento recolectados por sysstat.



Instalar y configurar SYSSTAT

En sistemas Debian y derivados, es posible instalar sysstat simplemente ejecutando:

root@linuxito:~# apt-get install sysstat

El paquete sysstat contiene herramientas para monitorear el rendimiento del sistema y su actividad. Contiene varios utilitarios, que normalmente están presentes en los sistemas Unix comerciales, y herramientas que se pueden ejecutar de manera programada (cron) para recolectar datos históricos de rendimiento y actividad.

Una vez instalado, en los sistemas Debian es necesario habilitarlo editando el archivo /etc/default/sysstat:

root@linuxito:~# nano /etc/default/sysstat

Establecer la variable ENABLED en "true":

ENABLED="true"

Luego verificar que las tareas programadas para recolectar estadísticas de actividad se encuentren habilitadas:

root@linuxito:~# service sysstat status
[ ok ] sadc cron jobs are enabled.

Por defecto, sysstat recolecta información cada 10 minutos. Es posible aumentar la frecuencia editando el archivo /etc/cron.d/sysstat:

root@linuxito:~# nano /etc/cron.d/sysstat

Por ejemplo, para ejecutar cada 5 minutos:

# Activity reports every 10 minutes everyday
*/5 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

Luego de algunos días corriendo, sysstat genera archivos con datos históricos dentro del directorio /var/log/sysstat:

root@linuxito:~# ll /var/log/sysstat/
total 23M
-rw-r--r-- 1 root root 1.5M Nov  4 00:00 sa03
-rw-r--r-- 1 root root 1.5M Nov  5 00:00 sa04
-rw-r--r-- 1 root root 1.5M Nov  6 00:00 sa05
-rw-r--r-- 1 root root 1.5M Nov  7 00:00 sa06
-rw-r--r-- 1 root root 1.5M Nov  8 00:00 sa07
-rw-r--r-- 1 root root 1.5M Nov  9 00:00 sa08
-rw-r--r-- 1 root root 1.5M Nov 10 00:00 sa09
-rw-r--r-- 1 root root 1.5M Nov 11 00:00 sa10
-rw-r--r-- 1 root root 549K Nov 11 08:50 sa11
-rw-r--r-- 1 root root 1.3M Nov  4 05:09 sar03
-rw-r--r-- 1 root root 1.3M Nov  5 05:09 sar04
-rw-r--r-- 1 root root 1.3M Nov  6 05:09 sar05
-rw-r--r-- 1 root root 1.4M Nov  7 05:09 sar06
-rw-r--r-- 1 root root 1.3M Nov  8 05:09 sar07
-rw-r--r-- 1 root root 1.3M Nov  9 05:09 sar08
-rw-r--r-- 1 root root 1.3M Nov 10 05:09 sar09
-rw-r--r-- 1 root root 1.3M Nov 11 05:09 sar10

Los archivos saXX contienen los datos crudos recolectados para cada día. En cambio, los archivos sarXX son un reporte diario en un formato amigable para el ser humano:

root@linuxito:~# file /var/log/sysstat/sa09
/var/log/sysstat/sa09: data
root@linuxito:~# file /var/log/sysstat/sar09
/var/log/sysstat/sar09: ASCII text

Los archivos saXX son de un formato binario interpretable sólo por las herramientas de sysstat, o herramientas desarrolladas por terceros. En cambio los archivos sarXX son de texto plano y pueden ser interpretados con cualquier herramienta:

root@linuxito:~# head /var/log/sysstat/sar09
Linux XP (linuxito)   2016-11-09      _x86_64_        (24 CPU)

12:00:01 AM     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest     %idle
12:05:01 AM     all      0.60      0.00      0.12      0.00      0.00      0.00      0.00      0.00     99.28
12:05:01 AM       0      0.69      0.00      0.18      0.00      0.00      0.00      0.00      0.00     99.13
12:05:01 AM       1      0.80      0.00      0.12      0.00      0.00      0.00      0.00      0.00     99.07
12:05:01 AM       2      0.63      0.00      0.10      0.00      0.00      0.00      0.00      0.00     99.27
12:05:01 AM       3      0.27      0.00      0.06      0.00      0.00      0.00      0.00      0.00     99.66
12:05:01 AM       4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:05:01 AM       5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

El número detrás de cada archivo identifica el día del mes actual.

Instalar y configurar Sysstat Graph

Sysstat Graph es una herramienta desarrollada por Peter Mescalchin, con el objetivo de visualizar de forma gráfica y en un navegador Web (formato HTML), los datos de los reportes de actividad diarios generados por la colección de herramientas de monitoreo de SYSSTAT. Esta herramienta está desarrollada en PHP y mantiene su propia base de datos en formato JSON, con los datos que obtiene a partir de examinar los archivos saXX.

Descargar Sysstat Graph:

root@linuxito:~# wget http://magnetikonline.com/sysstatgraph/sysstatgraph-0.4.zip
--2016-11-11 08:43:44--  http://magnetikonline.com/sysstatgraph/sysstatgraph-0.4.zip
Resolving magnetikonline.com (magnetikonline.com)... 223.27.21.73
Connecting to magnetikonline.com (magnetikonline.com)|223.27.21.73|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14845 (14K) [application/zip]
Saving to: `sysstatgraph-0.4.zip'

100%[=================================================================>] 14,845      65.0K/s   in 0.2s    

2016-11-11 08:43:45 (65.0 KB/s) - `sysstatgraph-0.4.zip' saved [14845/14845]

Descomprimir el paquete en un directorio accesible vía Web:

root@linuxito:~# mkdir /var/www/linuxito.com/stats
root@linuxito:~# cd /var/www/linuxito.com/stats
root@linuxito:/var/www/linuxito.com/stats# unzip ~/sysstatgraph-0.4.zip 
Archive:  /root/sysstatgraph-0.4.zip
   creating: img/
  inflating: img/valuenotch.gif      
  inflating: img/timenotch.gif       
  inflating: img/open.gif            
  inflating: buildjsonstructure.php  
  inflating: config.php              
  inflating: generatestatdata.php    
  inflating: importstatfiledata.php  
  inflating: index.php               
  inflating: rendergraph.js          
  inflating: style.css               
  inflating: sysstatgraph.js         
  inflating: tocbox.js               

Luego setear los permisos de forma adecuada, para que el servidor Apache/Nginx pueda acceder a los archivos de Sysstat Graph:

root@linuxito:/var/www/linuxito.com/stats# chown -R www-data:www-data *
root@linuxito:/var/www/linuxito.com/stats# ll
total 64K
-rw-r--r-- 1 www-data www-data 1.8K Apr  5  2011 buildjsonstructure.php
-rw-r--r-- 1 www-data www-data  229 Apr  6  2011 config.php
-rw-r--r-- 1 www-data www-data 3.4K Apr  6  2011 generatestatdata.php
drwxr-xr-x 2 www-data www-data 4.0K May 27  2010 img
-rw-r--r-- 1 www-data www-data 8.9K Apr  5  2011 importstatfiledata.php
-rw-r--r-- 1 www-data www-data 1.2K Apr  5  2011 index.php
-rw-r--r-- 1 www-data www-data  14K Apr  5  2011 rendergraph.js
-rw-r--r-- 1 www-data www-data 2.6K Jan 13  2011 style.css
-rw-r--r-- 1 www-data www-data 6.4K Apr  5  2011 sysstatgraph.js
-rw-r--r-- 1 www-data www-data 2.4K Apr  5  2011 tocbox.js

El siguiente paso consiste en configurar la herramienta:

root@linuxito:/var/www/linuxito.com/stats# nano config.php 

Especificar el directorio donde SYSSTAT almacena sus archivos de log saXX (los cuales deben ser accesibles por el servidor Web), y agregar las interfaces de red que se desean visualizar (por ejemplo "venet0"):

<?php
// config.php



define('SYSSTATDATAPATH','/var/log/sysstat');
define('JSONSTRUCTUREFILENAME','data.json');
define('NETWORKINTERFACELIST',serialize(array('lo','venet0')));

Crear una base da datos vacía y configurar sus permisos (debe ser modificable por el servidor Web):

root@linuxito:/var/www/linuxito.com/stats# touch data.json
root@linuxito:/var/www/linuxito.com/stats# chown www-data:www-data data.json 
root@linuxito:/var/www/linuxito.com/stats# chmod u+w data.json 
root@linuxito:/var/www/linuxito.com/stats# ll data.json 
-rw-r--r-- 1 www-data www-data 0 Nov 11 08:49 data.json

¡Listo! Acceder a la URL adecuada para ver las estadísticas de rendimiento del sistema:

De esta forma, es posible visualizar los datos recolectados por SYSSTAT de manera mucho más amigable y simple. Espero que les guste :)

Por último, es recomendable proteger el acceso al directorio Web (Digest) para que no sea accesible de manera indiscriminada desde Internet.

Referencias

SYSSTAT - Documentation

SYSSTAT - sa1 manual page

SYSSTAT - sar manual page


Tal vez pueda interesarte


Compartí este artículo