Instalar Cacti en un servidor CentOS 7

Hace tiempo que no pruebo las últimas versiones de Cacti, ya sabéis, esa fabulosa herramienta gráfica, que nos permite ver en directo el estado de nuestros servidores, utilizando las aplicaciones RRDtool. Además, en este caso utilizaré para las pruebas una máquina virtual con CentOS, ya que últimamente me estoy moviendo sobre todo con sistemas con paquetería RPM. Así que nada, vamos al lío.

Preparando el equipo

La primera parte es la instalación, es importante que tengamos el sistema operativo actualizado, ya os he comentado que voy a utilizar CentOS, la versión del sistema es la siguiente:

  1. [root@servcacti ~]# uname -a
  2. Linux servcacti.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  3. [root@servcacti ~]# cat /etc/redhat-release
  4. CentOS Linux release 7.3.1611 (Core)

Además, he deshabilitado SELinux, para no tener ningún tipo de problemas. Para ello sólo debemos modificar el fichero /etc/selinux/config, dejando “SELINUX=disabled”. Recuerda que una vez modificado el fichero debemos reiniciar el servidor.

El firewall lo he dejado habilitado, podemos comprobar su estado escribiendo:

  1.  systemctl status firewalld

Más adelante veremos cómo añadir reglas utilizando la herramienta “firewall-cmd

Instalando los paquetes necesarios

Cacti está escrito en PHP y a nivel de servidor web vamos a utilizar Apache. En lo que respecta a la base de datos, me voy a decantar por la última versión disponible de MariaDB, utilizando sus repositorios.

Lo primero que haremos es instalar el repositorio de MariaDB, podemos saber cuál es el que le corresponde a nuestro sistema operativo desde el siguiente enlace.

Añadimos la información que nos muestra a un fichero en /etc/yum.repos.d/, llamado, por ejemplo, MariaDB.repo. En mi caso, con la información:

  1. # MariaDB 10.2 CentOS repository list - created 2017-08-31 08:31 UTC 
    
  2. # http://downloads.mariadb.org/mariadb/repositories/ 
    
  3. [mariadb] 
    
  4. name = MariaDB 
    
  5. baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
    
  6. gpgcheck=1

A continuación actualizamos e instalamos:

  1. yum update
  1. yum install MariaDB-server MariaDB-client

Ya hemos instalado el motor de la base de datos. Ahora debemos añadir el servicio al arranque además de encenderlo:

  1. systemctl enable mariadb.service
  2. systemctl start mariadb.service

Siempre es recomendable asegurar la instalación, para ello utilizaremos la orden:

  1. mysql_secure_installation

De esa manera podemos asignar una contraseña segura a super usuario de la base de datos.

Y voilà, ya tenemos una cosa menos:

  1. [root@servcacti yum.repos.d]# mysql --version
  2. mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for Linux (x86_64) using readline 5.1

Empezamos instalando los paquetes de Apache y PHP. Además de SNMP, protocolo imprescindible para el funcionamiento de Cacti, ya que se encarga de intercambiar información entre dispositivos en red. Y el más importante, rrdtool, esencial para generar las gráficas.

  1. yum update
  2. yum install httpd httpd-devel  php-mysql php-pear php-common php-gd php-devel php 
  3. yum install php-mbstring php-cli php-snmp net-snmp-utils net-snmp-libs rrdtool

Añadimos los servicios al arranque y los encendemos:

  1. systemctl enable httpd 
  2. systemctl enable snmpd
  3. systemctl start httpd 
  4. systemctl start snmpd

Configuración de PHP

Para el correcto funcionamiento de Cacti, debemos modificar algunos parámetros del fichero de configuración de PHP, ubicado en /etc/php.ini

  1. php -m

Comprobamos que en el fichero /etc/php.ini tengamos estas líneas de la siguiente manera:

  1. date.timezone = Europe/Madrid

Además comprobamos el fichero /etc/php.d/mysql.ini

  1. ; Enable mysql extension module
  2. extension=mysql.so

Y la extensión para SNMP , en el fichero /etc/php.d/snmp.ini

  1. ; Enable snmp extension module
  2. extension=snmp.so

