Vamos a ver la instalación de la plataforma de monitorización gráfica Cacti, sobre un servidor GNU/Linux con la distribución Ubuntu 18.04

De esta herramienta hemos hablado muchas veces en la web, pero de eso ya hace cierto tiempo, por lo que vamos a la faena.

Antes de nada…

¿Qué es Cacti?

Se trata de una plataforma que ofrece gráficos y monitores de red, que sigue la filosofía del código abierto en su desarrollo y que utiliza la herramienta de registros RRDTool. Cacti aprovecha el poder de almacenamiento de RRDTool y la funcionalidad de gráficos.

Entre sus principales funcionalidades se encuentra:

Soporte para múltiples métodos de adquisición de datos, por ejemplo, SNMP.

Soporte para un gran número de plantillas de gráficos.

Funcionalidad de gestión de usuarios vía ACL

Además, proporciona una interfaz web muy intuitiva y fácil de utilizar. Se puede utilizar para gestionar desde pequeñas redes de oficina hasta otras con gran número de dispositivos de red y servidores.



Requisitos mínimos

Actualmente, consultando la documentación oficial podemos listar los requisitos mínimos:

RRDTool 1.0.49 o superior (recomendado 1.4)

MySQL 5.0 o superior

PHP 5.1 o superior

Un servidor web que soporte PHP, por ejemplo Apache o IIS

Podéis consultar el apartado en la web oficial.

Instalación de Cacti en Ubuntu 18.04

Los primero de todo es actualizar el sistema:

1 sudo apt update ; sudo apt upgrade sudo apt update ; sudo apt upgrade

Instalación de PHP

Instalamos los módulos de PHP necesarios e imprescindibles para el funcionamiento de la plataforma.

1 2 3 4 5 6 sudo apt install php php-mysql php-curl php-net-socket sudo apt install php-gd php-intl php-pear php-imap php-memcache sudo apt install libapache2-mod-php php-pspell php-recode php-tidy sudo apt install php-xmlrpc php-snmp sudo apt install php-mbstring php-gettext sudo apt install php-gmp php-json php-xml php-common sudo apt install php php-mysql php-curl php-net-socket sudo apt install php-gd php-intl php-pear php-imap php-memcache sudo apt install libapache2-mod-php php-pspell php-recode php-tidy sudo apt install php-xmlrpc php-snmp sudo apt install php-mbstring php-gettext sudo apt install php-gmp php-json php-xml php-common

Una vez instalados los paquetes podemos comprobar la versión instalada de PHP

1 2 3 4 5 davidochobits@servsocrates:~$ php -v PHP 7.2.19-0ubuntu0.18.04.2 ( cli ) ( built: Aug 12 2019 19 : 34 : 28 ) ( NTS ) Copyright ( c ) 1997 - 2018 The PHP Group Zend Engine v3.2.0, Copyright ( c ) 1998 - 2018 Zend Technologies with Zend OPcache v7.2.19-0ubuntu0.18.04.2, Copyright ( c ) 1999 - 2018 , by Zend Technologies davidochobits@servsocrates:~$ php -v PHP 7.2.19-0ubuntu0.18.04.2 (cli) (built: Aug 12 2019 19:34:28) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.19-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies

Antes de continuar debemos asegurar que está configurado la zona horaria correcta:

1 2 3 davidochobits@servsocrates:~$ grep date.timezone / etc / php / 7.2 / apache2 / php.ini ; http: // php.net / date.timezone date.timezone = Europe / Madrid davidochobits@servsocrates:~$ grep date.timezone /etc/php/7.2/apache2/php.ini ; http://php.net/date.timezone date.timezone = Europe/Madrid

Instalar el servicio web Apache

En esta instalación nos vamos a decantar por este popular servidor web. Su instalación es realmente sencilla:

1 sudo apt install apache2 sudo apt install apache2

Una vez realizada esta instalación debemos indicar el entorno donde vamos a utilizar el servidor web.

1 sudo vi / etc / apache2 / conf-enabled / security.conf sudo vi /etc/apache2/conf-enabled/security.conf

Y editamos la línea 25:

1 ServerTokens Prod ServerTokens Prod

Esta directiva establece la respuesta HTTP del servidor, las opciones son: “Full, OS, Minimal, Minor, Major y Prod”, que es la que hemos escogido.

Otra parte importante es indicar el nombre del servidor web en el fichero “/etc/apache2/apache2.conf”

1 sudo vi / etc / apache2 / apache2.conf sudo vi /etc/apache2/apache2.conf

Y añadir:

1 2 ServerName cacti.bitsandlinux.com ServerAdmin davidochobits @ colaboratorio.net ServerName cacti.bitsandlinux.com ServerAdmin davidochobits@colaboratorio.net

