Bien démarrer avec InfluxDB sur Raspberry Pi

Si vous cliquez sur nos liens et effectuez un achat, nous pouvons recevoir une commission d'affiliation. En savoir plus

InfluxDB est une base de données de séries temporelles qui stocke des données horodatées provenant d’objets connectés, comme par exemple des données environnementales. Installer InfluxDB devrait être simple, mais le fait qu’il existe de nombreuses versions complique la tâche. Dans ce tutoriel, je vais vous montrer comment installer InfluxDB sur votre Raspberry Pi.

InfluxDB peut être installé via le gestionnaire de paquets apt, une fois son dépôt officiel ajouté. La configuration se termine ensuite via l’interface web intégrée.

Il s’intègre également facilement avec Grafana pour la visualisation et l’analyse des données. Dans cet article, je vais expliquer les différences entre toutes les versions et fournir un guide concis pour installer et configurer votre base de données InfluxDB afin de surveiller les performances de votre Raspberry Pi.

Si, comme moi, vous mélangez parfois la syntaxe entre différents langages de programmation, j’ai exactement ce qu’il vous faut. J’ai créé une fiche mémo Python avec toute la syntaxe essentielle au même endroit, pour que vous puissiez l’avoir sous la main et éviter toute confusion. Téléchargez-la gratuitement ici !

Qu’est-ce qu’InfluxDB ?

InfluxDB est une base de données de séries temporelles. Comme toute autre base de données, elle stocke et interroge de grandes quantités de données, comme PostgreSQL, MariaDB et MySQL. Cependant, elle est plus optimisée pour les données horodatées, c’est-à-dire que l’index clé est le temps.

Les bases de données de séries temporelles sont traditionnellement utilisées dans l’analyse des marchés financiers et les configurations d’automatisation industrielle. Cependant, elles peuvent également être extrêmement pratiques pour les tâches de surveillance de systèmes, le DevOps, la surveillance IoT, et la surveillance des données de capteurs.

Prometheus, Graphite, et TimescaleDB sont des alternatives à InfluxDB. Cependant, contrairement à d’autres bases de données qui reposent sur des bases de données relationnelles (par exemple, TimescaleDB étant la version séries temporelles de PostgreSQL), InfluxDB a été conçu dès le départ comme une base de données de séries temporelles et est donc beaucoup plus optimisé.

InfluxDB possède également une version optimisée pour les appareils peu puissants comme le Raspberry Pi, en faisant un excellent choix pour une utilisation sur Raspberry Pi.

Comment installer InfluxDB sur Raspberry Pi

Maintenant que nous avons compris l’utilité d’InfluxDB, nous sommes prêts à l’installer. Bien qu’InfluxDB puisse être installé à l’aide d’une simple commande apt, il y a quelques éléments à prendre en compte.

Prérequis

Avant d’installer InfluxDB sur votre Raspberry Pi, assurez-vous d’avoir installé la dernière version de Raspberry Pi OS. Assurez-vous qu’il démarre correctement et que vous avez connecté un écran, un clavier, et une souris ou établi une connexion SSH.

Tutoriels recommandés :

Sélectionner la bonne version

Une autre chose importante à comprendre et peu intuitive concerne les différentes versions d’InfluxDB disponibles. InfluxDB est actuellement disponible en trois versions :

  • InfluxDB V1 : C’est la première version d’InfluxDB. Elle est axée sur le stockage de séries temporelles avec InfluxQL comme langage de requête et nécessite des outils séparés pour les tableaux de bord et le traitement.
  • InfluxDB V2 : C‘est une mise à jour de la première version. Cette version a introduit Flux comme langage de requête, un tableau de bord intégré, une authentification basée sur des jetons et une expérience plus simplifiée. Bien que Flux soit un langage de requête plus puissant qu’InfluxQL, en raison de l’apprentissage plus complexe de la V2 et de la stabilité de la V1, la plupart des gens préfèrent rester sur la V1.
  • InfluxDB V3 (Alpha) : Il s’agit de la dernière version d’InfluxDB. Cette version introduit des changements architecturaux majeurs utilisant Apache Arrow/Parquet, des requêtes SQL natives et des optimisations axées sur le cloud. Cependant, elle est encore en Alpha et n’est pas recommandée pour une utilisation en production.

J’ai fait de mon mieux pour résumer les différents aspects de chaque version, mais il y a encore beaucoup de choses à voir. Un facteur important à noter est que Flux est devenu un langage de requête obsolète. Par conséquent, l’équipe InfluxDB a décidé de revenir à un langage de requête basé sur SQL pour leur dernière version.