Para que además podamos importar ficheros desde Cacti, también descomentaremos en el fichero /etc/php.ini

  1. file_uploads = On

Una vez hechos los cambios reiniciamos el servicio ‘httpd’

  1. systemctl restart httpd.service

Instalación de Cacti

Los paquetes necesarios para instalar el producto se encuentran en el repositorio EPEL, por lo que antes tenemos que instalarlo:

  1. yum install epel-release
  2. yum update
  3. yum install cacti

Una vez instalado, debemos crear la base de datos, que utilizará Cacti, para ello debemos acceder a la consola de base de datos.

  1. mysql -u root -p

Creamos la base de datos y el usuario, llamado «cactiuser», además de asignarle los permisos sobre ella.

  1. CREATE DATABASE cacti;
  2. GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'contrasea';

Salimos de la consola de base de datos con ‘exit’, ahora nos queda importar el fichero de esquema de base de datos de Cacti.

  1. cd /usr/share/doc/cacti-1.1.16/
  2. mysql -u cactiuser -p cacti < cacti.sql

Cacti tiene un fichero de configuración de la base de datos, ubicado en /etc/cacti/db.php, lo tenemos que editar con los datos de usuario y base de datos:

  1. $database_type     = 'mysql';
    
  2. $database_default  = 'cacti';
    
  3. $database_hostname = 'localhost';
    
  4. $database_username = 'cactiuser';
    
  5. $database_password = 'contrasea';
    
  6. $database_port     = '3306';
    
  7. $database_ssl      = false;

Ahora ya podemos reiniciar, tanto el motor de base de datos como el servidor web:

  1. systemctl restart mariadb.service
  2. systemctl restart httpd.service

Ya hemos comentado antes que debemos utilizar ‘firewall-cmd’ para habilitar el puerto 80, y así poder acceder al panel web.

  1. firewall-cmd --permanent --zone=public --add-service=http
  2. firewall-cmd --reload

Configurar el Virtual Host

Vamos a modificar el fichero de configuración de Apachel del Virtual Host de Cacti, ubicado en /etc/httpd/conf.d/cacti.conf, con una configuración similar a la siguiente:

  1. Alias /cacti    /usr/share/cacti
    
  2. <Directory /usr/share/cacti/>
    
  3. <IfModule mod_authz_core.c>
    
  4. # httpd 2.4
    
  5. Require all granted
    
  6. </IfModule>
    
  7. <IfModule !mod_authz_core.c>
    
  8. # httpd 2.2
    
  9. Order deny,allow
    
  10. Deny from all
    
  11. Allow from all
    
  12. </IfModule>
    
  13. </Directory>

Volvemos a reiniciar el servidor web.

  1. systemctl restart httpd.service

Tareas programadas con Cron

Debemos añadir una tarea utilizando Cron, cada cinco minutos, para que ejecute el script que llama al fichero poller.php, esencial para recolectar las gráficas.

Descomentamos la línea ubicada en el fichero /etc/cron.d/cacti

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

Con esto ya podemos pasar a la parte web. En nuestro navegador http://nuestra-ip/cacti

Instalación web

En la primera página debemos aceptar la licencia GPL del producto, a continuación nos aparecerá una lista de todos los requisitos del servidor, si no los cumple, nos los dirá. El más importante en mi caso, ha sido relativo a la tabla de uso horario, para solventarlo, debemos ejecutar:

  1. mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Y desde la consola de base de datos, con el usuario ‘root’

  1. mysql –u root –p
  2. MariaDB [(NONE)]> GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@localhost;
  3. Query OK, 0 ROWS affected (0.00 sec)

El resto de alertas no son graves, se tratan de mejoras de rendimiento, podéis consultar el siguiente enlace, donde se ofrece ayuda al respecto.

Cuando nos aparezca la página de entrada, utilizando el usuario ‘admin’ y contraseña ‘admin’, nos pedirá cambiar la contraseña, algo básico a nivel de seguridad.

Y con esto ya lo tenemos listo:

Espero que en algún momento os sirva de ayuda el artículo, nos vamos leyendo.

Os dejo enlaces a otros artículo en los que hablo de Cacti:

Añadir nuevo dispositivo a Cacti