Instalar Cacti en un servidor CentOS 7
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 2 3 4 | [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:
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 2 3 4 5 6 | # 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:
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 2 | systemctl enable mariadb.service 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 2 | [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.
1 2 3 | 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:
1 2 3 4 | 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
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 2 | ; Enable mysql extension module extension=mysql.so |
Y la extensión para SNMP , en el fichero /etc/php.d/snmp.ini
1 2 | ; 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
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 2 3 | 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.
1 | mysql -u root -p |
Creamos la base de datos y el usuario, llamado “cactiuser”, además de asignarle los permisos sobre ella.
1 2 | 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.
1 2 | 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:
1 2 3 4 5 6 7 | $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:
1 2 | 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.
1 2 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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.
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 2 3 | 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:
FUENTE: https://www.ochobitshacenunbyte.com/2017/09/04/instalar-cacti-en-un-servidor-centos-7/