Laisser un commentaire

Garder un œil sur ses serveurs avec Collectd

On a vu dans un précédent article comment garder un œil sur ses serveurs avec des rapports journaliers, mais ici, c’est d’une manière graphique que nous voulons voir nos serveurs, et surtout, voir l’évolution dans le temps. Quelle quantité de RAM est utilisée, quel espace disque reste-t-il, quelles sont les ressources CPU monopolisées par les services en fonctionnement…

En effet, il est primordial de savoir quand sont les pics d’activités, quand est-ce que le CPU est IDLE où quand on manque de RAM. Ça permet au webmaster ou admin système de prendre les décisions qui s’imposent et de prévoir l’évolution future des services sur nos serveurs.

Va-t-il par exemple falloir changer pour un serveur plus puissant, ou va-t-il falloir déporter la base de données sur un serveur à part entière parce que face au succès d’une application celui-ci ne peut plus gérer et apache et MySQL. Autant de questions auxquelles un outil de monitoring tel que Collectd va pouvoir répondre.

Bien d’autres outils existent, mais Collectd est très facile à mettre en place et, contrairement à Munin par exemple, il fonctionne en push, c’est à dire que ce n’est pas le serveur qui va se connecter à tous les clients pour récupérer les données, mais les clients qui vont “pousser” leurs données vers le maître. Cela allié au fait que Collectd soit écris en C (Munin est écrit en python), vous assurera de très bonnes performances, d’autant plus si vous avez à monitorer de nombreux serveurs.

Installer Collectd

Pour installer collectd, c’est le même paquet sur le client et le serveur, faites donc un install sur le serveur et le(s) client(s) :

apt-get install collectd

Le serveur

On va commencer par configurer le serveur. Rendez-vous donc dans le fichier de configuration à /etc/collectd/collectd.conf et activez les plugins ci-dessous en les décommentant.

# Server
LoadPlugin "syslog"
LoadPlugin "network"
LoadPlugin "rrdtool"
syslog
Récupère les messages du daemon et les dipatche dans le syslog.
network
Permet de paramétrer la communication avec les clients.
rddtool
Stocke les données.

Il faut aussi configurer le plugin network pour dire au serveur d’écouter les connexions. Rien de bien compliqué, on va juste lui indiquer quelles adresses ip il doit écouter :

# Server
<Plugin "network">
  # server setup:
  Listen "239.192.74.66" "25826"
  Listen "ip d'un autre serveur" "25826"

Il est utile de préciser qu’on peut mettre autant de clients que nécessaire dans les listen. Par ailleurs, vous pouvez renseigner une ipv4, une ipv6 ou un nom de domaine.

Que ce soit pour les clients ou le serveur, n’oubliez pas d’ouvrir le port 25826 (ou d’en définir un autre) pour que clients et serveur puissent communiquer.

Les clients

Passons donc à la conf des clients. Au niveau des clients, nous aurons besoin du plugin network pour qu’ils transmettent leurs données au serveur, mais aussi d’autres plugins afin de collecter quelques données. En revanche, nous n’avons pas besoin de RDDtool puisque c’est le serveur qui s’occupe des données. Je rapelle que le fichier de conf est à la même place que celui du serveur.

# Client
LoadPlugin "syslog"
LoadPlugin "network"
LoadPlugin "cpu"
LoadPlugin "memory"

Si vous monitorez plusieurs serveurs, il peut être intéressant d’activer le cache pour réduire les I/O :

# rélgez les options
<Plugin rrdtool>
    DataDir "/var/lib/collectd/rrd"
#    CacheTimeout 120
#    CacheFlush 900
#    WritesPerSecond 30
</Plugin>

Voici la doc pour réglez les options du cache.

Nous avons activé quelques plugins pour monitorez des choses basiques : la ram, le cpu… Vous devriez aller faire un tour sur la doc de Collectd pour en savoir plus sur les plugins disponibles et sur leur mise en place.

Visualiser les données

Collectd se contente de récolter les données et de les stocker. Nous voulons visualiser ces données sous forme de graphiques. Pour cela, il faut installer une interface web. Plusieurs interface sont compatibles. Pour voir un peu les différences entre ces dernières et ce qu’elles proposent, rendez-vous sur la page de Collectd qui les liste.

Pour ma part, j’ai choisi d’installer Collectd Graph Panel, alias CGP. C’est un script php qui tourne avec un serveur web et php. Installez donc apache et php si ce n’est pas déjà fait :

apt-get install apache2 php5

Il faut aussi que vous téléchargiez CGP à la racine de votre serveur web, en général, /var/www. Pour cela deux solutions, soit vous avez git et vous l’installez directement par git, soit vous téléchargez les sources et vous les dézippez. Nous allons ici utiliser la première méthode qui est la plus rapide.

# installez git si vous ne l'avez pas
apt-get install git

# rendez-vous ensuite dans votre dossier web
cd /var/www

# téléchargez CGP
git clone https://github.com/pommi/CGP.git

# extrayez tous les fichiers du dossier CGP
cd CGP/
mv * ../
cd ..

# effacer le index.html par défaut de apache
rm index.html

Il ne vous reste plus qu’à vous rendre à l’adresse de votre serveur maitre, et de visualiser toutes les données relatives à vos serveurs !

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```