Cómo instalar el servidor de monitorización Cacti en CentOS 8
Cacti es una potente herramienta de monitorización y gráficos de red, gratuita y de código abierto. Sirve para controlar el rendimiento del sistema, la carga de la CPU y la utilización del ancho de banda de la red en formato de gráfico. Te permite sondear los servicios a intervalos predeterminados y representar gráficamente los datos resultantes. Es un frontend completo de RRDTool, escrito en PHP y utiliza la base de datos MySQL para almacenar toda la información necesaria.
En este tutorial, explicaremos cómo instalar la herramienta de monitorización Cacti en CentOS 8.
Requisitos previos
- Un servidor que ejecute CentOS 8 con un mínimo de 2 GB de RAM.
- Una contraseña de root configurada el servidor.
Cómo empezar
En primer lugar, se recomienda actualizar los paquetes del sistema a la última versión. Puedes actualizarlos con el siguiente comando:
dnf update -y
Una vez actualizados todos los paquetes, instala otras dependencias necesarias para Cacti con el siguiente comando:
dnf install net-snmp net-snmp-utils net-snmp-libs rrdtool -y
Después de instalar todas las dependencias, inicia el servicio SNMP y habilítalo para que se inicie en el arranque con el siguiente comando:
systemctl start snmpd
systemctl enable snmpd
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar el servidor LAMP
A continuación, tendrás que instalar en tu sistema el servidor web Apache, el servidor de bases de datos MariaDB, PHP y otras extensiones PHP necesarias. Puedes instalarlos todos con el siguiente comando:
dnf install httpd mariadb-server php php-xml php-session php-sockets php-ldap php-gd php-json php-mysqlnd php-gmp php-mbstring php-posix php-snmp php-intl -y
Una vez instalados todos los paquetes, inicia el servicio HTTP y MariaDB y permite que se inicien en el arranque con el siguiente comando:
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb
A continuación, tendrás que editar el archivo php.ini y realizar algunos cambios:
nano /etc/php.ini
date.timezone = Asia/Kolkata memory_limit = 512M max_execution_style = 60
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar la base de datos MariaDB
A continuación, tendrás que crear una base de datos y un usuario para Cacti. En primer lugar, entra en el shell de MariaDB con el siguiente comando:
mysql
Una vez iniciada la sesión, crea una base de datos y un usuario para Cacti con el siguiente comando:
MariaDB [(none)]> create database cactidb;
MariaDB [(none)]> GRANT ALL ON cactidb.* TO cacti@localhost IDENTIFIED BY 'password';
A continuación, vacía los privilegios y sal del intérprete de comandos MariaDB con el siguiente comando
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
A continuación, tendrás que editar el archivo de configuración de MariaDB y modificar algunos ajustes. Puedes hacerlo editando el archivo /etc/my.cnf.d/mariadb-server.cnf.
nano /etc/my.cnf.d/mariadb-server.cnf
Añade las siguientes líneas dentro de la sección [mysqld]:
collation-server=utf8mb4_unicode_ci character-set-server=utf8mb4 max_heap_table_size=32M tmp_table_size=32M join_buffer_size=64M # 25% Of Total System Memory innodb_buffer_pool_size=1GB # pool_size/128 for less than 1GB of memory innodb_buffer_pool_instances=10 innodb_flush_log_at_timeout=3 innodb_read_io_threads=32 innodb_write_io_threads=16 innodb_io_capacity=5000 innodb_file_format=Barracuda innodb_large_prefix=1 innodb_io_capacity_max=10000
Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio MariaDB para aplicar los cambios:
systemctl restart mariadb
A continuación, importa el archivo mysql_test_data_timezone.sql a la base de datos mysql con el siguiente comando:
mysql -u root -p mysql < /usr/share/mariadb/mysql_test_data_timezone.sql
A continuación, inicia sesión en MySQL y concede al usuario cacti el acceso a la tabla mysql.time_zone_name:
mysql
Una vez iniciada la sesión, ejecuta el siguiente comando para conceder el acceso:
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;
A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar Cacti
Por defecto, Cacti no está disponible en el repositorio por defecto de CentOS 8. Así que tendrás que añadir el repositorio EPEL a tu sistema.
Puedes instalarlo con el siguiente comando:
dnf install epel-release -y
Una vez instalado el repositorio, instala Cacti con el siguiente comando:
dnf install cacti -y
Después de instalar Cacti, comprueba la instalación de Cacti con el siguiente comando:
rpm -qi cacti
Deberías obtener la siguiente salida:
Name : cacti Version : 1.2.14 Release : 1.el8 Architecture: noarch Install Date: Wednesday 07 October 2020 01:04:02 AM EDT Group : Unspecified Size : 56217780 License : GPLv2+ Signature : RSA/SHA256, Thursday 06 August 2020 05:06:22 AM EDT, Key ID 21ea45ab2f86d6a1 Source RPM : cacti-1.2.14-1.el8.src.rpm Build Date : Thursday 06 August 2020 04:54:10 AM EDT Build Host : buildvm-a64-27.iad2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : https://www.cacti.net/ Bug URL : https://bugz.fedoraproject.org/cacti Summary : An rrd based graphing tool Description : Cacti is a complete frontend to RRDTool. It stores all of the necessary information to create graphs and populate them with data in a MySQL database. The frontend is completely PHP driven.
A continuación, importa los datos de Cacti a la base de datos de Cacti con el siguiente comando:
mysql -u root -p cactidb < /usr/share/doc/cacti/cacti.sql
A continuación, edita el archivo de configuración de Cacti y define la configuración de tu base de datos:
nano /usr/share/cacti/include/config.php
Cambia las siguientes líneas que coincidan con tu base de datos:
$database_type = 'mysql'; $database_default = 'cactidb'; $database_hostname = 'localhost'; $database_username = 'cacti'; $database_password = 'password'; $database_port = '3306'; $database_retries = 5; $database_ssl = false;
Guarda y cierra el archivo cuando hayas terminado y crea un archivo Cron para Cacti.
nano /etc/cron.d/cacti
Añade la siguiente línea:
*/5 * * * * apache /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
Guarda y cierra el archivo cuando hayas terminado.
Una vez que hayas terminado puedes pasar al siguiente paso.
Configurar Apache para Cacti
A continuación, tendrás que crear un archivo de configuración del host virtual de Apache para Cacti. Puedes crearlo con el siguiente comando:
nano /etc/httpd/conf.d/cacti.conf
Busca las siguientes líneas:
Alias /cacti /usr/share/cacti <Directory /usr/share/cacti/> <IfModule mod_authz_core.c> # httpd 2.4 Require host localhost </IfModule> <IfModule !mod_authz_core.c> # httpd 2.2 Order deny,allow Deny from all Allow from localhost </IfModule> </Directory>
Y, sustitúyelas por las siguientes líneas:
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>
Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio Apache y PHP-FPM para aplicar los cambios:
systemctl restart httpd
systemctl restart php-fpm
También puedes comprobar el estado del Apache con el siguiente comando:
systemctl status httpd
Deberías obtener la siguiente salida:
? httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d ??php-fpm.conf Active: active (running) since Wed 2020-10-07 01:10:35 EDT; 58s ago Docs: man:httpd.service(8) Main PID: 5159 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 12523) Memory: 28.7M CGroup: /system.slice/httpd.service ??5159 /usr/sbin/httpd -DFOREGROUND ??5161 /usr/sbin/httpd -DFOREGROUND ??5162 /usr/sbin/httpd -DFOREGROUND ??5163 /usr/sbin/httpd -DFOREGROUND ??5164 /usr/sbin/httpd -DFOREGROUND Oct 07 01:10:35 centos8 systemd[1]: Stopped The Apache HTTP Server. Oct 07 01:10:35 centos8 systemd[1]: Starting The Apache HTTP Server... Oct 07 01:10:35 centos8 httpd[5159]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:45> Oct 07 01:10:35 centos8 systemd[1]: Started The Apache HTTP Server. Oct 07 01:10:35 centos8 httpd[5159]: Server configured, listening on: port 80
En este punto, el servidor web Apache está configurado para servir a Cacti. Ahora puedes pasar al siguiente paso.
Configurar el cortafuegos y SELinux
A continuación, tendrás que permitir los servicios http y https a través del firewalld. Puedes permitirlos con el siguiente comando:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
A continuación, también tendrás que desactivar el SELinux en tu sistema.
Puedes desactivar el SELinux editando el archivo /etc/selinux/config:
nano /etc/selinux/config
Busca la siguiente línea:
SELINUX=enforcing
Y, sustitúyela por la siguiente línea:
SELINUX=permissive
Guarda y cierra el archivo y luego reinicia el sistema para aplicar los cambios.
Accede a la interfaz web de Cacti
Ahora, abre tu navegador web y accede a la interfaz web de Cacti utilizando la URL http://your-server-ip/cacti. Serás redirigido a la página de inicio de sesión de Cacti:
Proporciona el nombre de usuario y la contraseña por defecto como admin / admin y luego haz clic en el botón de inicio de sesión. Deberías ver la pantalla de cambio de contraseña de Cacti:
Proporciona tu contraseña por defecto, la nueva contraseña y haz clic en el botón Guardar. Deberías ver la página del acuerdo de licencia de Cacti:
Acepta el acuerdo de licencia y haz clic en el botón Comenzar. Deberías ver la página de comprobación de la preinstalación:
Asegúrate de que todos los paquetes están instalados y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Selecciona el tipo de instalación y haz clic en el botón Siguiente. Deberías ver la página de comprobación de permisos de directorio:
Haz clic en el botón Siguiente. Deberías ver la siguiente página.
Haz clic en el botón Siguiente. Deberías ver la página de Validación de Entradas:
Marca la casilla de verificación y haz clic en el botón Siguiente. Deberías ver la página Perfil:
Proporciona tu rango de red y haz clic en el botón Siguiente. Deberías ver la página de configuración de la plantilla:
Selecciona la plantilla que desees y haz clic en el botón Siguiente. Deberías ver la siguiente página:
A continuación, abre tu terminal, entra en el shell de MySQL y cambia el conjunto de caracteres ejecutando el siguiente comando:
MariaDB [(none)]> ALTER DATABASE cactidb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
A continuación, vuelve al asistente de instalación de Cacti y haz clic en el botón Siguiente. Deberías ver la siguiente página:
Confirma la instalación y haz clic en el botón Instalar. Una vez finalizada la instalación, deberías ver la siguiente página:
Haz clic en el botón Comenzar. Deberías ver el panel de control de Cacti en la siguiente página:
Haz clic en los Gráficos => Máquina Linux local. Deberías ver la información sobre tu máquina local en la siguiente página:
Conclusión
Enhorabuena! has instalado y configurado con éxito la herramienta de monitorización de red Cacti en Ubuntu 20.04. Ahora puedes instalar el agente Cacti en la máquina del cliente y añadirlo al servidor Cacti y empezar a monitorizar. No dudes en preguntarme si tienes alguna duda.