Monitorer son serveur avec Grafana, Graphite, et collectdb

Introduction

La surveillance des serveurs se fait souvent à l'aide de graphiques.
Avec Grafana, vous allez découvrir une interface moderne, et personnalisable. Les trois logiciels présentés ici sont open sources.
Grâce à cette documentation, vous allez apprendre à surveiller un parc de serveur à l'aide des outils Grafana, Graphite et collectd. Le but de cette documentation est de découvrir Grafana. Même si vous allez ici monitorer des serveurs, Grafana s'ouvre à bien plus de domaines, tels que les objets connectés, le suivi de capteurs embarqués, ...
La procédure décrite ici est valide pour les serveurs fonctionnants sous Debian.

Graphite

Graphite est logiciel de surveillance. Le logiciel est séparé en deux activités :

  • Le stockage des données
  • Le rendu graphique ou par API de ces données

Graphite fonctionne à l'aide de trois composants :

  • Carbon : Le démon écoutant les nouvelles données
  • Whisper : Une simple base de données
  • Graphite-web : Une application web pour la création de graphique, et la gestion de l'API. L'application nécessite un serveur Web (Apache ou Nginx)

Graphite en lui même n'a pas de moteur de métriques, il ne fait que recevoir, stocker et redistribuer les données. Il est capable de supporter plus de 3 millions de métriques par minutes sur un simple serveur physique.

Grafana

Grafana est un tableau de bord compatible avec de nombreuses sources de métriques (Graphite, InfluxDB, OpenTSDB). Il fournit un moyen puissant pour visualiser ses données et est entièrement configurable. Il est développé en Go et Javascript.

Collectd

Collectd est le démon utilisé sur les serveurs à surveiller. Il envoit les données dans la base Graphite.

Installation de Graphite

apt-get install apache2 libapache2-mod-wsgi graphite-web graphite-carbon

Quand graphite-carbon vous demande si vous voulez supprimer la base de données, répondez "No"
Configuration de carbon :
nano /etc/default/graphite-carbon

Changez la valeur de CARBON_CACHE_ENABLED à true, sauvegardez le fichier.

nano /etc/carbon/carbon.conf

Vous pouvez maintenant activer la rotation des logs en mettant la variable ENABLE_LOGROTATION à true. Vous pouvez aussi augmenter le nombre maximal de métriques crées par minutes en passant MAX_CREATES_PER_MINUTE à 600 (au lieu de 50). Sauvegardez le fichier

Copiez le fichier storage-aggregation et démarrez le service carbon-cache :

cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
service carbon-cache start

Configuration de graphite-web :

nano /etc/graphite/local_settings.py

Décommentez la ligne (en enlevant le #), et ajoutez une suite de caractères aléatoires :
SECRET_KEY = 'jkfdjlskfjdslkjopelezkmlezakmlza5654trlkre'

Décommentez et changez la zone de temps en mettant la votre : TIME_ZONE = 'Europe/Paris'

Initialisez la base de configuration Graphite :
graphite-manage syncdb

Quand graphite vous demande de créer un compte utilisateur, dites oui, et créez le.
Mettez graphite en propriétaire de la base de donnée graphite :
chown _graphite:_graphite /var/lib/graphite/graphite.db

Configuration de Apache, pour graphite :

a2dissite 000-default
cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
a2ensite apache2-graphite
service apache2 restart

Si vous allez sur l'adresse de votre serveur, vous devriez voir l'interface de graphite.
Il est bien entendu, possible de mettre graphite sur un autre port, et / ou un nom de domaine spécifique, mais la manipulation ne sera pas abordée dans cette documentation.

Installation de Grafana

Ajoutez les dépots dans le fichier /etc/apt/sources.list :
deb https://packagecloud.io/grafana/stable/debian/ wheezy main

Les distributions Debian ont besoin du paquet apt-transport-https pour accéder aux dépots en HTTPS :
apt-get install apt-transport-https

Récuppération de la clé du dépot, et installation de Grafana :

curl https://packagecloud.io/gpg.key | apt-key add -
apt-get update
apt-get install grafana
service grafana-server start

Grafana est démarré par défaut sur le port 3000.
Pour démarrer Grafana au redémarrage du serveur :
update-rc.d grafana-server defaults 95 10

Si vous vous rendez sur l'adresse de votre serveur, avec le bon port, vous devriez voir l'interface de grafana : http://[SERVEUR_IP]:3000

Installation de Collectd

Collectd s'intalle sur les serveurs à surveiller :
apt-get install collectd collectd-utils

Editez le fichier de configuration de collectd :
nano /etc/collectd/collectd.conf

Vous pouvez changer le Hostname par le nom de la machine. Vous pouvez activer et désactiver les plugins en commentant ou décommentant les lignes avec "PluginLoad". (Il faut aussi décommenter les blocs plus bas concernant chaque plugin.

Pour des raisons de performances, il est conseillé de désactiver tous les plugins ne vous étant pas utiles. Vous devez activer aussi le plugins graphite-write, et modifier l'adresse de celui-ci dans le bloc correspondant :

<Plugin write_graphite>
        <Carbon>
                Host "IP_DU_SERVEUR_GRAPHITE"
                Port "2003"
                Prefix ""
                Postfix ""
                StoreRates false
                AlwaysAppendDS false
                EscapeCharacter "_"
        </Carbon>
</Plugin>

Les prefix et postfix sont optionnels.
Démarrage de la collecte de données :
service collecd restart

Vous devriez voir apparaître des données dans l'interface web de graphite.

Configuration de grafana, et création du premier graphique.

En vous rendant sur l'interface de grafana, vous pourrez vous y connecter avec les identifiants admin:admin.
La première chose à faire est donc de changer le mot de passe du compte admin.
Il suffit de cliquer sur "admin" et "Change password".

Pour créer un tableau de bord, il suffit d'aller dans "Dashboards", de cliquer sur le menu en haut "Home" puis "New".

Vous devriez donc avoir une page vide. Pour ajouter un graphique, il faut maintenant cliquer sur le bouton vert à gauche de l'écran, puis "Add panel". Choisissez "graph".

En cliquant sur le graph, vous pouvez l'éditer et choisir ses métriques :

Graphana est le nom de votre serveur.
Load est le nom du plugin Collectd
Load (le deuxième) est le nom de la métrique

  • Signifie que l'ont veut toutes les données de la métrique
    Alias by node permet de n'avoir que le nom de la métrique visualisée, en retirant le nom du serveur.
    Vous pouvez aussi personnaliser l'aspect de vos graphiques :

Votre premier graphique est maintenant prêt. Renouvellez l'opération plusieurs fois pour avoir un tableau de bord complet.