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:
[root@servcacti ~]# uname -a
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
[root@servcacti ~]# cat /etc/redhat-release
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:
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:
# MariaDB 10.2 CentOS repository list - created 2017-08-31 08:31 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
A continuación actualizamos e instalamos:
yum update
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:
systemctl enable mariadb.service
systemctl start mariadb.service
Siempre es recomendable asegurar la instalación, para ello utilizaremos la orden:
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:
[root@servcacti yum.repos.d]# mysql --version
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.
yum update
yum install httpd httpd-devel php-mysql php-pear php-common php-gd php-devel php
yum install php-mbstring php-cli php-snmp net-snmp-utils net-snmp-libs rrdtool
Añadimos los servicios al arranque y los encendemos:
systemctl enable httpd
systemctl enable snmpd
systemctl start httpd
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
php -m
Comprobamos que en el fichero /etc/php.ini tengamos estas líneas de la siguiente manera:
date.timezone = Europe/Madrid
Además comprobamos el fichero /etc/php.d/mysql.ini
; Enable mysql extension module
extension=mysql.so
Y la extensión para SNMP , en el fichero /etc/php.d/snmp.ini
; Enable snmp extension module
extension=snmp.so
Para que además podamos importar ficheros desde Cacti, también descomentaremos en el fichero /etc/php.ini
file_uploads = On
Una vez hechos los cambios reiniciamos el servicio ‘httpd’
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:
yum install epel-release
yum update
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.
mysql -u root -p
Creamos la base de datos y el usuario, llamado «cactiuser», además de asignarle los permisos sobre ella.
CREATE DATABASE cacti;
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.
cd /usr/share/doc/cacti-1.1.16/
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:
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'contrasea';
$database_port = '3306';
$database_ssl = false;
Ahora ya podemos reiniciar, tanto el motor de base de datos como el servidor web:
systemctl restart mariadb.service
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.
firewall-cmd --permanent --zone=public --add-service=http
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:
Alias /cacti /usr/share/cacti
<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from all
</IfModule>
</Directory>
Volvemos a reiniciar el servidor web.
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
*/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:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Y desde la consola de base de datos, con el usuario ‘root’
mysql –u root –p
MariaDB [(NONE)]> GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@localhost;
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: