Cacti es una herramienta con la que podremos monitorizar cualquier equipo de red que soporte el protocolo SNMP, ya sea un switch, un router o un servidor Linux. Siempre que tengan activado el protocolo SNMP y conozcamos las MIBs con los distintos OIDs (identificadores de objeto) que podemos monitorizar y visualizar. Cacti es una aplicación que funciona bajo entornos Apache + PHP + MySQL, por tanto, permite una visualización y gestión de la herramienta a través del navegador web. La herramienta utiliza RRDtool, que captura los datos y los almacena en una base de datos, permitiendo visualizar de forma gráfica los datos capturados mediante MRTG.
Algunas buenas características de Cacti incluyen:
- Visualización rápida de métricas.
- Soporte para múltiples métodos de adquisición de datos.
- Soporte para plantillas gráficas avanzadas.
- Funcionalidad de gestión de usuarios con ACL.
Cacti proporciona una interfaz web intuitiva y fácil de usar para administrar el monitoreo y las configuraciones de la red. Siguiendo el paso a paso de este tutorial podrás instalarlo en tu CentOS.
Paso 1: Instalación de herramientas y dependencias necesarias
Vamos a necesitar instalar, como pre-requisito, las herramientas de desarrollo y después los paquetes de snmp y rrdtool.
dnf group install "Development Tools" -y dnf install -y net-snmp net-snmp-utils rrdtool
Paso 2: Instale php y las extensiones requeridas
Instalación de PHP y extensiones requeridas por Cacti.
dnf install @php -y dnf install -y php php-{mysqlnd,curl,gd,intl,pear,recode,ldap,xmlrpc,snmp,mbstring,gettext,gmp,json,xml,common}
Una vez instalado PHP, necesitamos establecer zona horaria PHP dentro del /etc/php.iniarchivo. Veamos como esta por defecto haciendo:
grep date.timezone /etc/php.ini
2.1 – Editamos el archivo y cambiamos estos valores
nano /etc/php.ini
Ajustamos los siguientes valores
memory_limit = 800M max_execution_time = 60 date.timezone = America/Argentina/Buenos_Aires
2.2 – Iniciar php-fpmservicio
systemctl enable --now php-fpm
Paso 3: Instalar el servidor web Apache
dnf install @httpd -y
3.1 – Inicie y habilite el servicio para comenzar en el arranque.
systemctl enable --now httpd
3.2 – Permita puertos http y https en el firewall.
firewall-cmd --add-service = {http, https} --permanente firewall-cmd --reload
Paso 4: Instalar y configurar el servidor de bases de datos
dnf module install mariadb
4.1 – Habilitamos el servicio
systemctl enable --now mariadb
4.2 – Lanzamos la instalación segura
mysql_secure_installation
Le damos enter y nos aseguramos de configurar:
- Establecer contraseña de usuario root de la base de datos
- Eliminar usuarios anónimos
- No permitir inicios de sesión remotos de usuario root
- Eliminar la base de datos de prueba y acceder a ella
4.3 – Después de la instalación del servidor de la base de datos, cree una base de datos y un usuario para la herramienta Cacti Monitoring.
mysql -u root -p
4.4 – Creamos la base de datos, tené en cuenta de cambiar NKsistemas por una constraseña segura:
CREATE DATABASE cacti; GRANT ALL ON cacti.* TO 'cacti'@'localhost' IDENTIFIED BY 'NKsistemas'; FLUSH PRIVILEGES; exit
4.5 – Vamos a tunear la base de MariaDB para Cacti
Vamos a agregar unas lineas en la sección [mysqld] en el archivo /etc/my.cnf.d/mariadb-server.cnf, solo pegamos lo siguiente debajo de lo que ya existe.
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci max_heap_table_size=64M tmp_table_size=64M join_buffer_size=64M innodb_buffer_pool_size=512M innodb_doublewrite=OFF innodb_flush_log_at_timeout=3 innodb_read_io_threads=32 innodb_write_io_threads=16 innodb_buffer_pool_instances=5
4.6 – Para que tome los cambios reiniciamos el servicio de mariadb
systemctl restart mariadb
Paso 5: Descarga e instalación de cacti
5.1 – Descargamos Cacti
mkdir cacti && cd cacti curl -SL https://www.cacti.net/downloads/cacti-latest.tar.gz | tar --strip 1 -xzf -
Movemos la carpeta
cd .. mv cacti/ /var/www/html/
5.2 – Importamos la base de Cacti
mysql -u root -p cacti < /var/www/html/cacti/cacti.sql
5.3 – Configuramos el timezone de MYSQL
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
5.4 – Le damos permisos a cacti dentro de la base para que pueda usar los timezone
mysql -u root -p
Y cargamos lo siguiente:
GRANT SELECT ON mysql.time_zone_name TO cacti@localhost; ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; FLUSH PRIVILEGES; QUIT
5.5 – Configuramos SELINUX
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/cacti(/.*)?" restorecon -Rv /var/www/html/cacti
5.6 – Reiniciamos los servicios de apache para que aplique los cambios
systemctl restart httpd php-fpm
5.7 – Configurando Cacti
Editamos el archivo /var/www/html/cacti/include/config.php
Y le cargamos los siguientes datos
$database_type = 'mysql'; $database_default = 'cacti'; $database_hostname = 'localhost'; $database_username = 'cacti'; $database_password = 'NKsistemas'; $database_port = '3306';
5.8 – Creamos el archivo de log para Cacti
touch /var/www/html/cacti/log/cacti.log
Le damos permisos
chown -R apache:apache /var/www/html/cacti
5.9 – Configuramos cron
crontab -u apache -e
Pegamos lo siguiente
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
Salimos presionando tecla Esc, :wq!
Paso 6: Instalación web
Vamos a aaceder mediante el navegador web, http://localhost/cacti, al momento de ingresar nos pide usuario y contraseña que por defecto cacti usa admin // admin.
6.2- Y nos pedirá cambiar la contraseña por defecto. Debemos usar una mayúscula.
6.3- Aceptamos los terminos de licencia.
6.4- Verificamos los requisitos pre-instalación, tengo algunos alertas que no me impiden seguir, más adelante los cambiaré.
6.5- Seleccionamos tipo de instalación, le damos Next.
6.6- Verificamos que todos los permisos estén OK.
6.7- Verificamos que este todo en orden en ubicación de binarios y versiones
6.8- Cargamos el rango de nuestra red y clic en Next
6.9- Dejamos tildados todos los templates, y Next.
6.10- Dejamos todo como esta y Next.
6.11- Tildamos Confirm Installation, y next.
6.12- Esperamos que termine de cargar y cuando nos de Get Started, ingresamos a la plataforma.
6.13- Finalmente si todo salió bien deberíamos ver la pantalla para empezar a cargar dispositivos.
Paso 7: Monitoreando el servidor de linux con cacti
Finalmente para monitorear nuestro linux, habilitamos el servicio de snmpd
systemctl enable --now snmpd