Grafana est un logiciel Open Source qui permet de réaliser des dashboards et des graphiques de données qui dépendent du temps. Grafana fonctionne sur PC Windows (64-bits), macOS et Raspbian pour Raspberry Pi. Grafana supporte 6 bases de données (CloudWatch, Elasticsearch, Graphite, InfluxDB, OpenTSDB et Prometheus). Grafana est très bien adapté pour afficher des données en provenance d’objets connectés. C’est une solution de choix pour créer un dashbord élégant pour vos projets Arduino, ESP8266 ou ESP32.
Dans ce tutoriel nous allons voir comment installer Grafana sur Raspberry Pi ou macOS. On utilisera les mesures d’une sondes de température développée avec un Arduino Nano et la librairie MySensors. Les données ont été collectées à l’aide de Node-RED puis stockées dans une base de données InfluxDB.
Sommaire
- 1 Exemple, fabriquer un dashboard pour vos objets connectés DIY
- 2 Installer Grafana sur Raspbian pour Raspberry Pi
- 3 Installer Grafana sur macOS
- 4 Première connexion à Grafana
- 5 Ajouter des sources de données (Data sources)
- 6 Ajouter un Dashboard
- 7 Ajouter des mesures d’une sonde DHT22 MySensors
- 8 Premiers graphiques Grafana
- 9 Tutoriels objets connectés DIY
Exemple, fabriquer un dashboard pour vos objets connectés DIY
Pour montrer ce qu’on peut faire avec Grafana, je vous propose d’utiliser le projet précédent de sonde de température développée avec un Arduino Nano. Les mesures sont transmises par ondes radio à une Gateway MySensors. On utilise Node-RED pour récupérer et décoder les mesures transmises à l’aide du protocole MySensors. Les mesures de température et d’humidité seront stockées dans une base de données InfluxDB. Enfin, on connectera Grafana à la base de données InfluxDB pour tracer les graphiques en temps réel.
Avant de vous lancer dans l’installation de Grafana et la réalisation du dashboard, voici quelques articles à lire pour débuter
Bien débuter avec la libraire MySensors v2
La librairie permet de développer des objets connectés qui communiquent par ondes radio. Idéal en l’absence de couverture WiFi pour créer un réseau d’objets connectés
Fabriquer une Gateway WiFi avec un module ESP8266
Il est très facile de communiquer avec un réseau d’objets connectés MySensors depuis en serveur domotique en fabriquant une Gateway WiFi à l’aide d’un module ESP8266
Fabriquer une sonde de température Arduino Nano DHT22 MySensors
transmission par ondes radio avec MySensors v2 et nRF24L01
Installer InfluxDB sur Raspberry Pi, Windows, macOS
Découverte du Shell. Créer une base de données, politique de rétention
MySensors v2 : décoder/envoyer des messages avec Node-RED
Il est très facile de décoder le protocole MySensors avec Node-RED
Enregistrer des mesures d’un objet connecté MySensors dans une base InfluxDB à l’aide de Node-RED
Comment utiliser Node-RED pour enregistrer des mesures en provenance d’objets connectés MySensors, Arduino Serial, MQTT… dans une base de données InfluxDB
Installer Grafana sur Raspbian pour Raspberry Pi
Avant d’installer Grafana, il est nécessaire d’installer quelques ressources et d’indiquer à Raspbian ou récupérer les sources de Grafana
sudo apt-get install apt-transport-https curl curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add - echo "deb https://dl.bintray.com/fg2it/deb stretch main" | sudo tee -a /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install grafana
L’installation ne dure que quelques minutes.
Par sécurité, le protocole HTTP qui permet d’accéder à l’interface WEB à l’API de Grafana est désactivé. On on va modifier le fichier de configuration et activer le protocole HTTP en modifiant le fichier /etc/grafana/grafana.ini
sudo nano /etc/grafana/grafana.ini
Dé-commentez le protocole http et le port. Par sécurité, vous pouvez également restreindre l’accès à Grafana aux postes spécifiés avec la clé http_addr
[server] # Protocol (http, https, socket) protocol = http # The ip address to bind to, empty will bind to all interfaces ;http_addr = # The http port to use http_port = 3000
Après avoir effectué ces modifications, on redémarre le service Grafana
sudo service grafana-server restart
Installer Grafana sur macOS
Grafana s’installe sur macOS à l’aide de Homebrew. Homebrew est un gestionnaire de paquets pour macOS (page officielle du projet).
Ouvrez un Terminal et exécutez cette commande
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Répondez aux questions pour terminer l’installation de Homebrew sur votre Mac.
Maintenant, on peut installer Grafana très facilement en exécutant cette commande (source des commandes).
brew install grafana
A la fin de l’installation Brew nous donne quelques indications précieuses sur les répertoires d’installation (pas toujours très bien documentés)
==> Downloading https://homebrew.bintray.com/bottles/grafana-3.1.1.el_capitan.bottle.1.tar.gz ######################################################################## 100,0% ==> Pouring grafana-3.1.1.el_capitan.bottle.1.tar.gz ==> Using the sandbox ==> Caveats To have launchd start grafana now and restart at login: brew services start grafana Or, if you don't want/need a background service you can just run: grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /usr/local/share/grafana cfg:default.paths.logs=/usr/local/var/log/grafana cfg:default.paths.data=/usr/local/var/lib/grafana cfg:default.paths.plugins=/usr/local/var/lib/grafana/plugins ==> Summary ? /usr/local/Cellar/grafana/3.1.1: 2,727 files, 94.0M
On démarre le service Grafana avec cette commande (acceptez les connexions entrantes dans la fenêtre qui s’ouvre après quelques instants).
brew services start grafana
La mise à jour se fera avec cette commande
brew reinstall grafana
Si vous aimez l’aventure et essuyer les plâtres, vous pouvez aussi tester la version de développement.
brew install --HEAD grafana/grafana/grafana
La mise à jour se fait avec la commande
brew reinstall --HEAD grafana/grafana/grafana
Première connexion à Grafana
Ouvrez n’importe quel navigateur internet et saisissez cette adresse
http://localhost:3000/login
Grafana dispose de son propre système de gestion d’utilisateur avec authentification et gestion de droits. On peut se connecter avec l’identifiant admin/admin
Ou créer directement un nouveau compte utilisateur. Dans ce cas, on doit renseigner un nom, un email et un mot de passe.
On arrive sur un écran d’accueil vide
Lorsqu’on vient de créer un compte, la dernière chose qu’il reste à faire est la création d’une organisation.
Ajouter des sources de données (Data sources)
Avant de pouvoir tracer quoi que ce soit, il faut déjà ajouter des sources de données. Allez dans le menu puis Data sources.
Grafana supporte 6 sources de données :
- CloudWatch. C’est un service de surveillance pour les utilisateurs de ressources Amazon AWS
- Elasticsearch. C’est une base de données orientée document qui est très performante pour réaliser très rapidement des recherches dans de très grands volumes de données.
- Graphite. Une base de données Open Source pour le monitoring adaptés pour surveiller des services ou des sites internet (entre autre)
- InfluxDB. Une base de données Open Source développée par la société InfluxData spécialisée dans l’enregistrement de données fonction du temps. Elle est très bien adaptée pour collectée des mesures en provenance d’objets connectés
- OpenTSDB. Equivalent d’InfluxDB
- Prometheus. Egalement un équivalent à InfluxDB. Prometheus est disponible pour macOS, Linux et Windows.
Cliquez sur Add data source pour commencer l’ajout d’une nouvelle source de données.
Connecter une base InfluxDB
Dans ce tutoriel, nous allons nous connecter à une base de données InfluxDB alimentée par des mesures d’une sonde de température DHT22 (réalisé avec la librairie MySensors) à l’aide d’un flow Node-RED. InfluxDB est une base de données spécialisée dans l’enregistrement de données qui dépendent du temps. C’est exactement le cas des objets connectés qui produisent des mesures (taux de CO2, luminosité d’une pièce, température) ou des états (ouverture d’une porte, alarme…).
Configurer la data source :
- Name : donnez un nom à la source de donnée. C’est le nom qui sera affiché dans la liste des sources lors de la création d’un graphique.
- Default : cochez si c’est votre source de données par défaut pour gagner un peu de temps
- Type : choisissez InfluxDB
- Url : l’adresse de la base de données. Si Grafana est installé sur la même machine que la base de données, ce sera http://localhost:8086. Adaptez l’Url en fonction de votre configuration.
- Http Auth : Choisissez le mode d’authentification adequate si votre base est protégée
- Database : le nom de la base sur laquelle est branchée la source
- User et Password : si vous avez mis en place une protection sur cette database, renseignez les champs.
- Enregistrez avec Save & Test. Si tout est correct un message vert Success, Data source is working doit apparaitre en bas
Dans cet exemple, j’ai configuré deux sources de données : Températures et Humidité.
Ajouter un Dashboard
Passons aux choses sérieuses maintenant et ajoutons un nouveau Dashboard qui va contenir nos graphiques. Ouvrez le Menu puis Dashboards puis + NEW.
Donnons lui un nom. Appuyez sur la roue crantée puis Settings (dans la barre).
Donnez un nom au Dashboard. Ici, j’ai donné le nom Capteurs MySensors.
Enregistrez avec le petit disque ou CTRL+S.
Ajouter des mesures d’une sonde DHT22 MySensors
Ouvrez le Dashboard. L’ergonomie est un peu déroutant. Pour ajouter un graphique (ou un autre élément du Dashboard), il faut ouvrir le petit tiroir vert situé sur le bord gauche de l’écran.
La première chose à faire et de choisir la source de données. Par exemple sélectionnez la source Température dans la liste Panel data source.
Dépliez ensuite la source A. Sélectionné la donnée à afficher. Ici, on choisira noeud3 (qui correspond au noeud 3 de l’objet MySensors sur lequel je récupère les mesures). Le champ Alias By permet d’attribuer une étiquette qui sera affichée dans la légende. Sinon par défaut, Grafana utilise le nom de la source utilisée.
Allez ensuite dans l’onglet General et donnez un titre au graphique (qui sera affiché en haut du graphique).
Maintenant, dans l’onglet Axes, on peut préciser l’unité de la mesure. Dans ce cas, on choisira °C.
On peut aussi définir la valeur mini (Y-Min) et maximum (Y-Max) de l’échelle. Il est aussi possible de créer un seconde axe Y à droite. Enfin, on peut ajouter des lignes (ou zones) de seuil (Thresholds) qui permet de définir une zone dans laquelle on voudrait que la mesure se trouve. La version 4 introduit un système d’alerte très utile que nous découvrions dans un prochain tutoriel.
Dans l’onglet Legend, on peut activer ou désactiver son affichage et choisir des valeurs supplémentaires : minimum, maximum, moyenne (avg pour average), actuelle (current), total et enfin le nombre de décimales.
Enregistrez le graphique avec le disque ou Ctrl+S.
Premiers graphiques Grafana
Une fois la configuration terminée, voici ce que l’on obtient. Ce graphique affiche les mesures récupérées depuis une sonde radio 433MHz développée avec un Arduino Nano et la librairie MySensors. Il retourne les mesures d’un sonde Dallas DS18B20 étanche ainsi que la température et l’humidité d’un DHT22.
On peut faire un zoom sur une portion du graphique avec la souris ou à l’aide du sélecteur de période.
Ouvrez le pour définir une plage personnalisée. On peut choisir à droite des présélections ou manuellement. Le mot clé now est utilisé pour définir le temps actuel (maintenant). Si on veut les mesures sur la dernière heure, il suffit d’indiquer now-1h. Jusqu’à maintenant (To -> Now). Enfin, si on souhaite que le graphique soit actualisé régulièrement, on peut choisir la fréquence dans la liste Refreshing every). Ici, le graph sera actualisé toutes les 5 secondes.
Voilà, c’est terminé pour cette première partie. Grafana est vraiment un outil de présentation graphique très puissant et assez simple d’utilisation.
Tutoriels objets connectés DIY
D’autres tutoriels pour fabriquer vos objets connectés DIY
Voir tous les autres tutoriels de la catégorie objets connectés
Mises à jour
[06/06/2018] – Procédure d’installation de Grafana sur Raspbian Stretch. Liens vers les autres tutoriels pour développer un dashboard pour IoT avec Grafana
Avez-vous aimé cet article ?