Monitoring d’infrastructure avec la stack : Grafana – Telegraf – InfluxDb.

La mise en place du monitoring d’infrastructure est devenue essentielle pour écouter et surveiller ce qu’il se passe sur votre infrastructure (utilisation CPU, mémoire) ou le comportement des applications (Flux non envoyés, Build, Batch en échec, etc.).

Grâce à cela, on peut être plus réactif sur certaines anomalies et déclencher des actions en cas de problème.

Par exemple: Être alerté en cas d’utilisation anormale de CPU sur un serveur.

Dans le cadre d’une de nos missions en clientèle, nous avons mis en oeuvre une stack dédiée au Monitoring composée en plusieurs applications :

  • Grafana : Pour la présentation des informations de monitoring
  • Telegraf : Pour la collecte des données de monitoring
  • InfluxDb : Pour le stockage des données de monitoring

Cet article se propose de les décrire.

Grafana

Grafana

DashBoard Grafana

C’est un outil d’analyse des métriques et de dashboard. Il permet d’avoir une représentation des données à l’aide de différents graphiques.Un point fort de Grafana est qu’il est multi-datasource. Il est donc possible d’interroger une base InfluxDb, Graphique, ElasticSearch.

Une autre fonctionnalité importante de Grafana est l’Alerting. Il est, en effet, possible de notifier des anomalies lorsque des valeurs dépassent un certain seuil.

La notification peut se faire via plusieurs channels : Webhook – Mail – Slack etc…

InfluxDb

InfluxDb est un gestionnaire de base de données, open-source, orientée time-séries.

Il est conçu pour le stockage et la restitution de données de type métriques et événements et est développé par InfluxData (écrit en GO).

Telegraf

C’est un collecteur de données. Ces dernières sont récoltées de deux manières :

  • Soit en mode pull, dans ce cas, c’est Telegraf qui récupère la métrique.
  • Soit en mode push, la métrique est alors envoyée par une application via l’api exposée par Telegraf.

Chaque donnée récoltée est ensuite envoyée à InfluxDB.

L’application est décomposée en plugins ou chaque plugin permet de collecter une métrique en particulier.

Par exemple, un plugin permettant :

  • de faire du ping sur des serveurs,
  • de récupérer des infos depuis une base de données PostgersSQL,
  • d’obtenir les informations système d’un serveur,
  • etc…

Autres Outils

D’autres outils peuvent s’interfacer à cette stack afin de compléter le monitoring :

  • JMXTrans : C’est également un collecteur de données. Par contre, comme son nom l’indique, il est orientée dans la récupération des infos via JMX (Info JVM Tomcat par exemple). Les infos collectées  sont envoyées à InfluxDB.
  • Kapacitor : C’est un moteur de règle qui permet de définir des règles de déclenchement d’alertes. En le branchant à InfluxDB, les alertes déclenchées par les règles pourront être stockées. Kapacitor propose deux modes de fonctionnement:
    • Stream ⇒ InfluxDB pousse à Kapacitor les infos reçues. Ce dernier vérifie si une alerte doit être déclenchée via les règles définies dans le moteur.
    • Batch ⇒ Kapacitor interroge périodiquement InfluxDB et déclenche l’alerte si nécessaire.

Les alertes sont ensuite notifiées via différents Channels : Slack, Mail, Application tierce.

  • Alerta : Application tierce permettant de lister et d’afficher les alertes reçues soit par Kapacitor mais également par Grafana.

Alertes dans Alerta

Schéma technique

Schéma technique

Déploiement

Il est très facile de monter rapidement  cette architecture sur son poste via Docker.

En effet, un container existant pour chaque application de la stack, un simple docker-compose.yml suffit à monter et démarrer l’ensemble.

Voici un exemple de fichier:

déploiement docker

Liens

Enfin, nous vous proposons les liens suivants qui vous permettrons d’aller plus loin :

Grafana : https://grafana.com/

Telegraf : https://docs.influxdata.com/telegraf

InfluxDb : https://docs.influxdata.com/influxdb