Guía de instalación paso a paso de Cacti Apuntes Técnicos

Guía de instalación y configuración de Cacti en CentOS7

Antes de comenzar

Esta guía trata la instalación del software de monitorización gráfica mediante RRDTool, Cacti en un sistema CentOS7.

La mayoría de guías explican la instalación con una versión de MySQL inferior a la sugerida por el sistema Cacti (recomienda una versión >= 5.6). Además, no tienen en cuenta los distintos trabajos paralelos o workarounds que deben realizarse para su correcta instalación respetando las recomendaciones de sus desarrolladores.

Por lo tanto, además de la instalación de Cacti, se van a ver procesos de instalación de dependencias, así como procesos de configuración de las mismas.

Requisitos

  • CentOS 7
  • MariaDB (min.) v. 10 con sus respectivas parametrizaciones
  • PHP con sus respectivas dependencias
  • httpd

Descarga, instalación y configuración de dependencias

Antes de realizar la instalación del sistema Cacti, se procede a realizar la instalación de todas y cada una de las dependencias para evitar problemas futuros. Se empieza por lo que podría generar más inconvenientes, el sistema de base de datos. Después continua la instalación del resto.

MariaDB

Adición del repositorio

Para instalar la versión que requerida (la v. 10), se procede a crear el repositorio en el directorio correspondiente.

Tecleamos:

# vi /etc/yum.repos.d/MariaDB.repo

Y añadimos:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Instalación de los paquetes MariaDB

Una vez añadido el repositorio ya se puede proceder a la ejecución del comando yum para ejecutar la instalación.

# yum install MariaDB-server MariaDB-client -y

Cuando los paquetes se hayan instalado en el sistema, se deben ejecutar los siguientes comandos:

# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb

Con la ejecución de éstos, en primer lugar, se iniciará el servicio MariaDB, en segundo lugar, quedará seteado para que se inicie automáticamente cuando el sistema arranque y, en tercer lugar, y último, seremos capaces de ver el estado del servicio, el cual debería aparecer como active (running).

Después de este último paso, se podría llevar a cabo la configuración segura de MariaDB, pero de eso ya se hablará durante la configuración de Cacti.

Otras dependencias

Configuración del tiempo (date/time) de Linux

Cacti puede presentar problemas durante la impresión de datos si no se cuenta con el tiempo UTC en el sistema, por lo tanto, debe ser modificado para evitar problemas.

Para ello, los siguientes comandos deben ser ejecutados:

# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/UTC /etc/localtime

Después de ejecutar los comandos listados anteriormente, se puede verificar si la configuración es la deseada ejecutando el comando date.

Se aprecia que el sistema tiene el sistema de tiempo UTC, por lo que todo está correcto.

Instalación de paquetes complementarios

Con el comando de a continuación, dependencias como php y apache serán instaladas en nuestro sistema.

# yum install httpd httpd-devel php-pear php-common php-gd php-devel php php-mbstring php-cli epel-release -y

Instalación de rddtool

La herramienta rddtool permitirá a Cacti graficar todos los parámetros deseados.

# yum install php-snmp net-snmp-utils net-snmp-libs rrdtool -y

Se procede a la iniciación de los servicios y, también, se configuran para el inicio automático con el inicio del sistema.

systemctl start httpd.service
systemctl start mariadb.service
systemctl start snmpd.service
systemctl enable httpd.service
systemctl enable mariadb.service
systemctl enable snmpd.service

Primera parametrización de MariaDB

Después de la instalación de MariaDB no se ejecutaron las configuraciones necesarias para poder asignar una contraseña al usuario root, es lo que se realiza a continuación:

# mysqladmin -u root password xxxxx

xxxxx corresponde a la contraseña deseada para el usuario root.

Creación de la DB para Cacti

Una vez se cuenta con el acceso a la base de datos, se debe crear una específica para el sistema de monitorización Cacti, crear el usuario y asignarle los permisos necesarios.

Para ello, se accede a la base de datos:

# mysql -u root -p

Y se crea la base de datos, usuario y se le asignan los permisos:

Password: <xxxxx>