Si tenemos el cortafuegos UFW habilitado debemos aplicar las siguientes reglas:

1 2 3 4 # Habilitamos http sudo ufw allow http # Habilitamos https sudo ufw allow https # Habilitamos http sudo ufw allow http # Habilitamos https sudo ufw allow https

Reiniciamos el servidor web:

1 sudo systemctl restart apache2 sudo systemctl restart apache2

Instalar el motor de base de datos MariaDB

Para instalar el motor de base de datos puedes consultar la entrada al respecto:

Instalar MariaDB en Ubuntu 18.04

Tunear la base de datos para Cacti

Para adaptar la configuración del motor de base de datos a las necesidades de Cacti debemos modificar el fichero “/etc/mysql/mariadb.cnf” :

1 sudo vi / etc / mysql / mariadb.cnf sudo vi /etc/mysql/mariadb.cnf

E indicar justo debajo de la sección [mysqld] :

1 2 3 4 5 6 7 8 max_heap_table_size =128M tmp_table_size =128M 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 max_heap_table_size=128M tmp_table_size=128M 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

Una vez hecho esto debemos reiniciar el motor de base de datos:

1 sudo systemctl restart mariadb.service sudo systemctl restart mariadb.service

Podemos comprobar que los cambios efectivamente se han hecho, por ejemplo:

1 2 3 4 5 6 7 MariaDB [ ( NONE ) ] > SHOW VARIABLES LIKE 'join_buffer_size' ; + ------------------+----------+ | Variable_name | VALUE | + ------------------+----------+ | join_buffer_size | 67108864 | + ------------------+----------+ 1 ROW IN SET ( 0.002 sec ) MariaDB [(none)]> SHOW VARIABLES LIKE 'join_buffer_size'; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | join_buffer_size | 67108864 | +------------------+----------+ 1 row in set (0.002 sec)

Crear la base de datos para Cacti

Para crear la base de datos que usará la plataforma debemos acceder a la consola de MariaDB

1 mysql -u root -p mysql -u root -p

Y escribir según nuestras necesidades:

1 2 3 4 CREATE DATABASE cacti; GRANT ALL PRIVILEGES ON cacti .* TO cactiuser@ 'localhost' IDENTIFIED BY 'contrasea' ; FLUSH PRIVILEGES; exit create database cacti; GRANT ALL PRIVILEGES ON cacti.* to cactiuser@'localhost' IDENTIFIED BY 'contrasea'; FLUSH PRIVILEGES; exit

Instalar SNMP, RRDTool y Cacti

Como últimos pasos debemos instalar los servicios de SNMP, RRDTool, Cacti y cacti-spine

1 2 sudo apt install snmp snmpd snmp-mibs-downloader sudo apt install rrdtool cacti cacti-spine sudo apt install snmp snmpd snmp-mibs-downloader sudo apt install rrdtool cacti cacti-spine

Durante la instalación debemos indicar que vamos a utilizar el servidor web Apache.

En la siguiente pregunta respondemos “no” sobre la configuración con “dbconfig-common”

Configurar SNMP

Para poder comunicarnos con el servicio SNMP del propio host debemos indicar un nombre de comunidad para indicarlo en la configuración: “/etc/snmp/snmpd.conf“, generalmente se añade sobre la línea 49 del fichero de configuración:

1 sudo vi / etc / snmp / snmpd.conf sudo vi /etc/snmp/snmpd.conf

Y añadimos:

1 rocommunity bitsandlinux localhost rocommunity bitsandlinux localhost

Además, debemos deshabilitar el acceso público comentando las siguientes líneas:

1 2 # rocommunity public default -V systemonly # rocommunity6 public default -V systemonly # rocommunity public default -V systemonly # rocommunity6 public default -V systemonly

Ahora ya podemos reiniciar el servicio:

1 sudo systemctl restart snmpd sudo systemctl restart snmpd

Siempre podemos validar que todo ha ido bien validando con snmpwalk, del que ya hemos hablado.

1 sudo snmpwalk -v 2c -c bitsandlinux localhost sudo snmpwalk -v 2c -c bitsandlinux localhost

Configurar el servidor Cacti

Debemos modificar el fichero de configuración de Cacti, para indicarle los datos de las credenciales de la base de datos. Para ello editamos el fichero “/usr/share/cacti/site/include/config.php”

1 sudo vi / usr / share / cacti / site / include / config.php sudo vi /usr/share/cacti/site/include/config.php

Con el contenido según las credenciales de la base de datos y su usuario correspondiente:

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

Guardamos y salimos

Instalamos el esquema de la base de datos:

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

Definimos la “timezone” para la base de datos:

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