Téléchargez mon antisèche !
Si comme moi, vous avez tendance à mélanger les langages, téléchargez mon antisèche pour Python au format PDF.
Télécharger maintenant

Pour les besoins de ce tutoriel, nous avons choisi InfluxDB V2. Néanmoins, la procédure d’installation pour InfluxDB V1 est très similaire, et ce tutoriel peut également être utilisé pour installer la version V1.

Installation d’InfluxDB

Enfin, nous sommes maintenant prêts à installer InfluxDB sur notre Raspberry Pi. Pour ce faire, suivez ces étapes :

  • Assurez-vous que votre système est à jour en utilisant cette commande :
    sudo apt update && sudo apt full-upgrade
  • Ajouter la clé InfluxData pour vérifier les téléchargements et ajouter le dépôt :
curl --silent --location -O \
https://repos.influxdata.com/influxdata-archive.key
echo "943666881a1b8d9b849b74caebf02d3465d6beb716510d86a39f6c8e8dac7515  influxdata-archive.key" \
| sha256sum --check - && cat influxdata-archive.key \
| gpg --dearmor \
| sudo tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null \
&& echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' \
| sudo tee /etc/apt/sources.list.d/influxdata.list
  • Maintenant, vous pouvez installer InfluxDB V2 en utilisant cette commande :
    sudo apt update && sudo apt install influxdb2
  • Si vous voulez installer InfluxDB V1 à la place, vous pouvez utiliser cette commande :
    sudo apt update && sudo apt install influxdb
  • Maintenant, vous pouvez démarrer le service InfluxDB :
    sudo service influxdb start
  • Pour vérifier que le service a démarré, vous pouvez utiliser cette commande :
    sudo service influxdb status

C’est fait. Nous avons installé InfluxDB sur notre Raspberry Pi et pouvons commencer à le configurer et l’utiliser.

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Premiers pas avec InfluxDB

Maintenant qu’InfluxDB est installé sur notre Raspberry Pi, nous sommes prêts à commencer à l’utiliser. Il y a trois façons différentes d’interagir avec votre base de données InfluxDB.

  • Tableau de bord intégré (Disponible uniquement avec les versions 2 et 3)
  • Influx CLI 2.0.0+ (Disponible uniquement avec les versions 2 et 3)
  • InfluxQL Shell V1

Tableau de bord intégré

À partir de la version 2, un tableau de bord intégré est disponible. Le tableau de bord rend l’utilisation et le travail avec la base de données nettement plus intuitifs et conviviaux.

Si vous utilisez la version 1, passez directement à la section « InfluxQL Shell V1 » pour commencer.

Pour accéder à votre tableau de bord, suivez ces étapes :

  • Assurez-vous que votre serveur InfluxDB est en cours d’exécution avec cette commande :
    sudo service influxdb status
  • Ouvrez un navigateur web sur n’importe quel ordinateur connecté au même réseau que votre Raspberry Pi et naviguez jusqu’à l’adresse suivante :
    http://<NOM D’HÔTE OU ADRESSE IP>:8086
  • Vous serez accueilli par cette page web.
  • Cliquez sur « Get Started ».
  • Entrez les informations sur la page suivante et cliquez sur « Continue ».
  • InfluxDB affichera maintenant un jeton API sur votre Raspberry Pi. Ce jeton est nécessaire pour tous les privilèges Super Utilisateur. Copiez-le et sauvegardez-le quelque part, car il ne sera plus affiché après avoir quitté cet écran.
  • Cliquez sur « Quick Start ».
  • Vous verrez s’afficher différentes options de tutoriels sur l’utilisation d’InfluxDB avec divers langages de programmation. Choisissez le langage de programmation que vous préférez. Puisque je prévois de l’utiliser avec Python, je vais sélectionner Python.
  • Cela vous mènera à un tutoriel détaillé sur l’intégration d’InfluxDB avec le langage de programmation/l’environnement de votre choix. Suivez ce tutoriel pour apprendre tout ce dont vous avez besoin pour commencer.
  • Le tableau de bord intégré comprend de nombreuses options, y compris l’explorateur de données.
  • Et la possibilité de créer vos propres tableaux de bord pour visualiser les données.

Le tableau de bord intégré est un excellent outil dans la version 2 d’InfluxDB. Cependant, si vous êtes plus à l’aise avec le CLI, il est également disponible. Nous en parlerons ensuite.

Influx CLI 2.0.0+

