Instalación de la herramienta de monitorización Cacti en FreeBSD

Hola,

El otro día os recomendé Cacti, ya que por lo que pude ver, tenía muy buena pinta. Además, al estar basado en RRDTool, un motor de representación muy extendido y popular, la aplicación tenía que ser al menos, digna de probar.

He estado mirando los manuales, y la verdad, quizás las versiones Unix sean algo complejillas para echar a andar. La Windows no me preocupa, ya que tiene mucha menos miga. Tampoco me preocupa la Unix, porque el usuario que suele instalar estas herramientas suele tener conocimiento para aplicar el DIY :)

De todos modos, os quiero dejar un resumen de pasos a seguir para hacer funcionar Cacti. Son pasos explicados para FreeBSD, así que los usuarios de Linux y otros derivados Unix deben tener en cuenta las posibles variaciones.

Nota: Para poder emplear Cacti, nos hará falta un servidor Apache con soporte PHP, y una base de datos MySQL. A título orientativo, en mi caso las versiones son:

* FreeBSD nas 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7
* Apache/2.2.8 (FreeBSD) with Suhosin-Patch
* PHP/4.4.8
* MySQL Server version 5.0.45

1. Descarga de los paquetes

La manera fácil es recurrir a instalación desde repositorios en Internet

pkg_add -r cacti

2. Preparación de la base de datos

En este punto vamos a necesitar una base de datos tipo SQL. Se recomienda MySQL.

2.1 Creación de la base de datos cacti

mysqladmin –user=root create cacti

2.2 Creamos un usuario (por ejemplo, cactiuser) con su correspondiente clave para la base de datos cacti que acabamos de crear

Nos identificamos ante el servidor SQL mediante la sentencia mysql -u root -p

mysql> CREATE USER ‘cactiuser’@’localhost’ IDENTIFIED BY ‘clave_que_elijamos’;

2.3 Dotamos de los correspondientes permisos y hacemos refresco de los mismos

GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ‘clave_que_elijamos’;
mysql> FLUSH PRIVILEGES;

2.4 Verificamos que hemos hecho las cosas bien

mysql> SHOW GRANTS FOR ‘cactiuser’@’localhost’;

Grants for cactiuser@localhost

GRANT USAGE ON *.* TO ‘cactiuser’@’localhost’ IDENTIFIED BY PASSWORD ‘*aqui_saldra_el_hash_de_la_clave_escogida’
GRANT ALL PRIVILEGES ON `cacti`.* TO ‘cactiuser’@’localhost’

2.5 Importamos a la base de datos cacti el contenido del fichero /usr/local/share/cacti/cacti.sql, creado en la instalación.

mysql -u root -p cacti < /usr/local/share/cacti/cacti.sql

3. Editamos el fichero que gestiona la conexión a la BBDD MySQL

Para ello, mediante editor, editamos /usr/local/share/cacti/include/db-settings.php

$database_type = «mysql»;
$database_default = «cacti»;
$database_hostname = «localhost»;
$database_username = «cactiuser»;
$database_password = «la_clave_elegida»;
$database_port = «3306»;

4. Preparación de Apache, para facilitar el acceso vía navegador

4.1 Detenemos el servidor

/usr/local/sbin/apachectl stop

4.2 Editamos el fichero de configuración (en FreeBSD, este fichero estará con toda probabilidad en /usr/local/etc/apache/httpd.conf) y añadimos un alias del tipo Alias /cacti «/usr/local/share/cacti/». Recomiendo ponerlo en la sección Aliases del fichero de configuración, ya que si lo ponemos antes de la carga de módulos, al rearrancar el servidor dará error.

4.3 Dependiendo de la distribución, no es descartable tener que habilitar una directiva de directorio para Cacti, de modo que evitemos errores HTTP 403


    Order allow,deny
    Allow from all
 

4.4 Arrancamos el servidor nuevamente

/usr/local/sbin/apachectl start

5. Ajustes en PHP

Para que cacti no de erores fatales, hay que hacer algunas cosas en PHP. Aquí se abre la veda al auténtico DIY, ya que cada caso es un mundo. Dependiendo de la distribución elegida y del motor PHP en funcionamiento, aquí la combinatoria es amplia. En algunas instalaciones, habrá que asignar un directorio de extensiones, añadiendo a /usr/local/etc/php.ini la siguiente línea:

extension_dir = /usr/local/etc/php.d

En este punto se hace recomendable ojear lo que dice el desarrollador sobre PHP, y tirar de la documentación PHP para ir resolviendo problemas.

5.2 Verificar que las extensiones y PHP están en sintonía

En mi caso, algunas extensiones necesarias no cargaban bien.

PHP Warning: PHP Startup: snmp: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0

Como se puede comprobar, las API eran distintas. Así, recomiendo reinstalar las extensiones si es necesario (especialmente las necesarias, las de snmp y MySQL), aunque si habéis instalado desde cero tanto PHP como extensiones, deberían ser coincidentes.

5.3 Dar soporte a las extensiones

Para ello, añadiremos a php.ini las líneas:

extension=mysql.so
extension=snmp.so

En mi caso, que tengo operando un PHP 4.4.8, que ya está discontinuado, estas modificaciones se hacen en /usr/local/etc/php/extensions.ini. En PHP 4.4.8, los ficheros principales están ubicados en:

Configuration File (php.ini) Path /usr/local/etc
Scan this dir for additional .ini files /usr/local/etc/php
additional .ini files parsed /usr/local/etc/php/extensions.ini

6. Añadimos un cron de actualización en /etc/crontab

*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1

Este cron podemos modificarlo a nuestro gusto, para ejecutar el poller cuando queramos. Este ejemplo lanza el poller cada 5 minutos.

7. Añadimos a nuestro fichero /etc/rc.conf instrucciones para la carga de los demonios snmpd y snmptrapd en el arranque

snmpd_enable=»YES»
snmpd_flags=»-a -p /var/run/snmpd.pid»
snmptrapd_enable=»YES»
snmptrapd_flags=»-a -p /var/run/snmptrapd.pid»

Estos demonios son necesarios ya que Cacti, al funcionar en RRDTool, emplean el protocolo Simple Network Management Protocol (snmp)

8. Ajustamos permisos y creamos directorio de logs

chown -R cacti /usr/local/share/cacti/rra/

chown -R cacti /usr/local/share/cacti/log

9. Accedemos vía navegador, y configuramos la aplicación

Para ello accedemos vía http://localhost/cacti/. Se abrirán algunos cuadros de diálogo para la instalación. Revisamos parámetros, y vamos pulsando «Next». Nos detendremos cuando aparezca el cuadro de diálogo de elementos y dependencias requeridos, y su ubicación:

cacti

Huelga decir que lo que no aparezca como [FOUND] debe ser instalado. Si todo está bien, aparecerá la pantalla de login:

cacti

Nos autenticamos com las credenciales admin/admin, se nos fuerza a cambiar la contraseña, y entramos a la interfaz.

10. Creación de dispositivos y gráficas de monitorización

He aquí algunos ejemplos de los gráficos creados, después de unos tres días de actividad:

Procesos en ejecución

cacti

Latencia de ping

cacti

Carga de la máquina

cacti

Espacio disponible en los discos RAID

cacti

Y creo que no se me olvida nada más. Felices monitorizaciones :)

