# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Cacti: arreglar gráficos con cortes intermitentes


Es posible que cuando en Cacti comencéis a tener una cantidad considerable de hosts monitorizandose de repente algunos de los gráficos no se generen de forma correcta y aparezcan cortes intermitentes en los que los datos a monitorizar no se han podido recolectar, ejemplo:

Cacti gráficos con cortes intermitentes

Probablemente el problema radique en que el “Poller” no tiene tiempo suficiente para recolectar los datos de todos los hosts, sobre todo si configuráis el cron cada poco tiempo. En mi caso, con un número considerable de hosts y cada 5 minutos no había manera. Usando el Poller en PHP (cmd.php), no Spine, simplemente aumentando el número de procesos concurrentes de 1 a 5 el problema ha quedado solucionado. En el caso de que uséis Spine simplemente se trata de tunear los parámetros correspondientes.

Para cmd.php, accedéis a Console > Settings > Poller y es la opción:

Maximum Concurrent Poller Processes
The number of concurrent processes to execute. Using a higher number when using cmd.php will improve performance. Performance improvements in spine are best resolved with the threads parameter

 

Instalación de plugin Thold para Cacti


Cacti Graph

Vamos a instalar el plugin Thold para el sistema de monitorización Cacti. Este plugin permite configurar alertas estableciendo unos límites para los valores que se muestran en los gráficos. Se pueden establecer alertas para los valores más altos y los más bajos y enviar avisos por correo electrónico.

Algunos ejemplos de uso podrían ser que nos avisara por correo electrónico en el momento que el tráfico de una interfaz de red superara los 50 mbit durante más de 10 minutos, o que nos avisara cuando el uso de CPU de un determinado servidor se mantuviera por encima del 80% durante 5 minutos.

En este caso, vamos a instalar THOLD sobre la versión 0.8.7.g. Antes de hacerlo, hay que tener en cuenta que este plugin tiene dependencias, antes de instalarlo hemos de instalar lo siguiente:

  • Plugin Architecture
  • Settings

Instalación de Plugin Architecture

La instalación de Plugin Architecture es lo que permite poder instalar posteriormente los plugins. Para instalarlo, debemos bajarlo del siguiente enlace:

http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz

Básicamente con esto vamos a modificar el núcleo de código de cacti para poder hacer uso posteriormente del resto de plugins. Esta modificación se puede instalar de dos modos distintos, sobreescribiendo los ficheros de cacti por los que descargamos, o aplicando los ficheros de parche (patch). La primera opción sería la que utilizaríamos en Windows y la segunda es óptima para Linux.

Ante cualquier duda, tenéis aquí la documentación sobre la instalación de Plugin Arch:

Una vez instalado Plugin Architecture y activado tal y como dice el manual (Hay que acceder a User Management y activar el Realm Permission para Plugin Management), ya debería aparecer el el menú de la consola de Cacti la opción Plugin Management.

plugin management cacti

Instalación de settings

La instalación de este plugin es realmente sencilla, únicamente hay que descargarlo y mover la carpeta “settings” a la carpeta “plugins” de nuestro Cacti. Para activar este plugin, y que aparezca como “Activo dentro del Plugin Management” probablemente necesitaréis añadir este código al fichero config.php de Cacti:

/* load up old style plugins here */
$plugins = array();
$plugins[] = 'settings';

Una vez realizado esto ya debería aparecer como activo.

Instalación de Thold

Finalmente instalamos Thold descargandolo:

http://cactiusers.org/downloads/thold.tar.gz

Copiamos la carpeta “thold” a la carpeta de plugins e importamos a la base de datos de cacti el contenido del fichero thold.sql.

mysql -u cactiuser -ppassword -D cacti < thold.sql

Ahora, si accedemos a la sección de Plugin Management debería aparecer la opción de “Activar el plugin”, una vez activado aparecerá una nueva pestaña junto con la de “Console” y “Graphs” llamada THOLD, también aparecerán nuevos apartados en el menú izquierdo donde comenzar a configurar las plantillas de threshold, las alertas específicas por dispositivo, etc.

