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