Observium : Une interface évoluée pour Collectd
Contents
1 Introduction
Observium est un outil de supervision orienté graphique tel que Munin. L'avantage de cette solution est qu'elle gère les graphiques RRD de Collectd.
Vu qu'aujourd'hui, une interface graphique performante est vraiment quelque chose qui manque à Collectd, il était dommage d'avoir une solution aussi performante sans interface à sa hauteur. C'est pourquoi après plusieurs recherches, j'ai fini par tomber sur Observium qui réponds à ce besoin.
2 Installation
2.1 Prérequis
Nous allons utiliser une Debian 6 pour ce tuto. Voici la liste des packages requis (utilisez les ports non-free pour le package snmp-mibs-downloader) :
Puis nous allons installer une librairie php ipv6 nécessaire qui n'est malheureusement pas packagée :
pear |
pear install Net_IPv6 |
2.2 Observium
Nous allons maintenant télécharger et décompresser observium, puis créer quelques dossiers nécessaires :
cd /var/www/ wget http://www.observium.org/observium-latest.tar.gz tar -xzf observium-latest.tar.gz rm -f observium-latest.tar.gz cd /var/www/observium mkdir graphs rrd chown -Rf www-data. . |
Nous créons un fichier de configuration basique :
cp |
cp config.php.default config.php |
2.3 MySQL
Passons à la base de données. Il va falloir la créer avec un utilisateur (n'oubliez pas de remplacer le password) :
mysql |
> mysql -uroot -p mysql> CREATE DATABASE observium; mysql> GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost' IDENTIFIED BY '<password>'; mysql> flush privileges; |
Changeons dans le fichier de configuration la localisation d'Observium, ajoutons une entrée pour fping et modifions les champs SQL pour les adapter avec les bonnes données :
Ensuite, nous allons importer le schema pour la construction de la base :
mysql |
mysql -uobservium -p observium < database-schema.sql |
Et nous allons updater la base avec quelques mises à jour :
scripts/update-sql.php database-update-pre1000.sql scripts/update-sql.php database-update-pre1435.sql scripts/update-sql.php database-update-pre2245.sql scripts/update-sql.php database-update.sql |
2.4 Apache
Puis nous allons créer la configuration apache pour ce nouveau site (n'oubliez pas de faire l'enregistrement dns) :
Puis on active cette nouvelle configuration, on s'assure que le module rewrite est bien actif et on reload apache :
a2ensite |
a2enmod rewrite a2ensite observium /etc/init.d/apache2 reload |
2.5 SNMP
Pour le SNMP, nous allons éditer le fichier de configuration pour lui ajouter une ligne contenant des informations sur les mibs :
2.6 Contrab
Il va vous falloir créer un utilisateur admin par exemple et ajouter un host avant d'initialiser et récupérer les premières données.
Une fois fait, on lance pour la première fois la moulinette :
./discovery.php -h all ./poller.php -h all |
Et enfin on créer un fichier de cron pour ce service :
Et enfin, on reload le service :
/etc/init.d/cron reload |
3 Configuration
3.1 Ajouter un utilisateur
Ceci est normalement uniquement pour l'admin. Ensuite il est préférable d'avoir un backend en LDAP :
/var/www/observium/adduser.php <username> <password> 10 |
- 10 : C'est le niveau de droits allant de 0 à 10 (10 étant admin).
3.2 Ajouter une machine à surveiller
Voici comment rajouter une machine pour la monitorer en SNMP :
addhost.php |
/var/www/observium/addhost.php <hostname> <community> v2c |
Voici un exemple :
addhost.php |
> /var/www/observium/addhost.php localhost public v2c Created host : localhost (id:1) (os:linux) |
3.3 Collectd
Si vous souhaitez ajouter Collectd à vos graphs de serveurs, c'est possible. Il vous faut pour cela éditer la configuration du serveur et rajouter ceci :
config.php |
... ### Locations $config['collectd_dir'] = '/var/lib/collectd/rrd'; ... |
Côté client, il faut s'assurer que la variable Hostname soit correctement configurée, comme par exemple :
Hostname "localhost" |
Tous les serveurs existants dans collectd doivent exister sur Observium. C'est pour cela que nous allons ajouter automatiquement toutes les machines :
addhost.php |
cd /var/lib/collectd/rrd/ ; for i in * ; do /var/www/observium/addhost.php $i lookullink v2c ; done |
3.3.1 Hack hostname en majuscule
J'ai beau avoir contacté les dev d'Obervium, vous aurez des soucis si vous voulez intégrer Collectd avec des hostnames ayant des noms avec des majuscules. En effet, du fait qu'il soit logique d'avoir des hostname en minuscule, ils se sont dit qu'ils ne géreraient pas les majuscules. Et si comme moi vos hostnames sous Collectd sont en majuscule, impossible alors de faire une intégration. J'ai chercher 1000 manières de contourner proprement ce problème et à chaque fois ça nécessitait de la réécriture de code et non de la configuration côté Collectd ou Observium.
Bref, j'ai donc fini par modifier le code, mais très très très légèrement. En fait je me suis simplement occupé du script de création d'host pour qu'il créer des liens symbolique (je sais c'est pas ultra propre) :
4 Ressources
http://www.observium.org/wiki/Ubuntu_SVN_Installation
http://www.outsidaz.org/blog/2012/02/09/deploying-observium-on-rhel6-with-selinux/