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