Para ello debemos dar privilegios especiales para el usuario Cacti a mysql.time

1 mysql -u root -p mysql -u root -p

Y:

1 2 3 GRANT SELECT ON mysql . time_zone_name TO cactiuser@localhost; FLUSH privileges; exit GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost; flush privileges; exit

Configurar Cacti para el control de acceso en Apache

Siempre es recomendable restringir el acceso a la interfaz, esto se consigue modificando el fichero del Virtual Host en “/etc/apache2/conf-available/cacti.conf“, por ejemplo:

1 sudo vi / etc / apache2 / conf-available / cacti.conf sudo vi /etc/apache2/conf-available/cacti.conf

Por ejemplo:

1 2 Require host localhost Require ip 192.168.122.0 / 24 Require host localhost Require ip 192.168.122.0/24

Aquí se puede indicar una IP o un rango de IPs

Siempre que hagamos cambios debemos reiniciar el servidor web:

1 sudo systemctl restart apache2 sudo systemctl restart apache2

Instalación de Cacti-Spine

Cacti-Spine o spine a secas es un programa escrito C. Se trata de un sustituo más eficiente y eficaz para cmd.php. Spine es mucho más rápido. La única pega es que hay que compilarlo.

Para ello necesitamos una serie de paquete:

1 2 3 sudo apt install build-essential dos2unix dh-autoreconf help2man sudo apt install libssl-dev libmysql++-dev librrds-perl libsnmp-dev sudo apt install libmysqlclient-dev libmysqld-dev sudo apt install build-essential dos2unix dh-autoreconf help2man sudo apt install libssl-dev libmysql++-dev librrds-perl libsnmp-dev sudo apt install libmysqlclient-dev libmysqld-dev

Ahora ya podemos descargar la última versión del programa:

1 2 3 wget https: // www.cacti.net / downloads / spine / cacti-spine-latest.tar.gz tar xfz cacti-spine-latest.tar.gz cd cacti-spine-1.2.7 / wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz tar xfz cacti-spine-latest.tar.gz cd cacti-spine-1.2.7/

Y compilamos:

1 2 3 4 . / bootstrap . / configure make sudo make install ./bootstrap ./configure make sudo make install

Ahora le asignamos permisos para root:

1 2 sudo chown root:root / usr / local / spine / bin / spine sudo chmod +s / usr / local / spine / bin / spine sudo chown root:root /usr/local/spine/bin/spine sudo chmod +s /usr/local/spine/bin/spine

Por último que no menos inmportante editamos su fichero de configuración con los datos de la base de datos de Cacti:

1 vi / usr / local / spine / etc / spine.conf vi /usr/local/spine/etc/spine.conf

Con el contenido:

1 2 3 4 5 6 DB_Host localhost DB_Database cacti DB_User cactiuser DB_Pass contrasea DB_Port 3306 DB_PreG 0 DB_Host localhost DB_Database cacti DB_User cactiuser DB_Pass contrasea DB_Port 3306 DB_PreG 0

Instalación web de Cacti

Ahora le toca la parte de la instalación del producto vía web. Para ello debemos escribir el nombre de la web o de la IP más “/cacti”

Lo primero es aceptar la licencia del producto, que como se observa es software libre, ya que utiliza una licencia GPL

En el siguiente paso indica si cumplimos con todos los requisitos de instalación.Debemo indicar si se trata de una instalación principal o en cambio es una instalación remota:Confirmamos la ubicación de los binarios:Debemos apuntar los permisos que deben tener las rutas de instalación:Importamos las plantillas a utilizar. Yo he indicado que las quiero utilizar todas.En el próximo paso ya nos aparecerá la pantalla de acceso.El usuario predeterminado es “admin” con la contraseña “admin”.

Por seguridad debemos cambiar la contraseña:



Habilitar Spine vía interfaz web

De esta manera ya podemos ver la interfaz del producto.De esta manera ya podemos a empezar a jugar.

Ahora toca cambiar el recolector de datos a spine. Para ello en la interfaz web nos vamos a “Console” -> “Settings” -> “Settings” -> “Poller” y allí cambiar cmd.php a spine.

El otro cambio se tiene que hacer en “Console” -> “Configuration” -> “Settings” -> “Paths” y allí en la ruta para el fichero de configuración indicamos: “/usr/local/spine/etc/spine.conf“, además del binario “/usr/local/spine/bin/spine” y guardamos.

Quizás os puedan interesar las siguientes entradas al respecto

Añadir nuevo dispositivo a Cacti

Instalar Cacti en un servidor CentOS 7

Añadir un cliente Windows Server a Cacti

Añadir gráficas de threads en Cacti

Y esto es todo, espero que la entrada os pueda ser de utilidad en algún momento.