Une autre façon d’accéder et de gérer votre base de données est via Influx CLI. Pour vous familiariser avec Influx CLI, suivez ces étapes :

  • Avant de démarrer Influx CLI, nous devons ajouter les données de configuration actives pour notre base de données. Vous pouvez le faire avec cette commande :
    influx config create --config-name CONFIG_NAME --host-url http://localhost:8086 --org ORG_NAME --token API_TOKEN --active
    (Remplacez CONFIG_NAME par le vôtre et API_TOKEN par celui que vous avez copié précédemment.)
  • Maintenant, vous pouvez accéder à la page d’aide du CLI en utilisant simplement cette commande :
    influx
  • Avant toute chose, nous devons créer un bucket. Pour ce faire, utilisez cette commande :
    influx bucket create --name <Bucket Name> --org <Org Name>
  • Par exemple, vous pouvez utiliser cette commande pour afficher la liste de tous les buckets disponibles dans votre base de données :
    influx bucket list
  • Maintenant, vous pouvez ajouter des données à votre bucket en utilisant la commande write :
    influx write --bucket <BUCKET NAME> "table_name,<tag_key>=<taga_value>,<tag_key>=<tag_value> <field_key>=<field_value>,<field_key>=<field_value> <timestamp>"
  • Nous pouvons ensuite utiliser la commande query pour voir les données à l’intérieur de notre bucket :
    influx query <FLUX QUERY>
  • Vous pouvez voir comment écrire des requêtes Flux sur la page de documentation.

Influx CLI peut être un peu déroutant au début. Mais vous pouvez entreprendre des fonctions plus compliquées une fois que vous le maîtrisez. Vous pouvez trouver une documentation détaillée concernant toutes les options de ligne de commande sur la page de documentation officielle.

InfluxQL Shell V1

InfluxQL Shell V1 est la méthode d’interaction par défaut pour la version 1 d’InfluxDB. InfluxQL Shell est également disponible pour la version 2 d’InfluxDB. Cependant, la version 2 utilise une architecture de stockage de données différente, c’est-à-dire que les bases de données et les politiques de rétention ont été remplacées par des seaux.

Mappage DBRP

Par défaut, chaque fois que vous créez un seau dans la version 2 d’InfluxDB, un mappage virtualisé DBRP est généré automatiquement. Cela vous permet d’accéder au seau depuis le shell InfluxQL en mode lecture seule. Pour vérifier vos mappages DBRP, vous pouvez utiliser cette commande :
influx v1 dbrp list

Si vous souhaitez accéder au seau en mode complet de lecture-écriture, vous devez créer un mappage DBRP manuellement en utilisant cette commande :
influx v1 dbrp create --db <Bucket_Name> --rp <Retention_Policy_Name> --bucket-id <Bucket_ID> --default

Comme vous pouvez le voir, notre nouvelle politique de rétention a été liée au bucket et définie comme politique de rétention par défaut pour ce bucket. Maintenant, nous pouvons utiliser le Shell InfluxQL V1 comme si nous utilisions la version 1 d’InfluxDB.

Utilisation du shell

Si vous avez installé la version 1 d’InfluxDB, c’est la partie du tutoriel par laquelle vous devriez commencer. Pour accéder et utiliser le Shell InfluxQL V1, suivez ces étapes :

  • Tapez cette commande et appuyez sur entrer pour accéder au shell :
    influx v1 shell
  • Si vous utilisez la version 1 et suivez directement cette partie du tutoriel, vous n’avez pas encore créé la base de données. Vous devez suivre ces étapes avant de continuer avec le reste du tutoriel :
    • Vous avez seulement besoin de cette commande pour accéder au shell :
      influx
    • Maintenant, vous pouvez utiliser cette commande pour créer une base de données :
      CREATE DATABASE <NOM BDD>
  • Nous devons d’abord indiquer au shell avec quel bucket nous travaillons. Pour cela, utilisez cette commande :
    USE "<NOM BDD>"
  • Nous pouvons maintenant insérer des données dans notre bucket en utilisant cette commande :
    INSERT <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
  • Pour afficher les données dans notre bucket, nous pouvons exécuter une simple requête SQL :
    SELECT * FROM <NOM DE LA TABLE>
  • En appuyant sur Entrée, toutes les données stockées dans le bucket seront affichées sous forme de tableau.

Comme vous pouvez le voir, InfluxQL Shell V1 est disponible dans les trois versions d’InfluxDB et est extrêmement facile et intuitif à utiliser. Sa syntaxe SQL rend la courbe d’apprentissage significativement plus facile pour les nouveaux venus.

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Vous voulez discuter avec d'autres passionnés de Raspberry Pi ? Rejoignez la communauté, partagez vos projets en cours et posez vos questions sur le forum (en anglais).

