Monitorez vos serveurs avec Grafana! Création du tableau de bord

2018-12-06 | Loïc BOURG

image article

Cet article est le dernier d'une série de trois articles à propos du monitoring avec Grafana

Création du Tableau de bord

Le but ici est de créer un tableau de bord par serveur monitoré.
*Si vous ne voulez pas créer vous même les dashboard, vous pouvez aller à l'étape Automatisation de la création des tableaux de bords.

Sur la page d'accueil de Grafana, allez dans Create > Dashboard

Une fois votre tableau de bord créé, il va falloir ajouter les graph affichant les métriques que vous voulez monitorer.

GRAPHIQUE DE MEMOIRE UTILISEE
Ajoutez un graph (bouton Add Panel en haut à droite), puis cliquez sur son titre pour pouvoir l'editer.

Tout d'abord indiquez un titre en allant sur l'onglet General (vous pouvez aussi cocher la checkbox Transparent je trouve ça plus beau :D).

Allez ensuite dans l'onglet Metrics. Ici il va falloir indiquer quelles métriques ce graph doit afficher.
Choisissez d'abord la Data Source que vous avez créé dans l'étape Configuration source de données de l'article sur la configuration des outils.
Indiquez ensuite dans métrique mem_used_percent sans agrégateur avec comme alias ce que vous voulez afficher en légende (utilisation mémoire par exemple)

Vous devriez maintenant avoir votre premier graphique d'affiché. Youpi ! \o/

Malheureusement ce n'est pas encore fini, actuellement ce graph affiche les courbes de mémoires de TOUS les serveurs.
Vous remarquerez aussi qu'il y a un problème d'échelle puisque l'on affiche des pourcentages alors que l'axe Y (vertical) ne va pas jusqu'à 100

Pour ne pas avoir l'utilisation mémoire de tous les serveurs qui s'affiche sur ce graph il va falloir ajouter un filtre sur le host de type literal_or sur votre hostname.
Si vous n'êtes pas sur du hostname de la machine monitorée, lancez la commande hostname sur la machine pour qu'il s'affiche.

Pour régler le problème d'axe allez dans l'onglet axe du graph.
Pour l'axe Y, choisissez percent (0-100) en unité et indiquer 0 en Y-Min et 100 en Y-Max

Vous avez maitenant votre premier graphique 100 % fonctionnel !

graph mémoire

GRAPHIQUE UTILISATION DISQUE

Même principe que précédemment avec disk_used_percent à la place de mem_used_percent.
Utilisez plutôt $tag_path comme alias pour afficher le point de montage monitoré (il y a une courbe par point de montage).

GRAPHIQUE UTILISATION PROCESSEUR

Toujours même principe, sauf que vous pouvez afficher à la fois l'utilisation cpu utilisateur (cpu_usage_user) et système (cpu_usage_system)

GRAPHIQUE OPERATION DISQUE
Etant donné que l'on recoit un nombre d'octets pour les métriques (diskio_write_bytes et diskio_read_bytes) au lieu d'un pourcentage, celui ci est un peu différent.

Il va falloir utiliser un agrégateur de type somme (sum) et indiquer dans la requéte OpenTSDB que c'est un taux en cochant la checkbox Rate.
La configuration des axes est également un peu différente, il faut indiquer que ce sont des octets (Bytes) pour l'axe Y. Pour un peu plus de confort il est également intéressant de modifier l'affichage de la légende (onglet Legend):

  • Afficher la légende en mode table (as Table)
  • Afficher les valeurs Maximales(Max), Moyennes (Avg) et Courantes (Current)

Et voila vous avez devriez maitenant avoir un tableau de bord avec 4 graphiques, indiquant en direct les informations sur votre serveur !

tableau de bord final

Ajout des alertes aux graphiques

tableau de bord final

Dans Grafana, les alertes sont directement liées au graphiques, c'est la raison pour laquelle nous créons un tableau de bord par serveur.

Pour en créer une, allez dans l'onglet Alert > Créez un nouvelle alerte

Vous pouvez ensuite définir le seuil critique. Par exemple 75 % pour l'utilisation disque.
Le plus pratique pour définir ce seuil est de bouger via drag and drop le coeur qui s'est affiché à droite du graphique lors de la création de l'alerte.
Une fois que vous avez défini votre seuil, vous pouvez vérifier que votre alerte fonctionne en utilisant le bouton Test Rule

Une fois votre alerte en place, vous devriez avoir un cœur s'affichant à côté du titre de votre graphique, affiché en vert quand tout va bien et en rouge en cas d'alerte.

N'oubliez pas de sauvegarder votre tableau de bord avant de quitter

Automatisation de la création des tableaux de bords

Chaque tableau de bord dans Grafana correspond à un fichier JSON que vous pouvez télécharger.

Ce principe permet de faciliter la création de tableau de bord, car il est également possible d'importer un tableau de bord à partir d'un fichier JSON.

Si vous voulez un tableau de bord de ce type:

graph complet

Vous pouvez le créer en suivant ces étapes:

  • Créez un dashboard
  • Allez dans Settings (en haut à droite) > JSON Model
  • Collez le json présent dans ce gist https://gist.github.com/loicbourg/a32b18fb586e7ba73bcbb2c75aa10ba6
  • Remplacez toutes les occurences de __DATASOURCE__ par le nom de votre Data source OVH
  • Remplacez toutes les occurences de __HOSTNAME__ par l'hostname de votre serveur
  • Remplacez toutes les occurences de __UID__ par un identifiant unique
  • Sauvegardez les changements

Vous devriez maitenant avoir un joli tableau de bord pour votre serveur avec quelques informations supplémentaires.

Vous pouvez également passer par l'api Grafana, comme nous le faisons, pour automatiser la création de tableau de bord pour vos serveurs.
Si ce fonctionnement vous intéresse, nous pourrons faire un article expliquant comment nous gérons cette partie.

Aller plus loin

Il y a beaucoup d'autres métriques qui pourraient être monitorées en fonction des applications :

  • Requêtes HTTP par minute
  • Performances MYSQL
  • Métriques applicatives (nombre de connexions par heures envoyées via statsd par exemple)

Un grand nombre de plugins sont préinstallés avec Telegraf. Ils permettent d'envoyer de nombreuses métriques différentes pour beaucoup de services.
La liste exhaustive se trouve ici: https://github.com/influxdata/telegraf#input-plugins

Conclusion

Tous les objectifs que nous voulions pour notre solution de monitoring ont été atteints.
Nous sommes satisfait de ces outils. Ils nous permettent d'avoir une solution d'alerting solide pour 40 € par mois (39$ Grafana + 5€ openTSDB).

Nous n'avons pas d'augmentation de coût jusqu'à 66 serveurs. Si nous souhaitons aller au dela de cette limite, il y aura une augmentation de 15€ au niveau d'OVH Metrics pour aller jusqu'à 666 serveurs.

Et vous, comment monitorez vous vos serveurs en IaaS ?

AdminSys Grafana