11 comentarios sobre “Instalación de la herramienta de monitorización Cacti en FreeBSD

  1. Jo… hace siglos que no toco una FreeBSD y la verdad es que en cosas como esta se hecha en falta el gran trabajo de los chicos de Debian para facilitar el acceso a estas herramientas. Con apt-get install cacti tienes listo todo lo que cuentas en el post.

    Ahora, ya puestos, tienes que animarte es a contar como se configura el servicio SNMP en un windows y en un *Nix porque tendrías que ver la cantidad de supuestos administradores de sistemas que me han preguntado por ello en los últimos días ;-)

  2. josemaria,

    Está claro que el empaquetamiento Debian es toda una garantía, y que FreeBSD está muy verde en ese sentido. Por eso mismo he contado la experiencia, ya que es una auténtica tortura (sobre todo, porque ciertas combinaciones de PHP y Apache no se llevan bien, léase Apache 1.3.x y PHP 5)

    No me importaría contar cómo va SNMP en Windows, pero el problema es que no tengo ninguna licencia de algún servidor Windows y por tanto, no tengo servidores Windows instalados ;)

    La única licencia que tengo es un XP Home, de estos que viene preinstalados en un portátil, y me apetece bastante poco meterlo en un VMWare para instalar SNMP (eso si puedo hacerlo, que a saber qué restricciones tiene la versión «Home»)

    Me da que te dejo ese tema a tí :P

  3. Hola Sergio,

    Para monitorizaciones sencillas (pero completas) con rrdtool yo utilizo serverstats. Es muy configurable y te permite monitorizar cualquier cosa. No usa mysql ni snmp, muy ligero y te muestra el mismo tipo de información y gráficos que comentas tu en este post (por lo que he podido ver)

    Y para cosas más complejas y monitorización distribuida utilizo zabbix que si utiliza mysql, lleva su propio agente (o puedes usar snmp también).

    Una de las cosas que más me gusta de zabbix es la posibilidad de lanzar comandos remotos, por ejemplo, si cae el apache levántalo, etc.

    ¿eso lo hace cacti?

    Saludos,

  4. Fernando, he probado zabbix… es realmente bueno.. tiene muchisimo potencial, solo que tienes que tirarte tiempo configurandolo para tenerlo perfecto :D, no es como otros sistemas de estadisticas que te lo dan todo hecho… Me gusta :D

  5. Y además para sacarle partido a Zabbix tienes que instalar no sólo el componente de servidor sino también agentes específicos en todas las máquinas que quieras gestionar con lo cual en un ambiente de producción deja de ser tan interesante… Cacti me parece menos agresivo.

  6. José María, sip, es como dices, con zabbix puedes monitorizar vía snmp pero si quieres sacar partido tienes que usar su agente propio. Por eso lo uso yo :-)

    En las máquinas en las que no tengo necesidad, puedo monitorizarlo con snmp, en otras con el zabbix agent que me permite levantar servicios si ha caído, en otras máquinas monitorizo via puertos tcp sin snmp ni el agente, etc. y todo desde un único sistema centralizado que me permite generar múltiples gráficos, pantallas, triggers, SLA’s, avisos por mail, comandos remotos, etc..

    Parece que esté vendiendo zabbix, pero es que es lo que yo necesito :-D

    Ahora bien, siempre conviene conocer sistemas nuevos, por eso preguntaba lo de si levantaba servicios también. Además de cacti, otro que siempre he querido probar es nagios.

    Abuse, también he usado munin para otras cosas, lo que pasa con munin es que las estadísticas mínimas obtenidas eran «daily» y no «hourly» que pueden dar más información en determinados momentos, pero también es muy buen software, ampliable vía plugins para muchas cosas, etc.

  7. Buenas a todos, y perdonad la tardanza. Una semana cargadita ;)

    situ,

    Gracias por el texto. Lo he estado viendo, y es un buen complemento para los que quieran probar la solución. Gracias ;)

    Fernando,

    Confieso que no he instalado nunca ni serverstats ni zabbix, aunque tras lo que comentas, quizás lo instale para ver que tal anda, aunque me llama poco que no sea agentless. Por lo menos, lo será para el servidor.

    Que yo sepa, Cacti no lanza per se comandos remotos de resucitación como los que comentas, pero no me hagas mucho caso, que es una herramienta brutal en cuanto a funcionalidad, y puede que se me haya pasado.

    Me sería de interés que me hablaras de monitorización distribuída.

    Gracias a todos por las aportaciones. Han salido a relucir herramientas muy interesantes para todos.

    Saludos,

  8. lo único que le encuentro a zabbix, es que el agente consume muchisimo en memoria :S

    estoy buscando la manera de optimizarlo de alguna manera para que consuma menos :S

  9. Han probado nagios? En el trabajo me lo recomendó un amigo que lo instaó y le corre muy bien, no utiliza snmp , tien su propio agente, puedes configurar pocesos zoombie en los terminales a monitorizar para informarte de eventos , monitorizar servicios como el oracle, obviamente puedes moniorizar porcentajes de CPU, memoria , el tamaño de las particiones, conectividad con otros equipos,ect. Y puede levantar un servicio si se ha caido también, El problema con nagios es que hay que parcharlo bastante si lo instalas en Solaris 9 o versiones menores, con Solaris 10 corre al instante.

    Saludos

Comentarios cerrados.