Table des matières

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:

  1. Des métriques sont collectées sur les serveurs via collectd
  2. collectd les met à disposition via un plug network
  3. bucky interroge ce plugin pour récuperer les stats, formate le nom des métriques et les envoye à carbon
  4. carbon reçoit les données, et les stock dans whisper
  5. 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.