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
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
docker compose up -d
# Vérification
curl -s http://localhost:8086/healthLe 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
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
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
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