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