Monitoreo con Cacti
Contenido |
Resumen
Instalación y puesta en marcha de Cacti como herramienta de monitoreo
Introducción
Cacti es una herramienta de monitoreo basada en estándares libres y herramientas de amplio uso: SNMP por un lado y RRD por el otro. Su sistema de plugin le ha conferido una base de usuarios amplia
Procedimiento
Vamos a proyectar explícitamente un equipo con el que nos asistamos en la configuración, al cual nos referimos como host_asistente
Instalación
Usaremos la versión (0.8.8b) que se encuentra en los repositorios de Debian:
aptitude install cacti
Descripción | Ilustración |
El siguiente mensaje de error es para evidenciar un problema de retrocompatibilidad que no nos interesa en este punto | |
Configurar una contraseña cualquiera. Más adelantes podríamos cambiarla como parte de nuestros esfuerzos por securizar a mysql | |
En medio de la instalación, aparece este mensaje que no tiene mayor repercusión porque nosotros configuramos manualmente más adelante | |
La siguiente pantalla nos sugiere ayudarnos en la configuración de la base de datos. Pasamos de su ayuda y lo haremos manualmente en el transcurso de esta guía |
Configuración
Servidor Web
La configuración más básica consiste en desactivar la configuración por defecto para /cacti, tomar el fichero de configuración /etc/apache2/conf-available/cacti.conf
y copiárselo a /etc/apache2/sites-enabled/000-default.conf
, así que este fichero queda básicamente de la siguiente forma:
<VirtualHost *:80> #ServerName www.example.com ServerAdmin alortiz@salud.gob.sv DocumentRoot /usr/share/cacti/site <Directory /usr/share/cacti/site> Options +FollowSymLinks AllowOverride None <IfVersion >= 2.3> Require all granted </IfVersion> <IfVersion < 2.3> Order Allow,Deny Allow from all </IfVersion> AddType application/x-httpd-php .php <IfModule mod_php5.c> php_flag magic_quotes_gpc Off php_flag short_open_tag On php_flag register_globals Off php_flag register_argc_argv On php_flag track_vars On # this setting is necessary for some locales php_value mbstring.func_overload 0 php_value include_path . </IfModule> DirectoryIndex index.php </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Aprovechamos a borrar la configuración que cacti traía por defecto, además de un par de módulos de Apache que no necesitaremos para su funcionamiento. (De hecho, podrían ser más)
a2disconf cacti a2dismod cgi autoindex status -f systemctl restart apache2.service
Servidor de Base de Datos
Cambiamos algunas opciones de seguridad por defecto corriendo mysql_secure_installation
mysql_secure_installation
Respondemos de la siguiente manera
Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Configuramos un usuario (cacto) y contraseña (cacto) para usar una base de datos específica (cacto).
mysql -u root -p
mysql> create database cacto; mysql> grant all privileges on cacto.* to 'cacto'@'%' identified by 'cacto';
Creación de Base de Datos
Hay dos locaciones para el script de creación de la base de datos (/usr/share/doc/cacti/cacti.sql
y /usr/share/cacti/conf_templates/cacti.sql
).
Tome en cuenta que lo primero que hace el script es borrar todos los datos disponibles en la base de datos
mysql -h localhost -u cacto -pcacto cacto < /usr/share/doc/cacti/cacti.sql
Migración desde un servidor existente
Para migrar desde una instalación existente, nuestro enfoque será el de exportar la base de datos a una nueva. Así, ejecutar desde el servidor en producción en el que se encuentra la base de datos:
mysqldump --default-character-set=latin1 -uroot -p123456 cacti -r backup.sql
siendo backup.sql
el fichero que debemos tener disponible para nuestra nueva instalación. La opción -h' debería permitir hacerlo de un equipo remoto si se dispone de permisos para acceso directo, lo cual de hecho no debería estar disponible.
Movemos el fichero desde host_asistente:
scp root@servidor_produccion:~/backup.sql . scp backup.sql root@192.168.2.12:~/
Ahora recuperamos la base de datos a usar. Ejecutamos en el servidor de migración:
mysql -u cacto -pcacto cacto < ~/backup.sql
La opción -h debería permitir hacerlo desde un equipo remoto si se dispone de permisos, pero lo mejor es que dichos permisos no estén disponible por cuestiones de seguridad.
El verdadero proceso de actualización será llevado a cabo por la herramienta de instalación de cacti, ella se encarga de adecuar la base de datos según los nuevos requerimientos. Según parece, es posible migrar desde la versión 0.8.0 a la 0.8.8b, aunque para esta guía lo probamos desde una versión 0.8.7.g
Configuración Inicial de Cacti
Modificar el fichero /usr/share/cacti/site/include/config.php
para acceder a la base de datos y establecer la url por defecto:
$database_type = "mysql"; $database_default = "cacto"; $database_hostname = "localhost"; $database_username = "cacto"; $database_password = "cacto"; $database_port = ""; $database_ssl = false; /* Edit this to point to the default URL of your Cacti install ex: if your cacti install as at http://serverip/cacti/ this would be set to /cacti/ Debian addition: If used together with a http deamon, it should be configured consistently. Using an empty path makes all links relative. */ $url_path = "/";
Ahora accedemos con el navegador de nuestra preferencia al servidor en el cual hemos instalado a cacti. El proceso de instalación irá de la siguiente forma:
Descripción | Ilustración |
Iniciando la herramienta de instalación/migración | |
La opción por defecto parece ser New Install, pero al haber recuperado la base de datos de la instalación anterior, la selección se situa en Upgrade from cacti 0.8.x, sin embargo, es necesario verificar este pequeño detalle | |
El siguiente debería ser el resultado final de la actualización que realiza la herramienta de cacti | |
Estas últimas verificaciones sobre software requerido no deberían ser problema habiendo instalado a cacti desde los repositorios |
Luego aparece la página de acceso a cacti. Podemos usar con nuestras credenciales anteriores, que para eso copiamos toda la base de datos.