Téléchargez mon antisèche !
Si comme moi, vous avez tendance à mélanger les langages, téléchargez mon antisèche pour Python au format PDF.
Télécharger maintenant

Votre premier programme InfluxDB

Nous sommes prêts à créer notre premier programme InfluxDB. Dans ce tutoriel, nous allons créer une configuration de surveillance matérielle pour un Raspberry Pi. Un script Python enregistrera les statistiques matérielles dans la base de données, et nous utiliserons la fonctionnalité de tableau de bord intégrée d’InfluxDB V2 pour visualiser les données.

Préparation de l’environnement

Avant de commencer à écrire notre script Python, nous devons nous assurer que tous les programmes et bibliothèques requis sont installés et à jour. Pour ce faire, suivez ces étapes :

  • Assurez-vous d’avoir Python et pip installés et à jour en utilisant cette commande :
    sudo apt install python3 python3-pip
  • Nous devons maintenant créer un environnement virtuel pour notre configuration. Créons un dossier pour l’environnement virtuel en utilisant cette commande :
    mkdir /home/$USER/pythonVEnvs
  • Ensuite, créez l’environnement virtuel en utilisant cette commande :
    cd /home/$USER/pythonVEnvs && python3 -m venv influxDB
  • Enfin, nous pouvons activer notre environnement virtuel en utilisant cette commande :
    source influxDB/bin/activate
  • Une fois notre environnement virtuel activé, nous pouvons maintenant installer les bibliothèques nécessaires en utilisant cette commande :
    pip3 install influxdb-client psutil

Et voilà ! Notre environnement est prêt avec les programmes et bibliothèques requis.

Écrire et exécuter notre script Python

Pour cet exemple, nous utiliserons un script Python pour surveiller la température du CPU, l’utilisation du CPU, et l’utilisation de la mémoire de notre Raspberry Pi toutes les 10 secondes et l’enregistrer dans notre bucket. Pour ce faire, nous devons d’abord créer un bucket pour y enregistrer les données.

Vous pouvez créer un bucket en suivant ces étapes :

  • Allez à la section « Buckets » sur l’interface web.
  • Ensuite, cliquez sur « Create Bucket » et donnez-lui le nom « raspberryPiMonitor » par exemple.
  • Saisissez le nom du bucket et cliquez sur « Create ».

Une fois le bucket créé, nous pouvons maintenant commencer à travailler sur notre programme. Pour ce faire, créez un script Python (en anglais) en utilisant cette commande (ou tout autre éditeur de texte de votre choix) :
nano myPythonScript.py

Maintenant, copiez ce code et collez-le dans l’éditeur de texte :

# Import required libraries
from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS
import psutil  # Library to fetch system performance metrics
import time
import os

# -------------------------------
# CONFIGURATION - Set up InfluxDB connection details
# -------------------------------
INFLUXDB_URL = "http://localhost:8086"  # URL of InfluxDB (running locally in this case)

# IMPORTANT: Avoid hardcoding your token! Use an environment variable instead.
INFLUXDB_TOKEN = os.getenv("INFLUXDB_TOKEN")  # Fetch token from environment variable
INFLUXDB_ORG = "rpitips"  # Your InfluxDB organization name
INFLUXDB_BUCKET = "raspberryPiMonitor"  # Name of the InfluxDB bucket

# -------------------------------
# INITIALIZE INFLUXDB CLIENT
# -------------------------------
client = InfluxDBClient(url=INFLUXDB_URL, token=INFLUXDB_TOKEN, org=INFLUXDB_ORG)
write_api = client.write_api(write_options=SYNCHRONOUS)  # Use synchronous writes for simplicity

# -------------------------------
# FUNCTION: Get Raspberry Pi System Metrics
# -------------------------------
def get_system_metrics():
    """
    Collects hardware performance metrics of the Raspberry Pi.
    Returns:
        cpu_temp (float): CPU temperature in Celsius
        cpu_usage (float): CPU usage percentage
        ram_usage (float): RAM usage percentage
    """
    # Fetch CPU temperature using Raspberry Pi's built-in command
    cpu_temp = float(os.popen("vcgencmd measure_temp").readline().replace("temp=", "").replace("'C\n", ""))

    # Get CPU usage percentage (over a 1-second interval)
    cpu_usage = psutil.cpu_percent(interval=1)

    # Get RAM usage percentage
    ram_usage = psutil.virtual_memory().percent

    return cpu_temp, cpu_usage, ram_usage

