Mise en place de statistiques avec Cacti

De Linux Server Wiki
Sauter à la navigation Sauter à la recherche


Tuto plus vraiment à jour (écrit a l'origine pour debian lenny)

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.

1 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.

2 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.domain.tld/:/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

3 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@domain.tld>

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.domain.tld/:/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.domain.tld/main/.htpasswd
AuthGroupFile /srv/http/admin.domain.tld/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

4 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.

Pour debian lenny uniquement : sélection de la police :
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.

5 Configuration de SNMP et Cacti pour récupérer les statistiques d'un serveur local

Nous allons voir comment configurer snmp sur un serveur distant afin de récupérer ses statistiques sur notre cacti.

Installez snmp 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  udp:127.0.0.1:161,udp:192.168.0.2:161
rocommunity internal  192.168.0.0/24
sysLocation    Epsilon Eridani System
sysContact     root@celestis.domain.tld

Avec cette configuration, l'accès sera autorisé à toutes les machines sur le réseau 192.168.0.

Relancez snmpd :

/etc/init.d/snmpd restart


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 1
SNMP Community : internal

A la section Associated Data Queries les graphiques :

  • 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)
  • SNMP - Interface Statistics permet d'obtenir les statistiques réseaux.
  • SNMP - Get Processor Information

A la section Associated Graph Templates, vous pouvez utiliser les graphiques :

  • ucd/net - CPU Usage
  • Host MIB - Logged in Users
  • ucd/net - Load Average
  • ucd/net - Memory Usage

6 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 snmp 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

Éditez le fichier /var/lib/snmp/snmpd.conf :

createUser system  SHA "abcdefgh"  DES

N'oubliez pas de remplacer le abcdefgh par un mot-de-passe de votre choix !

Éditez le fichier /etc/snmp/snmpd.conf :

rouser   system

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.