thold

Si a pesar de esto seguís teniendo dudas, acordaos de revisar los ficheros README de cada uno de los plugins y la documentación que comento en la entrada, sino podéis comentar e intentaremos solucionar el problema.

Listado de plugins, scripts y plantillas para Cacti


Cacti

Os dejo los dos enlaces más útiles en lo que a plugins para Cacti se refiere. Son listados de plugins, el enlace al post de los foros de Cacti contiene una recopilación de todos los plugins, scripts y plantillas disponibles:

- Listado completo de Plugins, Scripts y plantillas para Cacti.
- Listado de plugins para Cacti en Debian Help.

ERROR: the RRD does not contain an RRA matching the chosen CF


Andaba instalando una plantilla XML para Cacti que tenía como fin monitorizar el consumo eléctrico de unas regletas APC, conocidas como PDU. Pues bien, al hacer debug en la plantilla de uno de los gráficos me encontraba este error:

ERROR: the RRD does not contain an RRA matching the chosen CF

RRDTool Command:

/usr/bin/rrdtool graph - \
--imgformat=PNG \
--start=-86400 \
--end=-300 \
--title="Pdu 3 - PDU Information" \
--base=1000 \
--height=120 \
--width=500 \
--alt-autoscale-max \
--lower-limit=0 \
--vertical-label="Amps" \
--slope-mode \
--font TITLE:10: \
--font AXIS:8: \
--font LEGEND:8: \
--font UNIT:8: \
DEF:a="/home/cacti/rra/pdu_3_apc_blah_load_854.rrd":apc_blah_load:AVERAGE \
DEF:b="/home/cacti/rra/pdu_3_apc_blah_load_854.rrd":apc_blah_load:MAX \
DEF:c="/home/cacti/rra/pdu_3_apc_warning_level_856.rrd":apc_warning_level:AVERAGE \
DEF:d="/home/cacti/rra/pdu_3_apc_warning_level_856.rrd":apc_warning_level:MAX \
DEF:e="/home/cacti/rra/pdu_3_apc_overload_level_857.rrd":apc_overload_level:AVERAGE \
DEF:f="/home/cacti/rra/pdu_3_apc_overload_level_857.rrd":apc_overload_level:MAX \
DEF:g="/home/cacti/rra/pdu_3_apc_overload_level_855.rrd":apc_overload_level:LAST \
DEF:h="/home/cacti/rra/pdu_3_apc_overload_level_855.rrd":apc_overload_level:MAX \
CDEF:cdefa=a,10,/ \
CDEF:cdefd=b,10,/ \
AREA:cdefa#00CF00FF:"Load\:"  \
GPRINT:cdefa:LAST:"              Current\:%8.2lf %s"  \
GPRINT:cdefa:MIN:"Min\:%8.2lf %s"  \
GPRINT:cdefd:MAX:"Max\:%8.2lf %s\n"  \
LINE3:c#F5F800FF:"Warning Threshold\:"  \
GPRINT:c:LAST:" ------->%8.0lf\n"  \
LINE3:e#FF3932FF:"Overload Threshold\:"  \
GPRINT:e:LAST:"------->%8.0lf\n"  \
LINE3:g#4444FFFF:"Low Threshold\:"  \
GPRINT:g:LAST:"        ------->%8.0lf\n"

RRDTool Says:

ERROR: the RRD does not contain an RRA matching the chosen CF

CF es una función de consolidación, y lo que sucede es que ya sea por mi versión de RRD, u otro motivo que actualmente desconozco, saltaba el error en las CF LAST, la solución, pasa por acceder a la plantilla del gráfico en cuestión y cambiar los valores LAST por AVERAGE. Quizás sea necesario tras hacer esto borrar y crear de nuevo el gráfico.

Cacti & MySQL Graph Collection 2.0: Gráficos sin datos


cacti mysql

