====== Présentation ======
Le collecteur de métrique est un démon, il s'agit de carbon. Il est prévu avec un système de cache, et de relais, pour être mis à l'échelle au besoin.
Par défaut il écoute sur le port 2003 en TCP.
L'idée du protocole utilisé ce veut la plus simple possible:
nom.de.la.metrique valeur date
N'importe quel programme qui peut envoyer ce texte vers carbon peut donc participer à la collecte des métriques.
Les métriques sont ensuite stockées dans la base de données de type round-robin (RRD) appelée whisper. Pour une métrique plateforme.serveur.metrique.1 la base créera un chemin sur le système de fichier équivalent (plateforme/serveur/metrique/1.wsp).
Il est important de bien choisir la granularité des données à conserver et sur quel interval.
====== Architecture simple ======
Dans l'ordre:
- Des métriques sont collectées sur les serveurs via collectd
- collectd les met à disposition via un plug network
- bucky interroge ce plugin pour récuperer les stats, formate le nom des métriques et les envoye à carbon
- carbon reçoit les données, et les stock dans whisper
- graphite est la partie frontend web pour faire les graphiques
==== Mise en oeuvre ====
=== Installation des paquets ===
Pour la partie carbon/whisper
yum install python-carbon python-whisper
Pour la partie graphite:
yum install graphite-web
=== Configuration ===
La partie graphite-web a besoin de stocker quelques données, principalement des paramètres liés au préférences des utilisateurs, sessions, etc dans une base de données classique. Il est tout à fait possible de rester sur du sqlite pour cette partie, ou du MySQL ou autre, mais il faut penser du coup à installer les dépendances nécessaires pour que python puisse s'y connecter.
yum install MySQL-Python
Le fichier de configuration est /etc/graphite-web/local_settings.py et voici un exemple de configuration d'une connexion à un serveur MySQL:
DATABASES = {
'default': {
'NAME': 'graphite',\
'ENGINE': 'django.db.backends.mysql',\
'USER': 'graphite',\
'PASSWORD': 'graphite',\
'HOST': 'localhost',\
'PORT': '3306',\
}
}
Il faut bien sûr créer la base et l'utilisateur en question.
Pour peupler la base:
cd /usr/lib/python2.6/site-packages/graphite ; ./manage.py syncdb
=== Selinux ===
Par défaut Apache qui execute le moteur graphite-web doit lire les fichier carbon/whisper. Il faut donc changer le label par défaut de ces fichiers :
semanage fcontext -a -t httpd_sys_content_t '/srv/carbon(/.*)?'
Sans cela il y aura des erreurs SeLinux et graphite-web ne pourra lire les métriques.