Cacti es una aplicación que permite visualizar gráficas y estadísticas de diversos dispositivos conectados a una red y que tengan habilitado SNMP.
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 por proceso baje.
Yo lo tengo instalado y estoy sondeando unos 400 hosts (que están en internet) y la carga del sistema no me sube de 0.69, lo cual está bastante bien teniendo instalada la aplicación en un PC con 1GB de RAM, 160GB HD y un PIV HT a 3,2 GHz.
Tras un año trabajando con la aplicación, y tras varias instalaciones, he podido sufrir algunos detalles que me han dado más de un quebradero de cabeza:
- Aumento desmesurado de la carga del sistema usando el poller de php. Solucionado con cacti-spine.
- Gráficas que no se pintan con un cacti recién instalado (que por defecto pinta gráficas del localhost): este problema me lo encontré con las últimas versiones de ubuntu y con Debian 5. Se debe a que la instalación por defecto (las de siguiente, siguiente, siguiente) ya no valen y hay que elegir la versión de RRDtools que se instala (que es la opción central, la 1.2.x)
- Equipos CISCO: los equipos Cisco tienen unas mibs propias, por lo que oids universales como el uptime, el vendor y la versión de IOS, son distintos, por lo que Cacti dará error al leerlos.
- Restricciones de OIDs en un host: mis experiencias con Cacti derivan de un proyecto en el que queríamos tener monitorizadas distintas sedes, básicamente para ver la QoS del servicio. Lógicamente a un operador no le hace mucha gracia que el cliente maneje esa información, así que nos estuvieron mareando un año para que no tuviésemos el acceso. Finalmente lo logramos pero con restricciones (IPs de sondeo y ramas de información). Pues bien, cerramos 2 ramas concretas de OIDs y fue entonces cuando nos dimos cuenta que Cacti antes de solicitar un OID (programado en la herramienta por ti) a un host, solicita lo siguiente para saber que el equipo está vivo: el oid 1.3.6.1.2.1.1.1.0 que es el «router description» y el oid 1.3.6.1.2.1.1.3.0 es el «uptime. Ambos tienen que estar permitidos, ya que sin eso no se detectarán como que los hosts están «alive».
En general, la herramienta está bastante bien, 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 (de oids a sondear, gráficas a dibujar y hosts).
Lo próximo a explorar será Zabbix, de la que hablan bastante bien.
Sé el primero en comentar