Seguimos profundizando en el sistema de monitorización Cacti, hoy me disponía a probar distintos plugins para monitorizar el servicio MySQL, y el más adecuado parece MySQL Graph Collection 2.0. La configuración del mismo es sencilla, copias el fichero php a la carpeta de scripts e importas las plantillas XML desde la interfaz web de Cacti. Si tenéis dudas en el enlace que he puesto anteriormente tenéis más información.

Lo que quería decir en esta entrada, es que para servidores MySQL con versiones superiores a la 5.0.2, los gráficos de estadísticas de comandos y tráficos por defecto no funcionan (“mysql command statistics” y “mysql traffic“). Esto es debido a que en versiones 5.0.2 de MySQL o superiores la variable “SHOW STATUS” devuelve valores globales, mientras que en las anteriores devolvía valores de sesión. El plugin está configurado para este último caso, así que para que funcione con MySQL 5.0.2 o superior hay que realizar un pequeño cambio en el script:

  1. Editamos el fichero mysql_stats.php
  2. Buscamos alrededor de la línea 19 lo siguiente: $result_stat = @mysql_query(“SHOW STATUS”);
  3. Modificamos SHOW STATUS por SHOW /*!50002 GLOBAL */ STATUS

Más información sobre este cambio en MySQL aquí.

Bug en RRDtool 1.2.28 , texto en gráficos y leyenda


El otro día ya hablé de un problema relacionado con la visualización de gráficos en cacti, que estaba relacionado con una mala configuración de las rutas a las fuentes de rrdtool.

El problema ha vuelto a reproducirse en el sistema de monitorización Cacti que monté hace poco, y trasteando un poco encontré que existe un bug en la versión 1.2.28 de RRDtool que impide que se muestren los textos y leyenda en un gráfico.

La solución que a mi me ha funcionado, ha sido desinstalar la versión 1.2.28 que instalé via YUM (CentOS):

yum remove rrdtool.i386

Y bajar a la versión 1.2.27, con la cual el problema queda solucionado. Podéis instalar esta versión vía RPM, yo me bajé el paquete de aquí, una vez descargado lo instaláis vía RPM:

rpm -i rrdtool-1.2.27-2.i586.rpm

Y los gráficos vuelven a visualizarse correctamente ;)

Cacti: Título y leyenda (fuentes) no se muestran


Hoy me ha tocado reinstalar un sistema de monitorización cacti y me he encontrado con un problema, resulta que en los gráficos ni la leyenda, ni los títulos, ni ningún tipo de fuente se veía, ejemplo:

Pues bien, resulta que Cacti no encontraba la ruta hacia las fuentes en el sistema, en mi caso CentOS, así que me ví en la necesidad de buscar la fuente y configurarla a mano.

En mi caso, las fuentes de RRDtool estaban en esta ubicación:

/usr/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf

Una vez sabido esto, accedemos a la gestión de Cacti, concretamente a Settings -> VISUAL, y configuramos las fuentes:

Una vez salvado, deberían mostrarse los gráficos con fuentes sin problemas

Cacti Graph

Cómo instalar RRDtool en CentOS 5


RRDtool es el acrónimo de Round Robin Database tool. Se trata de una herramienta que trabaja con una base de datos que maneja planificación según Round-Robin. Esta técnica trabaja con una cantidad de datos fija, definida en el momento de crear la base de datos, y un puntero al elemento actual.

El funcionamiento es el siguiente: se trata la base de datos como si fuese un círculo, sobrescribiendo los datos almacenados con anterioridad una vez alcanzada la capacidad máxima de la misma. Esta capacidad máxima dependerá de la cantidad de información que se quiera conservar como historial.

Wikipedia

Para instalar RRDtool en CentOS 5 es necesario activar previamente los repositorios DAG, que contienen miles de paquetes para las distribuciones tipo RedHat y que no interfieren con los oficiales, hacemos lo siguiente:

Bajamos el rpm:

wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Lo instalamos:

rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Una vez hecho esto, usando el gestor de paquetes Yum podemos instalar rrdtool:

yum -y install rrdtool

Este paquete por ejemplo es necesario para la utilización del sistema de monitorización cacti.