Cómo instalar Cacti en CentOS 7

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.

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.

como descargar cacti para centos 7

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:

como instalar cacti en centos 7

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:

instalar cacti en centos 7

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:

instalacion de cacti en centos 7

Pasaremos a la sección de comprobación de requisitos de CentOS 7 y el entorno del sistema para Cacti:

configuracion de centos 7 para instalar 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«:

instalador de cacti para centos 7

Se realizará una nueva comprobación, en este caso de los permisos de acceso y escritura sobre los directorios que utilizará Cacti:

instalando cacti en centos 7

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«:

cacti para centos 7

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:

cacti en centos 7

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!

Valora esta entrada

5/5 - (2 votos)

9 comentarios en «Cómo instalar Cacti en CentOS 7»

  1. 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?

    Responder
    • ¡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.

      Responder
  2. 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

    Responder

Deja un comentario