Continuando con las herramientas que suelo utilizar para la operación de sistemas de información, nos vamos a fijar en Cacti, una herramienta que permite monitorizar y visualizar gráficas y estadísticas de dispositivos conectados a una red y que tengan habilitado el protocolo SNMP. El otro día revisamos Nagios, una de mis herramientas básicas para monitorizar sistemas, sin embargo, en determinados momentos, necesitamos visualizar gráficas del estado de nuestra red: ancho de banda consumido, detectar congestiones o picos de tráfico o monitorizar determinados puertos de un equipo de red.
Con Cacti podremos monitorizar cualquier equipo de red que soporte el protocolo SNMP, ya sea un switch, un router o un servidor Linux. Siempre que tengan activado el protocolo SNMP y conozcamos las MIBs con los distintos OIDs (identificadores de objeto) que podemos monitorizar y visualizar, podremos programar la colección de gráficas con las que queramos realizar el seguimiento. Cacti es una aplicación que funciona bajo entornos Apache + PHP + MySQL, por tanto, permite una visualización y gestión de la herramienta a través del navegador web. La herramienta utiliza RRDtool, que captura los datos y los almacena en una base de datos circular, permitiendo visualizar de forma gráfica los datos capturados mediante MRTG.
La instalación es bastante sencilla ya que se encuentra como paquete en casi todos los repositorios de distribuciones linux (Debian, Ubuntu, Fedora, CentOS, etc). De hecho, con sólo poner apt-get install cacti en Debian o en Ubuntu, se instalará la aplicación y todas las dependencias necesarias (MySQL, Apache, PHP, etc). La instalación básica de Cacti incluye un poller (sonda) basado en php que no está nada mal, que puede ser suficiente para una red con unos 10-12 hosts, pero que con muchos dispositivos empieza a aumentar la carga del sistema de forma preocupante. Para solventar este problema existe un paquete adicional, cacti-spine, que mejora sensiblemente el rendimiento de la aplicación; ya que en vez de realizar un sondeo secuencial por cada host, y por cada proceso de poller definido (que puede haber más de uno en paralelo), permite, además del multiproceso, abrir múltiples hilos de conexión por cada proceso, lo que hace que la carga del sistema baje.
El funcionamiento de Cacti es bastante sencillo, la aplicación sondea a cada uno de los hosts que tiene configurados solicitando los valores de los parámetros, OIDs, que tiene definidos y almacenando el valor. El período de sondeo es configurable por el administrador, éste determinará, entre otros factores, la precisión de la información a visualizar, ya que un período bajo aumentará la cantidad de datos capturados y, por tanto, la resolución de la representación gráfica. Sin embargo, un período corto de muestreo aumentará la carga del sistema.
En general, Cacti es una herramienta que está bastante bien y permite bastante juego, existen bastantes templates hechos (para distintos fabricantes, equipos, servicios, etc), y si no se encuentra lo que se busca, siempre que se tengan las mibs de los fabricantes, uno se puede construir sus templates a medida (OIDs de los que extraer datos, gráficas a dibujar y hosts completos), por lo que la flexibilidad de uso es total. Particularmente le tengo un especial cariño y es una de mis herramientas favoritas. Por cierto, GPLI tiene un plugin para Cacti que permite la visualización de las gráficas de un equipo, generadas por Cacti, desde la ficha de inventario del helpdesk de GPLI, una funcionalidad bastante interesante para integrar aplicaciones.
Una de las próximas herramientas que quiero explorar es Zabbix, de la que hablan bastante bien.