En esta entrada veremos cómo instalar Cacti en CentOS 7 paso a paso, una aplicación web estupenda para monitorizar los sistemas y dispositivos de tu red local y comprobar su estado a través de gráficas, que podrás desplegar sobre tu servidor o VPS CentOS.
Este tutorial está disponible para otras versiones de CentOS e incluso otros sistemas que puedes encontrar con el buscador de este sitio.
Contenido
Antes de instalar Cacti en CentOS 7
Si quieres completar esta guía de instalación y configuración de Cacti en CentOS 7 debes satisfacer los siguientes requerimientos básicos:
- Una máquina CentOS 7 actualizada.
- Un entorno o pila tipo LAMP (servidor web con PHP y bases de datos).
- Acceso a consola con un usuario con permisos de sudo, o el mismo root.
- Conexión a Internet.
En el caso de no tener aún el entorno necesario, es posible que necesites consultar previamente nuestra guía de instalación de la pila LAMP en CentOS 7.
Además es necesario disponer de ciertas utilidades del sistema que obtendremos de los repositorios de CentOS 7, así que actualizaremos su información:
~$ sudo yum update
E instalaremos estas herramientas:
~$ sudo yum install -y policycoreutils-python wget
Cómo descargar Cacti para CentOS 7
Vamos a descargar Cacti para CentOS 7 desde la página de descarga del sitio oficial, ya que aunque exsisten paquetes recientes en el repositorio EPEL, pueden dar problemas con ciertas versiones de PHP. Sin embargo, descargando la última versión estable disponible de Cacti para CentOS 7 funcionará sin problema.
Encontramos versiones del paquete en los formatos .tar.gz y .zip, siendo el paquete .tar.gz el que en este artículo descargaremos desde consola mediante el comando wget:
~$ wget https://www.cacti.net/downloads/cacti-1.2.20.tar.gz
Cómo instalar Cacti en CentOS 7
Para instalar Cacti en CentOS 7 debemos seguir un proceso bastante laborioso para preparar el sistema antes de poder lanzar el instalador web. Para que no te pierdas en la instalación de Cacti detallaremos todos estos pasos a continuación.
Pre-requisitos
Debemos instalar algunas herramientas y comandos de CentOS 7 que utilizará Cacti, y lo haremos desde los repositorios de la distribución con yum:
~$ sudo yum install -y net-snmp-utils rrdtool
Archivos de Cacti
Descomprimimos el paquete de Cacti que acabamos de descargar directamente en la ubicación que nos interese para integrarlo en el servicio web:
~$ sudo tar xf cacti-1.2.20.tar.gz -C /var/www/
Puesto que Cacti se descomprime en una carpeta que contiene números de versión en su nombre, la renombraremos sin números para facilitar el proceso de instalación y el posible mantenimiento:
~$ sudo mv /var/www/cacti-1.2.20/ /var/www/cacti
En lugar de renombrar la carpeta se podría haber creado un enlace simbólico, pero esto generaría dificultades a la hora de trabajar con SELinux.
Como Cacti necesita escribir en su propio directorio, cambiamos el propietario al usuario con el que corre el servicio web en CentOS 7:
~$ sudo chown -R apache: /var/www/cacti/
Configuración de Cacti
Realizaremos algunos ajustes sobre el archivo de configuración de Cacti:
~$ sudo nano /var/www/cacti/include/config.php
Al principio del archivo se encuentran los datos de conexión a la base de datos:
... $database_type = 'mysql'; $database_default = 'cacti'; $database_hostname = 'localhost'; $database_username = 'cactiuser'; $database_password = 'cactiuser'; $database_port = '3306'; $database_retries = 5; $database_ssl = false; $database_ssl_key = ''; $database_ssl_cert = ''; $database_ssl_ca = ''; ...
Podemos dejar los valores por defecto, pero siempre es aconsejable, al menos, cambiar la contraseña, así que la sustituimos en la variable $database_password:
... $database_password = 'XXXXXXXX'; ...
Opcionalmente, se puede mejorar la seguridad de Cacti si restringimos el dominio de conexión usando la variable cacti_cookie_domain:
... //$cacti_cookie_domain = 'cacti.net'; ...
Si el servidor CentOS 7 es accesible mediante algún dominio, como en el ejemplo de este artículo, centos7.local.lan, podemos activar esta variable y darle el valor adecuado:
... $cacti_cookie_domain = 'centos7.local.lan'; ...
Si el servidor CentOS 7 no es accesible mediante dominio o nombre DNS, puede dejarse desactivada esta variable.
En cualquier caso, guardamos los cambios y cerramos el archivo.
Preparación del servicio de bases de datos
Cacti usa la base de datos de zonas horarias de MariaDB/MySQL, que prácticamente nadie suele instalar por defecto. Así que cargaremos dichas tablas a partir de las zonas horarias definidas en CentOS 7:
~$ mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
Es posible que salten algunos avisos sobre archivos que no se pueden cargar, pero es perfectamente normal.
En cuanto a la configuración del servicio de bases de datos, Cacti es bastante exigente, así que editaremos el archivo de configuración correspondiente (que varía según la versión de MariaDB/MySQL instalada).
Configuración en MariaDB
Editamos el archivo de configuración:
~$ sudo nano /etc/my.cnf.d/server.cnf
Especificaremos los siguientes valores en la sección server o en la sección mysqld:
... [server] ... character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci join_buffer_size = 31M innodb_file_format = Barracuda innodb_large_prefix = 1 innodb_buffer_pool_size = 1024M innodb_doublewrite = OFF innodb_flush_log_at_timeout = 3 innodb_read_io_threads = 32 innodb_write_io_threads = 16 innodb_io_capacity = 5000 ...
Será necesario reiniciar el servicio de bases de datos para que los cambios hagan efecto:
~$ sudo systemctl restart mariadb
Configuración en MySQL
Editamos el archivo de configuración:
~$ sudo nano /etc/my.cnf
En la sección mysqld añadimos las siguientes directivas:
... [mysqld] ... character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci join_buffer_size = 31M innodb_buffer_pool_size = 1024M innodb_flush_log_at_timeout = 3 innodb_read_io_threads = 32 innodb_write_io_threads = 16 innodb_buffer_pool_instances = 9 innodb_io_capacity = 5000 ...
Guardamos el archivo y reiniciamos el servidor:
~$ sudo systemctl restart mysqld
Preparación de la base de datos de Cacti
Por otro lado crearemos la base de datos exclusiva de Cacti.
Conectamos al servicio de bases de datos con el cliente de consola mysql y un usuario administrador:
~$ mysql -u root -p
Creamos la base de datos:
> create database cacti charset utf8mb4 collate utf8mb4_unicode_ci;
Si usamos MariaDB o MySQL 5, creamos el usuario de la forma habitual:
> create user cactiuser@localhost identified by 'XXXXXXXX';
Pero si se trata de MySQL 8, nos aseguramos de que el usuario utilice el plugin de autenticación adecuado:
> create user cactiuser@localhost identified with mysql_native_password by 'XXXXXXXX';
Sea el caso que sea, concedemos los permisos sobre la base de datos:
> grant all privileges on cacti.* to cactiuser@localhost;
Por otro lado, el usuario de la base de datos de Cacti debe poder acceder a la base de datos de zonas horarias de MariaDB/MySQL, que cargamos anteriormente:
> grant select on mysql.time_zone_name to cactiuser@localhost;
Ya podemos salir del cliente de consola:
> exit
Con la base de datos creada es necesario preparar su estructura a través de un archivo .sql dispuesto al efecto:
~$ mysql -u root -p cacti < /var/www/cacti/cacti.sql
Para esta operación hemos usado el usuario de la base de datos que acabamos de crear, por lo que habrá que proporcionar su contraseña.
Configuración de PHP
Cacti requiere algún ajuste de configuración de la versión de PHP que tengas instalada en CentOS 7.
Editamos el archivo php.ini:
~$ sudo nano /etc/php.ini
Buscaremos la directiva memory_limit:
... ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 128M ...
Y cambiaremos su valor al siguiente:
... memory_limit = 400M ...
Ya podemos guardar los cambios.
Por otro lado, Cacti requiere la disponibilidad en CentOS 7 de ciertas extensiones, que instalaremos a continuación:
~$ sudo yum install -y php-gd php-gmp php-ldap php-mbstring php-posix php-simplexml php-snmp
Recargamos la configuración del servicio web o del servicio PHP, según corresponda:
~$ sudo systemctl reload httpd
Configuración del servidor web
Ahora editaremos el archivo de configuración de Cacti para el servidor web, que configura un alias /cacti sobre el directorio de instalación de Cacti en /var/www/.
~$ sudo nano /etc/httpd/conf.d/cacti.conf
El contenido será el siguiente:
Alias /cacti /var/www/cacti <Directory /var/www/cacti/> php_value max_execution_time 60 </Directory>
Hemos aprovechado para añadir un ajuste de PHP que también requiere Cacti.
Guardamos los cambios y recargamos la configuración del servidor:
~$ sudo systemctl reload httpd
SELinux
Si tienes SELinux activado, como ocurre por defecto en CentOS 7, no bastará con modificar los permisos ordinarios de los archivos de Cacti, sino que habrá que aplicar contextos de lectura/escritura para el servicio web en algunas carpetas de la aplicación.
Definiremos los nuevos contextos:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/log(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/resource/snmp_queries(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/resource/script_server(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/resource/script_queries(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/scripts(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/cache/boost(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/cache/mibcache(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/cache/realtime(/.*)?" ~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/cacti/cache/spikekill(/.*)?"
Y los aplicamos:
~$ sudo restorecon -R /var/www/cacti/
Con eso sería suficiente.
Configuración de Cron
Necesitamos añadir la tarea de monitorización de Cacti en el servicio Cron de CentOS 7, creando el archivo correspondiente:
~$ sudo nano /etc/cron.d/cacti
La tarea programada:
*/5 * * * * apache /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1
Y guardamos los cambios.
Cómo acceder a Cacti en CentOS 7
Para acceder a Cacti en CentOS 7 sólo tendremos que añadir la ruta /cacti a la dirección IP o dominio del sistema.
Por ejemplo, la máquina CentOS 7 de este tutorial es accesible en el dominio centos7.local.lan, así que la URL http://centos7.local.lan/cacti es la que usaremos para acceder:
Se nos muestra la página de inicio de sesión, en la que usaremos las credenciales por defecto, usuario admin y contraseña admin.
Nada más acceder se nos pide cambiar la contraseña por defecto por una nueva:
Realizada esta operación, se nos mostrará el asistente de instalación, donde podremos elegir un tema visual para la aplicación, el idioma, y necesitaremos aceptar el acuerdo de licencia GPL:
Pasaremos a la sección de comprobación de requisitos de CentOS 7 y el entorno del sistema para Cacti:
Si has seguido uno a uno los pasos anteriores de configuración tu sistema debería cumplir todos los requisitos, por lo que podemos continuar con la instalación.
Tendremos que elegir el tipo de instalación, que normalmente será del tipo «Nuevo servidor primario«:
Se realizará una nueva comprobación, en este caso de los permisos de acceso y escritura sobre los directorios que utilizará Cacti:
Seguirá una comprobación de las herramientas, comandos y utilidades de CentOS 7 que usará Cacti:
Se nos advertirá de los riesgos de usar el sistema de recolección de datos vía script:
Tendremos que confirmar que hemos leído y aceptamos los riesgos.
Continuamos configurando el perfil predeterminado para el sondeo y escaneo de los dispositivos que monitorizará Cacti. Es importante ajustar el rango de red si no corresponde al valor por defecto, 192.168.1.0/24:
El siguiente paso es añadir en la configuración de plantillas aquella que se adecúe al sistema, aunque puedes marcar todas:
La siguiente página nos informa de la configuración de la base de datos con respecto a las codificaciones seleccionadas:
Por fin la configuración de la instalación está terminada, pero será necesario confirmar la instalación para poder continuar:
Comenzará el proceso de instalación y una barra de progreso nos informará del avance de las tareas:
Tras unos instantes la instalación llega a su fin y nos informa del resultado, que debería ser positivo:
Pulsando en «Comenzar» entraremos por fin en la página principal de Cacti en CentOS 7, donde tendremos seleccionado por defecto el menú «Consola«:
Si cambiamos al menú «Gráficos» y expandimos el árbol por defecto, «Default Tree«, aparecerá el dispositivo configurado por defecto, que no es otro que la máquina local. Al seleccionar la máquina local podremos ver sus gráficas de estado:
Si no aparecen las gráficas de actividad es porque ha transcurrido muy poco tiempo entre el fin de la instalación y el acceso a esta sección, pero la página se refresca automáticamente y en pocos minutos empezarás a obtener datos y gráficas actualizadas.
A partir de aquí ya solo queda añadir nuevos dispositivos y sistemas siguiendo el proceso de:
- Crear el dispositivo.
- Asociar plantillas de gráficas y consultas al dispositivo.
- Crear gráficas del dispositivo.
- Añadir el dispositivo al árbol de la sección de gráficas.
Conclusión
Ya has visto cómo instalar Cacti en CentOS 7, un proceso sin duda laborioso, pero que funcionará a la primera siguiendo paso a paso las tareas previas. Añade más sistemas y dispostivos de tu red y configura sus gráficas para tener todo bajo control.
Si tienes preguntas, sugerencias, dudas, etc. puedes dejar un comentario (están moderados para evitar SPAM, pero se revisan diariamente).
¡Apoya este sitio!
¿Ya monitorizas tus sistemas gracias a esta guía de instalación y configuración de Cacti en CentOS 7? Si es así y te apetece agradecérnoslo, cualquier aportación es bien recibida para el mantenimiento de este sitio y creación de más guías sobre CentOS 7 y Cacti.
Puedes ayudarnos dejando 1 $ de propina en PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
Actualizado a la versión 1.12.20.
Al momento de entrar por el navegador sale lo siguente:
FATAL: Connection to Cacti database failed. Please ensure:
the PHP MySQL module is installed and enabled.
the database is running.
the credentials in config.php are valid.
¿Qué puedo hacer? ¿Alguna solución?
¡Hola, Vicente! ¿Exactamente en qué paso ocurre ese error? ¿Qué motor y versión de bases de datos usas?
Ya lo solucioné, muchas gracias, el otro problema que tengo es que no me funciona el usuario y contraseña ‘admin‘.
Configura la variable $cacti_cookie_domain con el dominio de tu servidor CentOS 7 tal como se muestra en el artículo. En versiones anteriores de Cacti era un paso opcional, es posible que ahora sea obligatorio.
Hola, he logrado instalar sin ningún error aparentemente y al momento de visualizar los gráficos no se visualiza ninguno.
Saludos.
¡Hola, Luis! Los gráficos podrían tardar unos 10 minutos en aparecer. Pocos minutos después de la instalación se lanzará la tarea de Cacti programada para el servicio Cron, y deberían crearse una serie de archivos en la carpeta /var/www/cacti/rra/. A partir de ese momento, cada vez que se refresque la página de los gráficos mostrará la última versión de los gráficos disponibles.
Hola, tengo el siguiente error, he seguido todos los pasos.
PHP – Recommendations (web)
date.timezone >= Error A valid timezone that matches MySQL and the system
Hola, Alex. Deberías localizar el archivo php.ini (usualmente /etc/php.ini) y darle un valor adecuado a la directiva date.timezone. Tienes todo explicado en la guía de instalación de PHP en CentOS 7.