# -------------------------------
# FUNCTION: Write Metrics to InfluxDB
# -------------------------------
def write_to_influxdb():
    """
    Fetches system metrics and writes them to the InfluxDB database.
    """
    # Get system performance metrics
    cpu_temp, cpu_usage, ram_usage = get_system_metrics()

    # Create a data point for InfluxDB
    point = (
        Point("raspberry_pi")  # Measurement name
        .tag("device", "raspberry_pi")  # Tag (useful for filtering in queries)
        .field("cpu_temperature", cpu_temp)  # Field for CPU temperature
        .field("cpu_usage", cpu_usage)  # Field for CPU usage
        .field("ram_usage", ram_usage)  # Field for RAM usage
    )

    # Write data to InfluxDB
    write_api.write(bucket=INFLUXDB_BUCKET, org=INFLUXDB_ORG, record=point)

    # Print confirmation message for debugging
    print(f"Data written: Temp={cpu_temp}°C, CPU={cpu_usage}%, RAM={ram_usage}%")

# -------------------------------
# MAIN LOOP: Collect and Store Data Continuously
# -------------------------------
if __name__ == "__main__":
    print("Starting Raspberry Pi monitoring... Data will be written every 10 seconds.")
    while True:
        write_to_influxdb()  # Collect and send data
        time.sleep(10)  # Wait 10 seconds before collecting the next data point

Assurez-vous de modifier les données de configuration, telles que les noms du « bucket » et d’organisation, en fonction de votre installation.

Avant d’exécuter le programme, vous devez définir la variable d’environnement INFLUXDB_TOKEN sur le jeton API de votre configuration InfluxDB en utilisant cette commande :
export INFLUXDB_TOKEN="Votre-jeton-d’API"

Enfin, exécutez ce programme avec cette commande :
python3 myPythonScript.py

Comme vous pouvez le voir, ce programme commencera à enregistrer les statistiques de performances de mon Raspberry Pi dans le bucket InfluxDB. Lisez la suite pour apprendre à configurer notre tableau de bord pour surveiller les données sauvegardées dans le bucket.

Visualisation des données

 Il existe plusieurs options pour visualiser vos données. Cependant, nous utiliserons l’option de tableau de bord disponible dans l’API web InfluxDB V2. Pour visualiser vos données, suivez ces étapes :

  • Naviguez jusqu’à la page « Dashboards » sur votre API web et cliquez sur « Create Dashboard » -> « New Dashboard. »
  • Vous serez accueilli par un tableau de bord vide, comme indiqué ci-dessous :
  • Vous pouvez ajouter des widgets graphiques au tableau de bord en cliquant sur « Add Cell ».
  • Sélectionnez le « Cell Name », le type de visualisation requis (par exemple, un graphique linéaire), le seau, le tableau et la série temporelle à afficher, et cliquez sur « Submit » pour obtenir un aperçu de la visualisation.
  • Enfin, vous pouvez cliquer sur la petite coche en haut à droite de la page web pour finaliser cette cellule et l’ajouter à votre tableau de bord.
  • L’ajout et la configuration de ces cellules vous permettent de personnaliser votre tableau de bord selon vos préférences.

Les tableaux de bord intégrés d’InfluxDB V2 sont intuitifs et faciles à utiliser. Cependant, InfluxDB peut être intégré à d’autres outils de visualisation.

Supposons que vous soyez plus à l’aise avec Grafana ou que vous utilisiez InfluxDB V1 (qui ne dispose pas des outils de tableau de bord). Dans ce cas, vous pouvez suivre ce merveilleux tutoriel sur l’utilisation de Grafana sur Raspberry Pi.

Tutoriels recommandés :

Comme vous pouvez le constater, InfluxDB est extrêmement facile et intuitif à installer et à utiliser. InfluxDB dispose d’une page de documentation qui peut être utilisée pour apprendre ou résoudre n’importe quel problème auquel vous pourriez être confronté.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets où je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources

Comment avez-vous trouvé cet article ?

Cliquez sur une étoile pour noter !

Note moyenne / 5. Nombre de votes :

Aucun vote pour l'instant ! Soyez le premier à évaluer cet article.

Si vous avez aimé cet article ...

Partagez le sur les réseaux

Nous sommes désolés que vous n'ayez pas aimé cet article !

Améliorons cet article !

Comment pouvons-nous améliorer cet article ?


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *