Plugin Check my Website pour InfluxDB

Comment récupérer les métriques collectées par Check my Website pour les envoyer dans InfluxDB.

Nous suivons depuis le début les progrès de InfluxDB comme base de données de séries chronologiques. Et nous utilisons en interne Grafana pour nos tableaux de bord de suivi de production du service. Il était naturel que nous puissions envoyer les données collectées par le service vers ces deux là. En fait, Grafana, c’est fait depuis un moment !

Vous devez bien sûr avoir une instance Grafana et InfluxDB opérationelle pour pouvoir profiter des avantages du plugin. Cela va de soit mais ça va mieux en le disant ! Je vous fournit ci-dessous une base opérationnelle que vous pouvez utiliser pour les tests.

Installation de InfluxDB/Grafana

Je vais aller à l’essentiel en fournissant ci-dessous un fichier docker-compose qui vous permet d’avoir tout ce qu’il faut pour « jouer » avec le plugin ensuite.

influxdb:
  image: tutum/influxdb
  restart: always
  environment:
    - PRE_CREATE_DB=checkmyws;graphitedb
    - GRAPHITE_DB=graphitedb
    - GRAPHITE_PROTOCOL=udp
  ports:
    - 8083:8083
    - 8086:8086
  volumes:
    - ./var/influxdb:/data

grafana:
  image: grafana/grafana
  restart: always
  environment:
    - GRAFANA_VERSION=2.6.0
  links:
    - influxdb
  ports:
    - 3000:3000
  volumes:
    - ./var/grafana:/var/lib/grafana
    - ./log/grafana:/var/log/grafana

Si vous n’êtes pas familier de Docker, vous pouvez facilement installer InfluxDB et Grafana depuis les paquets officiels fournis pour les distributions principales.

Installation du plugin Check my Website

Avant d’installer le plugin, pensez à :

  • Récupérer l’identifiant du site dont vous souhaitez récupérer les données dans les préférences de la console Check my Website. L’identifiant a cette forme df532ea0-44a4-44d9-b2b0-3xxxxxxx
  • Passer la page de statut à publique toujours dans les préférences avancées de la console.

Récupérez le source du plugin et rendez exécutable le plugin

wget https://raw.githubusercontent.com/checkmyws/checkmyws-plugins/master/influxdb/cmws2influxdb.py
chmod +x cmws2influxdb.py

Installez les pré-requis

pip install docopt influxdb checkmyws-python

Test du plugin

./cmws2influxdb.py

Si le plugin est correctement installé, il répond

cmws2influxdb.py [-v] [-f] [--api=<api>] [--influxdb=<influxdb>] <check_id>...

Ou

  • --api est l’adresse web de l’API, par défaut [https://api.checkmy.ws/api]
  • --influxdb est l’adresse du serveur InfluxDB
  • <check_id> est l’identifiant du site que nous avons récupéré au préalable.
  • -f indique d’envoyer les valeurs sous forme de valeur à virgule flottante.

À partir de maintenant, nous assumons que vous avez un environnement InfluxDB/Grafana opérationnel. Vous pouvez pousser des métriques vers une URL InfluxDB, http://192.168.99.100:8086 dans mon cas.

Utilisation du plugin

Très simple !

./cmws2influxdb.py df562ea0-34a4-45d9-b3b0-3f00fbxxxxxxx --influxdb=influxdb://root:root@192.168.99.100:8086/checkmyws

Vous devriez voir apparaître des valeurs dans InfluxDB. Connectez-vous sur l’interface d’administration de InfluxDB sur le port 8083 et exécutez sur la base checkmyws la commande SHOW MEASUREMENTS.

Première données Check my Website dans InfluxDB
Première données Check my Website dans InfluxDB

Le fait que les noms de mesures apparaissent signifie bien que des premières données ont été reçues, compte tenu du mode de fonctionnement de InfluxDB.

Utilisation avancée du plugin

Le plugin expose par défaut un certain nombre de tags qui sont envoyés vers InfluxDB comme la ville city du contrôle, l’url et bien d’autres. Un tag dans InfluxDB est une simple paire clé/valeur arbitraire. C’est très puissant pour créer des graphiques ou tableaux de bord variabilisés. Ce sera l’objet d’un prochain article.

Une astuce vous permet de créer des tags de votre choix qui seront envoyés à InfluxDB pour en faire ce que vous voulez. En effet, le plugin expose les tags que vous créez via la console Check my Website sur l’API. Le plugin sait les récupérer !

Prenons le cas de quelqu’un qui veut regrouper des métriques par datacenter ou hébergeur. Il va créer un tag dc avec une valeur associée comme ovh par exemple.

Dans la console, rendez-vous dans les préférences de votre site et créez un tag sous cette forme dc:ovh

Création d’un tag InfluxDB dans la console
Création d’un tag InfluxDB dans la console

Vous retrouverez plus tard dans Grafana via InfluxDB ce tag sous cette forme dans l’éditeur de requêtes.

Tag personnel dans Grafana
Tag personnel dans Grafana

Création d’un graphique

Commençons par déclarer notre Data Source dans Grafana.

Création de la source de données dans Grafana
Création de la source de données dans Grafana

Adaptez bien sûr l’URL à votre setup. Si vous avez utilisez mon docker-compose.yml, vous pouvez indiquer les mêmes valeurs.

Et enfin, un premier graphique via l’éditeur de requêtes.

Création d’un graphique dans Grafana
Création d’un graphique dans Grafana

Juste un graphique essentiel présentant les temps de réponse serveur par lieu de contrôle. Je profite juste au passage du tag location pour regrouper chaque série par lieu de contrôle.

Le début d’une aventure dans les métriques

Ce premier billet n’est que le début d’une suite plus complète qui permettra de continuer à « jouer » avec les données Check my Website dans un environnement qui gagne à juste titre de plus en plus en popularité.

Les possibilités sont immenses pour arriver aux tableaux de bord de pilotage d’un site ou d’une application web les plus pertinents et complets. Le setup proposé ici permet de mélanger, aggréger de multiples sources de données, nous n’allons pas nous en priver et allons avancer en ce sens !

Olivier Jan

À propos de l’auteur

| Cofondateur de Check my Website.

Check My Website a arrêté son activité en 2017, n'hésitez pas à vous tourner vers Dareboost.