Instalar Cacti en NGINX

Paso 1. Instalar paquetes.

Después de seguir los pasos de la entrada Instalar Nginx, PHP y mariadb procedemos a instalar cacti. Lo primero que haremos será instalar los paquetes requeridos por cacti. Tened en cuenta que todo lo haremos como usuario root.

~# apt update
~# apt install wget php-gd php-gmp php-ldap php-mbstring php-simplexml php-xml php-snmp rrdtool

Paso 2. Crear base de datos

Una vez todo instalado crearemos la base de datos. Para ello entramos en nuestro cliente mysql y creamos la base de datos con el nombre que deseemos y un usuario con privilegios sobre dicha base de datos. (En este caso usamos como nombre para la base de datos «cacti» y usuario «cactiuser»):

~# mysql
mysql> CREATE DATABASE cacti;
mysql> GRANT ALL ON cacti.* TO 'cactiuser'@'localhost' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Ahora vamos a crear la tabla de zonas horarias (time zone) que viene incluida en un script dentro de mysql y le daremos permiso de lectura (SELECT) a nuestro nuevo usuario (cactiuser).

~# mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql
~# mysql
mysql> GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost;
mysql> ALTER DATABASE cacti CHARACTER SET='utf8mb4' COLLATE='utf8mb4_unicode_ci';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Paso 3. Configurar Base de datos

Lo siguiente será configurar mysql con los requisitos que nos pide cacti. Para ello modificaremos y añadiremos las lineas del fichero de configuración de mysql en la sección [mysqld].

~# vim /etc/mysql/mariadb.conf.d/50-server.cnf

Las lineas son las siguientes:

[mysqld]

collation-server = utf8mb4_unicode_ci
character-set-server  = utf8mb4
max_heap_table_size = 128M
tmp_table_size = 64M
join_buffer_size = 128M
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_buffer_pool_size = 1GB
innodb_buffer_pool_instances = 10
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000

Después de estos dos pasos reiniciamos mysql y pasamos a configurar php.

~# /etc/init.d/mysql restart

Paso 4. Configurar PHP

En este paso modificaremos los ficheros de configuración. Configuraremos la zona horario, tiempo máximo de ejecución de un fichero y el límite de memoria que nos exige cacti. Vamos a cambiar dos fichero, pero vamos a realizar los mismos cambios. (En este caso tenemos instalada la version de PHP FPM 7.3, si fuese otra versión deberíamos de cambiar la dirección del fichero)

~# vim /etc/php/7.3/fpm/php.ini
~# vim /etc/php/7.3/cli/php.ini

FPM es el manejador de PHP que usará NGINX y CLI es PHP en consola de comandos.

En la sección [PHP] descomentamos las entradas max_execution_time y memory_limit y le asignamos los valores 70 y 512M respectivamente. Y en la sección [DATE] descomentamos date.timezone e indicamos nuestra zona horaria (Europe/Madrid en nuestro caso).

[PHP]
max_execution_time = 70
memory_limit = 512M

[DATE]
date.timezone = Europe/Madrid

Para terminar el paso 4 reiniciamos PHP:

~# /etc/init.d/php7.3-fpm restart

Paso 5. Crear VirtualHost en NGINX

Vamos a borrar el VHost por defecto y luego crear uno nuevo para cacti de la siguiente manera:

~# rm /etc/nginx/sites-enabled/default
~# vim /etc/nginx/conf.d/cacticonfig.conf

Y en el fichero añadimos:

server {
 listen      80;
 server_name example.com;
 root        /var/www/html;
 index       index.php;
 access_log  /var/log/cactiacess.log;
 error_log   /var/log/cacti.log;
 charset utf-8;
 gzip on;
 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
 location / {
   try_files $uri $uri/ /index.php?$query_string;
  }
  location /api/v0 {
   try_files $uri $uri/ /api_v0.php?$query_string;
  }
  location ~ .php {
   include fastcgi.conf;
   fastcgi_split_path_info ^(.+.php)(/.+)$;
   fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
  }
  location ~ /.ht {
   deny all;
  }
 } 

Tened en cuenta que estamos usando php7.3-fpm. En el caso de usar otro habría que cambiarlo en la línea número 21.

Y para terminar reiniciamos NGINX:

/etc/init.d/nginx restart

Paso 6. Instalar CACTI

Lo primero que haremos será descargar la última versión de CACTI. Una vez descargado lo descomprimimos, lo pasamos al directorio del nuevo VirtualHost y le asignamos como propietario el servidor web (www-data).

~# wget https://www.cacti.net/downloads/cacti-latest.tar.gz
~# tar -zxvf cacti-latest.tar.gz
~# mv cacti-1* /var/www/html/cacti
~# chown -R www-data:www-data /var/www/html/

Lo siguiente será crear la estructura de la base de datos. Para ello importamos un script que viene incluido en cacti.

~# mysql -u root -p cacti < /var/www/html/cacti/cacti.sql

Y por último configuramos cacti para que se pueda conectar a la base de datos. Para ello modificamos el fichero de configuración añadiendo los datos que usamos en el Paso 2. Crear Base de Datos.

~# vim /var/www/html/cacti/include/config.php

Y añadimos los siguientes datos:

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

Paso 7. Automatizar poller.

El poller es el encargado de recolectar los datos. Para ello tiene que ejecutarse cada cierto tiempo, para así recopilar datos en el tiempo. En el caso de cacti, es recomendable que el poller se ejecute cada 5 minutos y por eso vamos a crear una entrada el demonio CRON de nuestro servidor.

~# vim /etc/cron.d/cacti

Y añadimos:

*/5 * * * * www-data php /var/www/html/cacti/poller.php > /dev/null 2>&1

Paso 8. Asistente de instalación WEB

Ahora vamos a abrir un navegador en nuestro PC y nos conectaremos a nuestro servidor poniendo de URL la dirección IP del servidor Cacti. Nos pedirá usuario y contraseña, que por defecto son admin y admin respectivamente, después de conectarnos nos pedirá cambiar la contraseña y empezará un asistente de configuración, el cual comprueba que todos los pasos anteriores estén realizados correctamente.

2 comentarios en «Instalar Cacti en NGINX»

Deja un comentario