Instalar Cacti en Ubuntu 18.04
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:
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.
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
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:
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:
sudo apt install apache2
Una vez realizada esta instalación debemos indicar el entorno donde vamos a utilizar el servidor web.
sudo vi /etc/apache2/conf-enabled/security.conf
Y editamos la línea 25:
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»
sudo vi /etc/apache2/apache2.conf
Y añadir:
ServerName cacti.bitsandlinux.com
ServerAdmin davidochobits@colaboratorio.net
Si tenemos el cortafuegos UFW habilitado debemos aplicar las siguientes reglas:
# Habilitamos http
sudo ufw allow http
# Habilitamos https
sudo ufw allow https
Reiniciamos el servidor web:
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» :
sudo vi /etc/mysql/mariadb.cnf
E indicar justo debajo de la sección [mysqld] :
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:
sudo systemctl restart mariadb.service
Podemos comprobar que los cambios efectivamente se han hecho, por ejemplo:
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
mysql -u root -p
Y escribir según nuestras necesidades:
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
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:
sudo vi /etc/snmp/snmpd.conf
Y añadimos:
rocommunity bitsandlinux localhost
Además, debemos deshabilitar el acceso público comentando las siguientes líneas:
# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly
Ahora ya podemos reiniciar el servicio:
sudo systemctl restart snmpd
Siempre podemos validar que todo ha ido bien validando con snmpwalk, del que ya hemos hablado.
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»
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:
$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:
mysql -u cactiuser -p cacti < /usr/share/doc/cacti/cacti.sql
Definimos la «timezone» para la base de datos:
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
mysql -u root -p
Y:
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:
sudo vi /etc/apache2/conf-available/cacti.conf
Por ejemplo:
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:
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:
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:
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:
./bootstrap
./configure
make
sudo make install
Ahora le asignamos permisos para root:
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:
vi /usr/local/spine/etc/spine.conf
Con el contenido:
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:
De esta manera ya podemos ver la interfaz del producto.
De esta manera ya podemos a empezar a jugar.
Habilitar Spine vía interfaz web
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.