Skip to content
Learni
View all tutorials
Bases de données

Comment déployer InfluxDB 2.x avec Flux en 2026

Introduction

InfluxDB 2.x est la référence pour stocker et analyser des séries temporelles à grande échelle. Que ce soit pour du monitoring, de l'IoT ou des métriques applicatives, sa capacité à ingérer des millions de points par seconde et son langage Flux offrent une puissance inégalée. Ce tutoriel vous guide pas à pas pour un déploiement professionnel, de l'installation à l'écriture de requêtes optimisées. Vous apprendrez à structurer vos données, à sécuriser l'accès et à éviter les pièges courants de performance.

Prérequis

  • Docker et Docker Compose installés
  • Connaissances de base en ligne de commande
  • Notions de séries temporelles (timestamp, tags, fields)
  • Node.js 20+ (pour les exemples clients)

Déploiement avec Docker Compose

docker-compose.yml
version: '3.8'
services:
  influxdb:
    image: influxdb:2.7
    container_name: influxdb
    ports:
      - "8086:8086"
    volumes:
      - influxdb-data:/var/lib/influxdb2
      - influxdb-config:/etc/influxdb2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=StrongPassword123!
      - DOCKER_INFLUXDB_INIT_ORG=learni
      - DOCKER_INFLUXDB_INIT_BUCKET=metrics
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=mon-token-super-secret-2026
volumes:
  influxdb-data:
  influxdb-config:

Ce fichier déploie InfluxDB 2.7 en mode initialisé avec un bucket et un token. Les volumes persistent les données et la configuration entre les redémarrages.

Configuration du bucket et rétention

terminal
docker compose up -d
# Vérification
curl -s http://localhost:8086/health

Le conteneur démarre et crée automatiquement l'organisation, le bucket et le token. Vérifiez que le service répond avec le statut healthy.

Écriture de données via l'API

terminal
curl -XPOST "http://localhost:8086/api/v2/write?org=learni&bucket=metrics&precision=s" \
  --header "Authorization: Token mon-token-super-secret-2026" \
  --data-raw "cpu,host=server01,region=eu usage=23.5 1700000000"

On envoie un point avec tags et field. Le timestamp est en secondes. Utilisez toujours des tags pour les métadonnées filtrables et des fields pour les valeurs mesurées.

Requête Flux simple

query.flux
from(bucket: "metrics")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "cpu")
  |> filter(fn: (r) => r.host == "server01")
  |> aggregateWindow(every: 5m, fn: mean)

Cette requête récupère la moyenne toutes les 5 minutes sur la dernière heure. Flux est fonctionnel et permet un chaînage puissant des transformations.

Client Node.js pour écriture

write.ts
import { InfluxDB, Point } from '@influxdata/influxdb-client';

const client = new InfluxDB({ url: 'http://localhost:8086', token: 'mon-token-super-secret-2026' });
const writeApi = client.getWriteApi('learni', 'metrics', 's');

const point = new Point('cpu')
  .tag('host', 'server01')
  .tag('region', 'eu')
  .floatField('usage', 23.5);

writeApi.writePoint(point);
writeApi.close().then(() => console.log('Données écrites'));

Le client officiel gère le batching et les retries. Toujours appeler close() pour vider le buffer avant la fin du script.

Bonnes pratiques

  • Utilisez des tags pour les dimensions de filtrage (host, region) et des fields pour les valeurs
  • Définissez une rétention adaptée à vos besoins (7d, 30d, 1y)
  • Indexez vos tags les plus filtrés en créant des mesures distinctes si nécessaire
  • Évitez les cardinalités trop élevées sur les tags
  • Activez la compression LZ4 pour les gros volumes

Erreurs courantes à éviter

  • Oublier de fermer le writeApi (données perdues en mémoire)
  • Utiliser des timestamps en nanosecondes sans précision correcte
  • Faire des requêtes sans range() (résultat vide)
  • Stocker des valeurs dans des tags au lieu de fields

Pour aller plus loin

Découvrez nos formations avancées sur les bases de données temporelles et l'observabilité : https://learni-group.com/formations