Mise en place de statistiques avec Cacti
Le logiciel de statistiques mrtg est de plus en plus souvent délaissé au profit de rddtool. Plus complet mais aussi plus difficile à configurer, des outils comme Cacti permettent de faciliter son utilisation.
Installation
Commencez par installer les deux paquets suivants :
aptitude install cacti snmpd php5-snmp php5-cli
Durant l'installation, on vous demandera de choisir le type de serveur web que vous utilisez. Dans mon cas j'ai choisi Apache 2.
Quand l'installateur vous demandera s'il faut configurer la base de données de cacti avec dbconfig-common
, répondez oui. On vous demandera alors d'entrer le mot-de-passe de l'administrateur MySQL, puis celui qu'il faudra utiliser pour la base de donnée de Cacti.
Si vous utilisez un noyau avec patch grsecurity, ajouter l'utilisateur snmp
au groupe de restriction de <cpde>/proc ne règle pas le problème de lecture sur /proc/net/dev
ce qui empêche de récupérer les informations sur le trafic des interfaces réseaux.
Pour régler le problème, il faut modifier la ligne SNMPDOPTS
de snmpd dans /etc/default/snmpd
en ajoutant l'option -g GID
où GID est le groupe défini par la directive CONFIG_GRKERNSEC_PROC_GID
de la configuration de votre kernel.
Configuration de Apache et SNMP (lenny)
Nous allons autoriser l'accès en lecture à SNMP. Éditez /etc/snmp/snmpd.conf
comme suit :
#### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private
Redémarrez le service SNMP :
/etc/init.d/snmpd restart
La base de donnée et l'utilisateur ont déjà été créés automatiquement lors de l'installation. A titre d'information, le schéma de la base de donnée de cacti se trouve dans /usr/share/doc/cacti/cacti.sql.gz
.
Éditez le fichier de configuration de la vhost apache sur laquelle vous souhaitez pouvoir consulter cacti et ajoutez y la ligne suivante :
Include /etc/cacti/apache.conf
Si vous utilisez open_basedir pour sécurisez le php de vos vhosts, il va falloir ajouter les répertoires /usr/share/cacti/
, /etc/cacti/
, /usr/share/php/adodb/
, /usr/bin/
, /bin/
, /sbin/
et /var/log/cacti/:/usr/share/rrdtool/fonts/
au open_basedir de votre vhost. Dans mon cas :
php_admin_value open_basedir /srv/http/admin.csnu.org/:/usr/share/cacti/:/etc/cacti/:/usr/share/php/adodb/:/usr/bin/:/bin/:/sbin/:/var/log/cacti/:/usr/share/rrdtool/fonts/
Etant donné que vous donnez l'accès à beaucoup de répertoires, il serait peut-être bon de sécuriser le dossier /usr/share/cacti/site/ avec un .htaccess. De cette manière, en cas de faille sur cacti, vous vous assurez de que personne ne pourra l'exploiter sur votre serveur.
Si vous utilisez les modules apache php5 et suphp, ajoutez les lignes suivantes à /etc/apache2/mods-enabled/php5.conf
pour y activer php :
<Directory /usr/share/cacti> php_flag engine on </Directory>
Pour que les modifications soient prises en compte, redémarrez apache :
/etc/init.d/apache2 restart
Configuration de Apache et SNMP (squeeze)
Depuis debian squeeze, il n'est plus nécessaire d'utiliser les directives com2sec
. Modifiez les lignes suivantes dans /etc/snmp/snmpd.conf
:
#accès complet à partir de localhost : rocommunity public localhost sysLocation Epsilon Eridani System sysContact root <root@csnu.org>
Redémarrez le service SNMP :
/etc/init.d/snmpd restart
La base de donnée et l'utilisateur ont déjà été créés automatiquement lors de l'installation. A titre d'information, le schéma de la base de donnée de cacti se trouve dans /usr/share/doc/cacti/cacti.sql.gz
.
Éditez le fichier de configuration de la vhost apache sur laquelle vous souhaitez pouvoir consulter cacti et ajoutez y la ligne suivante :
Include /etc/cacti/apache.conf
Si vous utilisez open_basedir pour sécurisez le php de vos vhosts, il va falloir ajouter les répertoires /usr/share/cacti/
, /etc/cacti/
, /usr/share/php/adodb/
, /usr/bin/
, /bin/
, /sbin/
et /var/log/cacti/:/usr/share/rrdtool/fonts/
au open_basedir de votre vhost. Dans mon cas :
php_admin_value open_basedir /srv/http/admin.csnu.org/:/usr/share/cacti/:/etc/cacti/:/usr/share/php/adodb/:/usr/bin/:/bin/:/sbin/:/var/log/cacti/:/usr/share/rrdtool/fonts/
Etant donné que vous donnez l'accès à beaucoup de répertoires, il serait peut-être bon de sécuriser le dossier /usr/share/cacti/site/ avec un .htaccess. De cette manière, en cas de faille sur cacti, vous vous assurez de que personne ne pourra l'exploiter sur votre serveur :
AuthType Digest AuthName "administration interface" AuthDigestProvider file AuthDigestDomain / AuthUserFile /srv/http/admin.csnu.org/main/.htpasswd AuthGroupFile /srv/http/admin.csnu.org/main/.htgroup <Limit GET POST> require group root </Limit>
Assurez vous que le fichier est lisible par apache :
chgrp www-data /usr/share/cacti/site/.htaccess
Si vous utilisez les modules apache php5 et suphp, ajoutez les lignes suivantes à /etc/apache2/mods-enabled/php5.conf
pour y activer php :
<Directory /usr/share/cacti> php_flag engine on </Directory>
Pour que les modifications soient prises en compte, redémarrez apache :
/etc/init.d/apache2 restart
Configuration de Cacti
Connectez vous à l'adresse de votre vhost. Vous vous retrouvez devant le guide d'installation de Cacti. Cliquez sur Next
. A la page suivante, on vous demande de sélectionner le type d'installation. Selectionnez New install
. Normalement, cacti devrait vous indiquer la configuartion suivante :
Database User: cacti Database Hostname: Database: cacti Server Operating System Type: unix
Cliquez sur Next
. La dernière page récapitule la présence des différents binaires nécessaires. Si vous n'avez aucune erreur, vous pouvez cliquer sur Finish
. Vous êtes alors redirigé sur la page de login de cacti. Loguez vous avec l'utilisateur admin
et le mot-de-passe admin
. Cacti vous demandera immédiatement de choisir un nouveau mot-de-passe puis vous vous retrouverez sur la page principale de Cacti.
Dans le menu de gauche, partie Configuration
, cliquez sur Settings
puis sur Paths
. Vérifiez qu'un fichier de font est présent à la ligne RRDTool Default Font Path
. Si aucun fichier de font n'est présent, ajoutez /usr/share/rrdtool/fonts/DejaVuSansMono-Roman.ttf
et sauvegardez.
Nous allons maintenant configurer les graphiques. Cliquez sur Devices
. Vous verrez qu'un device existe déjà. Sélectionnez le et supprimez le avec le menu déroulant.
Cliquez sur Add
pour ajouter un nouveau device. A la ligne Hostname
entrez localhost
, à la ligne Host Template
sélectionnez None
et à la ligne SNMP Version
sélectionnez Version 1
. Sauvegardez la configuration.
Nous allons maintenant configurer les graphiques. Cliquez sur le device que nous venez de créer :
- A la partie
Associated Graph Templates
vous pouvez ajouter les graphiques suivants :Linux - Memory Usage
Unix - Load Average
Unix - Logged in Users
Unix - Processes
.
- A la partie
Associated Data Queries
vous pouvez ajouter les graphiques suivants :SNMP - Get Processor Information
SNMP - Interface Statistics
Unix - Get Mounted Partitions
.
Remontez en haut de la page et cliquez sur Create Graphs for this Host
. Cochez les différents graphiques que vous souhaitez utiliser puis cliquez sur Create
.
Les graphiques sont maintenant créés. Dans quelques dizaines de minutes vous pourrez voir les premiers résultats dans l'onglet Graphs
.
Configuration de SNMP et Cacti pour récupérer les statistiques d'un serveur distant
Nous allons voir comment configurer snmp sur un serveur distant afin de récupérer ses statistiques sur notre cacti.
Installez cacti sur le serveur distant :
aptitude install snmp snmpd
Éditez le fichier /etc/snmp/snmpd.conf
:
#permet d'écouter sur l'ip 87.98.136.217 et sur toutes les ipv6 agentaddress 87.98.136.217,udp6:161 #com2sec paranoid default public #com2sec readonly default public #com2sec readwrite default private #Créé un utilisateur system avec le mot-de-passe abcdefgh createUser system MD5 abcdefgh DES group groupv3 usm system view all included .iso 80 access groupv3 "" any auth exact all all all
N'oubliez pas de remplacer le abcdefgh
par un mot-de-passe de votre choix !
Relancez snmpd :
/etc/init.d/snmpd restart
Vous pouvez tester si tout fonctionne bien avec la commande suivante sur votre serveur principal :
snmpget -v 3 -l AuthNoPriv -u system -A abcdefgh 87.98.136.217 sysName.0
En ce qui concerne la configuration snmp de cacti il suffit de sélectionner les champs suivants lors de la configuration du device :
SNMP Version : Version 3 SNMP Username (v3) : system SNMP Password (v3) : abcdefgh SNMP Privacy Passphrase (v3) : abcdefgh
A la section Associated Data Queries
le graphique SNMP - Get Mounted Partitions
permet d'obtenir l'état de toutes les partitions (y compris le taux d'utilisation de la mémoire et du swap) et le graphique SNMP - Interface Statistics
permet d'obtenir les statistiques réseaux.
A la section Associated Graph Templates
, vous pouvez utiliser les graphiques ucd/net - CPU Usage
, Host MIB - Logged in Users
, ucd/net - Load Average
et ucd/net - Memory Usage
.