LINUX:CACTI
But
Le logiciel permet de rassembler dans la durée les évolutions de ressources de divers équipements du réseau. Il utilise l'agent SNMP de ces équipements réseaux. Il les présentent sous forme de graphiques. Il n'envoie pas d'alerte mais permet de suivre l'évolution des ressources et ainsi de pouvoir prendre des actions préventives ou correctrices. Par exemple, quand on suit l'évolution de l'augmentation de la charge disque, on peut prévoir une nouvelle capacité de stockage plus adaptée. Ou on peut repérer des périodes où le trafic réseau est trop intense et ainsi mieux répartir cette charge en ne lançant pas tous nos besoins en même temps.
Voici un exemple de graphique sur une journée. Les données sont stockées avec un recul d'une année.
Il est composé de deux parties:
- Un script est chargé d'effectuer le relevé des données à intervalle régulier sur base du CRON de Linux.
- Un interface Web qui comporte un volet pour la configuration et un volet pour la consultation des graphiques qui synthétisent les données rassemblées.
Prérequis
Ce logiciel a besoin de plusieurs applications qui seront utilisées au travers de plusieurs services:
- Le service CRON "crond.service".
- Le service Web Apache "httpd.service".
- Le service PHP-FPM "php-fpm.service"; voyez l'article sur PHP venant avec la distribution.
- Le service Mariadb "mariadb.service"; voyez l'article sur MariaDB: serveur de base de données.
- Le service SNMP, voyez l'article sur SNMP. Il doit être installé et actif sur tout équipement que l'on veut suivre.
Les quatre premiers doivent être actifs sur la machine hébergeant le logiciel CACTI.
Il est recommandé de désactiver SELINUX lors de l'installation. On modifie l'option suivante dans lez fichier "/etc/selinux/config":
SELINUX=disabled
Pour notre article, on suppose que l'adresse IP de la machine qui va héberger CACTI est "192.169.1.100" pour être conforme à la configuration de l'article sur SNMP.
Installation des paquets
On stalle le logiciel CACTI:
dnf install cacti cacti-spine
Configuration préalable
Lors de la configuration de CACTI, ce processus vérifie la configuration des services dépendants. Si un aspect est imparfait, il sera noté en rouge. Il faudra le corriger et relancer le service concerné. Il est donc préférable de les ajuster en avance.
Configuration de PHP
Par rapport à la configuration d'origine du fichier "/etc/php.ini", il est nécessaire de modifier quelques lignes:
max_execution_time = 60 memory_limit = 400M
Le service "php-fpm.service" doit être redémarré:
systemctl restart php-fpm.service
Configuration de Mariadb
Par rapport à la configuration d'origine du fichier "/etc/my.cnf.d/mariadb-server.cnf", il est nécessaire de modifier ou d'ajouter quelques lignes:
character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci max_heap_table_size=47M tmp_table_size=47M innodb_doublewrite=OFF 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 innodb_file_format=Barracuda innodb_large_prefix=1 innodb_buffer_pool_size=720M
Le service "mariadb.service" doit être redémarré:
systemctl restart mariadb.service
Création du schéma pour Cacti dans Mariadb
Maintenant, il faut créer le schéma pour Cacti. On crée un premier fichier qui va créer le schéma vide que l'on nomme "schema.sql":
DROP SCHEMA IF EXISTS dbcacti ; CREATE SCHEMA dbcacti ;
Nous avons nommé ce schéma "dbcacti".
On exécute ensuite la commande suivante pour effectuer cette création:
mysql --user=root --password=MOT_DE_PASSE_ROOT_MARIADB < ./schema.sql
Ensuite on charge les tables et leur contenu dans ce schéma vide "dbcacti". Un script est fourni. Il reste à exécuter la commande suivante:
mysql --user=root --password=MOT_DE_PASSE_ROOT_MARIADB -D dbcacti < /usr/share/doc/cacti/cacti.sql
On adapte le mot de passe ("MOT_DE_PASSE_ROOT_MARIADB") de l'utilisateur "root" de Mariadb selon votre installation.
Voyez l'article sur MariaDB: serveur de base de données.
Création de l'utilisateur pour Cacti dans Mariadb
On crée un utilisateur qui aura les pleins pouvoirs sur ce schéma "dbcacti".
On crée un fichier qui va créer cet utilisateur et lui donner les droits nécessaires que l'on nomme "user.sql":
create user 'usercacti'@'localhost' identified by 'PW_CACTI' ; create user 'usercacti'@'127.0.0.1' identified by 'PW_CACTI' ; grant all privileges on dbcacti.* to 'usercacti'@'localhost'; grant all privileges on dbcacti.* to 'usercacti'@'127.0.0.1';
Ce nom d'utilisateur est "usercacti" avec le mot de passe "PW_CACTI". Ils sont à adapter selon vos désirs.
On exécute ensuite la commande suivante pour effectuer cette création:
mysql --user=root --password=MOT_DE_PASSE_ROOT_MARIADB < ./user.sql
On adapte le mot de passe ("MOT_DE_PASSE_ROOT_MARIADB") de l'utilisateur "root" de Mariadb selon votre installation.
Voyez l'article sur MariaDB: serveur de base de données.
Ajouter de Time-Zone à Mariadb
Il faut ajouter les informations sur le Time-Zone à Mariadb. On exécute la commande de ligne suivante:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql --user=root --password=MOT_DE_PASSE_ROOT_MARIADB
On adapte le mot de passe ("MOT_DE_PASSE_ROOT_MARIADB") de l'utilisateur "root" de Mariadb selon votre installation.
Droits sur une table de Time-Zone
L'utilisateur "usercacti" doit avoir le droit de lecture (SELECT) sur une table Time-Zone créé ci-dessus. On crée un script en fonction que l'on nomme "droit-time-zone.sql":
use mysql; GRANT SELECT ON mysql.time_zone_name TO usercacti@localhost; flush privileges;
On exécute ensuite la commande suivante:
mysql --user=root --password=MOT_DE_PASSE_ROOT_MARIADB < ./droit-time-zone.sql
On adapte le mot de passe ("MOT_DE_PASSE_ROOT_MARIADB") de l'utilisateur "root" de Mariadb selon votre installation.
Configuration de Cacti
Maintenant qu'on a le nom du schéma et de l'utilisateur avec son mot de passe, on passe à la configuration de Cacti.
On modifie les options suivantes dans le fichier "/etc/cacti/db.php" suivant les informations créées ci-dessus:
$database_default = 'dbcacti'; $database_hostname = 'localhost'; $database_username = 'usercacti'; $database_password = 'PW_CACTI';
Configuration de Spine
Lors de la phase future de récolte des informations auprès des équipements réseaux suivis, on va utiliser l'outil "Spine" via le service Cron. Il a aussi besoin des mêmes informations.
On modifie les options suivantes dans le fichier "/etc/spine.conf" suivant les mêmes informations:
DB_Host localhost DB_Database dbcacti DB_User usercacti DB_Pass PW_CACTI
Configuration de Cacti pour Apache
Cacti sera utilisé au travers d'un interface Web. L'installation fourni le fichier "/etc/httpd/conf.d/cacti.conf". Comme nous désirons l'utiliser grâce à un Browser Web à partir de notre PC ayant l'adresse IP "192.168.1.2", il faut permettre cet accès. Par défaut l'accès n'est permis qu'à partir du serveur localement. Or on ne travaille pas interactivement sur un serveur, ce n'est pas une station de travail, donc il est inutile d'installer un serveur X et un interface de fenêtrage tel Gnome. On économise ainsi des ressources.
On va modifier ce fichier "/etc/httpd/conf.d/cacti.conf" en fonction.
Le bloc:
<Directory /usr/share/cacti/> <IfModule mod_authz_core.c> # httpd 2.4 Require host localhost </IfModule> <IfModule !mod_authz_core.c> # httpd 2.2 Order deny,allow Deny from all Allow from localhost </IfModule> </Directory>
est modifié comme suit:
<Directory /usr/share/cacti/> <IfModule mod_authz_core.c> # httpd 2.4 Require all denied Require ip 192.168.1.2 # Require host localhost </IfModule> </Directory>
Le service "httpd.service" doit être redémarré:
systemctl restart httpd.service
Remarquons au passage que le fichier "/etc/httpd/conf.d/php.conf" venant avec PHP est nécessaire.
Configuration Web
La suite de la configuration se fait via l'interface Web.
Cron
Avant de lancer l'interface Web d'utilisation de Cacti, il convient de revenir momentanément dans la console du serveur Linux.
Car jusqu'à maintenant, on a activé le volet interface Web mais la récolte des informations auprès des équipements à analyser se fait au travers du service Cron. On va éditer le fichier "/etc/cron.d/cacti". Il ne comporte qu'une ligne mise en commentaire. On active ce traitement en éliminant le caractère "#" en début de ligne et on sauve. On remarque que par défaut la récolte se fait toutes les cinq minutes.
Si on avait activé cette ligne avant, les exécutions se seraient accumulées intempestivement.