MariaDB [(none)]> CREATE DATABASE cactiProd CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_general_ci';
MariaDB [(none)]> GRANT ALL ON cactiProd.* TO cacti@localhost IDENTIFIED BY 'XXXX';
MariaDB [(none)]> FLUSH privileges;
MariaDB [(none)]> quit;

Instalación de Cacti

Ahora el sistema ya dispone de todo lo necesario para que Cacti pueda ser instalado sin ningún problema de dependencias.

Por lo tanto, para instalarlo en el sistema, se ejecuta el siguiente comando:

# yum install cacti –y

Carga de datos en la DB de Cacti

El sistema ya dispone de las dependencias básicas, del propio software de monitorización Cacti y, también, de la base de datos creada para su uso.

Ahora es necesario crear la estructura de datos y para ello se usa el siguiente comando:

# mysql -u cacti -p cacti < /usr/share/doc/cacti-xxx/cacti.sql

Nota: Si se copia y pega este último comando, probablemente no funcione, pues la parte resaltada en negrita variará en función de la versión que se haya descargado de Cacti.

En el momento de la redacción de esta guía la versión de Cacti que había era 1.1.10, por lo que el comando tiene el siguiente aspecto:

# mysql -u cacti -p cacti < /usr/share/doc/cacti-1.1.10/cacti.sql

Configuración del archivo de DB de Cacti

Llegados a este punto, se debe realizar la configuración de Cacti para que éste pueda conectarse a la base de datos y, además, añadir una serie de parámetros que van a permitir que Cacti disponga de un mayor rendimiento.

Lo primero, modificar el archivo de Cacti relativo a la conectividad con la base de datos:

# vi /etc/cacti/db.php 

Y añadir/modificar los valores del archivo por los nuestros.

$database_type = "mysql";
$database_default = "cactiProd";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "XXXXX";
$database_port = "3306";
$database_ssl = false;

Configuración de httpd

Como en toda configuración de httpd (Apache) se requiere la configuración de los virtual hosts que van a permitir (o no) a los usuarios acceder al servicio publicado en Apache.

Para ello, se abre el fichero del virtualHost:

# vi /etc/httpd/conf.d/cacti.conf 

Se añaden las líneas en negrita y se deja el archivo local tal y como se muestra a continuación:

<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
#Require host localhost
Require all granted
#Require host 192.168.1.0/24
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
Allow from all
#Allow from 192.168.1.0/24
</IfModule>
</Directory>

Además de esto, también se requiere hacer la modificación pertinente en el firewall para permitir las conexiones de tipo http al puerto 80, 443 o al que se decida publicar el servicio.

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload

Por último, se reinicia el servicio httpd:

# systemctl restart httpd.service

Creación del fichero de logs

Se crea un directorio sobre el cual, Cacti tendrá permisos para escribir su archivo de log.

Primeramente, se crea el directorio y seguidamente el archivo de log sobre el que escribirá. Para ello, se deben ejecutar los comandos de a continuación:

# mkdir -p /var/log/cacti
# cd /var/log/cacti/
# touch cacti.log

Configuración archivo cron de Cacti

Para que el poller de Cacti se vaya ejecutando en el tiempo de forma automática (por defecto 5 minutos) se debe eliminar el comentario de su archivo.

# vi /etc/cron.d/cacti

Y se elimina el comentario.

Instalación y configuración de Spine

Spiner es un sustituto del cmd.php que permite mayor rendimiento haciendo las operaciones de polling sobre los distintos dispositivos monitorizados. Es por eso que se decide incluir en el sistema.

No es un elemento indispensable pero sí recomendado.

Para su instalación, lo primero que se debe hacer es instalar los requisitos/dependencias del mismo.

# yum install -y gcc mysql-devel net-snmp-devel autoconf automake libtool dos2unix help2man

Una vez el sistema cuenta con las dependencias, se puede proceder a la descarga, configuración y compilación del recurso.

La descarga se realizará en el directorio /tmp por lo que se desplaza la terminal a dicho directorio y, desde allí, se ejecuta la descarga:

# cd /tmp
# wget http://www.cacti.net/downloads/spine/cacti-spine-1.0.1.tar.gz

Se procede a la descompresión del paquete y se ejecutan los comandos de configuración y compilación:

# tar xvzf cacti-spine-1.0.1.tar.gz
# cd cacti-spine-1.0.1
# ./bootstrap
# ./configure
# make
# make install
# chown root:root /usr/local/spine/bin/spine
# chmod +s /usr/local/spine/bin/spine

Nota: es importante tener en cuenta que, por defecto, Spine se instala en el directorio /usr/local/spine/, en el caso de quererlo en otro directorio, tan sólo se debería añadir un parámetro en uno de los comandos ejecutados anteriormente:

./configure --prefix=/directorio/deseado

Una vez Spine está en el sistema, se deben realizar algunas configuraciones para que éste trabaje correctamente con la base de datos de Cacti.

Se hace una copia del template y se edita en función de las necesidades/configuración de cada uno:

# cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf

A continuación, se escriben los datos relativos a la configuración que se haya hecho:

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

DB_Host localhost
DB_Database cactiProd
DB_User cacti
DB_Pass xxxxx
DB_Port 3306
DB_PreG 0

Parametrización de la base de datos de Cacti

Una vez en este punto, de desearlo se puede ir al navegador, introducir la IP del servidor donde se aloja Cacti y ver el asistente de instalación. El problema es que no se podrá proceder con la instalación por no cumplir con todos los requisitos a nivel de base de datos, por lo que la pantalla de requisitos se verá así:

Lo primero será resolver el problema relativo al TimeZone de MariaDB.

Para ello se ejecutan los comandos presentados a continuación:

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

# mysql -u root -p
# password: xxxxx
# MariaDB [(none)]> use mysql;
# MariaDB [mysql]> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;
# MariaDB [mysql]> FLUSH privileges;

Después de ejecutar estos comandos, el error debería desaparecer.

Aun así, todavía es necesario realizar una serie de operaciones de optimización para hacer que el rendimiento sea óptimo.

Se pretenden realizar todos los cambios de golpe, para ello, se abre el fichero que se muestra unas líneas más abajo y se procede a añadir todos los valores pertinentes.

# vi /etc/my.cnf.d/server.cnf

Bajo la etiqueta [server] debe figurar lo siguiente:

[server]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Bajo la etiqueta [galera], además de todos los parámetros que figuran por defecto, añadir lo que se muestra a continuación:

innodb_buffer_pool_size=700M
max_heap_table_size=140M
max_allowed_packet=16777217
tmp_table_size=65M
join_buffer_size=65M
innodb_doublewrite=OFF
innodb_additional_mem_pool_size=85M
innodb_flush_log_at_timeout=4
innodb_read_io_threads=32
innodb_write_io_threads=16

Se reinicia el servicio MariaDB:

# systemctl restart mariadb.service

Con estas configuraciones, el sistema quedará verde y cumpliendo los requisitos mínimos de Cacti tal y como muestra la siguiente imagen:

Asistente de instalación de Cacti

Éste será el último de los pasos de la instalación de Cacti.

Para finalizar con la instalación, se debe abrir el explorador que se use para navegar por Internet y en la barra de direcciones escribir la dirección del servidor que aloja el servicio de Cacti seguido de /cacti:

http://ip_servidor/cacti

Se va avanzando hasta llegar a la siguiente ventana. De no estar seleccionada la opción se debe marcar Nuevo servidor primario, después pulsar sobre siguiente.

En la siguiente ventanta, probablemente se aprecie una cruz roja en el directorio de Spine. Se debe hacer un ligero cambio para que todo funcione como se espera.

Modificar:

/usr/local/spine/bin/spine/spine

Por:

/usr/local/spine/bin/spine

Y siguiente.

En siguiente punto el asistente verifica que se dispongan de los permisos suficientes para poder escribir sobre los directorios críticos de instalación. Si hay algún directorio que no cuenta con los permisos necesarios, se deberán ajustar para que cumplan los requisitos establecidos, una vez hecho, pulsar siguiente.

Por último, el asistente ofrece una serie de templates para monitorizar algunos dispositivos, se procede a la selección de los que puedan resultar útiles en función de las necesidades existentes y finalizar.

Enhorabuena, Cacti ha sido instalado con éxito.

El usuario/password por defecto es:

admin/admin

El sistema pedirá un cambio de password justo después del primer login al mismo.

Héctor Martínez Tobar
@hmartineztobar