Aperçus
Tests de charge simples et préchauffage des pages avec k6, InfluxDB et Grafana
Jean-Nicolas GauthierDernière mise à jour:

Chez Sengo, nous croyons que la performance commence par la préparation. Que vous lanciez une campagne marketing ou que vous anticipiez un pic de trafic, il est essentiel de connaître les limites de votre site et de s’assurer que les pages clés sont déjà mises en cache et prêtes à être servies rapidement.
Voici notre configuration légère et reproductible utilisant :
- k6 pour les tests de charge HTTP
- InfluxDB pour stocker les métriques
- Grafana pour visualiser les performances
- Docker Compose pour tout orchestrer facilement
Pourquoi cette configuration ?
- Facile pour les développeurs : tout est containerisé, aucun prérequis local (sauf Docker).
- Scénarios réalistes : montée et descente progressive du trafic simulé.
- Visualisation en temps réel : Grafana affiche les résultats instantanément.
- Bonus : les pages sont préchauffées dans les caches CDN et serveurs.
L'architecture
[ k6 script ] ─▶ [ InfluxDB ]
│ ▲
▼ │
Trafic [ Grafana Dashboard ]
▼
Votre site web
Aperçu du fichier Docker Compose
Un extrait de notre docker-compose.yml :
services :
influxdb :
image : influxdb:1.8
ports :
- "8086:8086"
environnement :
- INFLUXDB_DB=k6
grafana :
image : grafana/grafana:latest
ports :
- "3000:3000"
environnement :
- GF_AUTH_ANONYMOUS_ENABLED=true
volumes :
- ./dashboards:/var/lib/grafana/dashboards
- ./grafana-dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
- ./grafana-datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
k6 :
image : loadimpact/k6:latest
environnement :
- K6_OUT=influxdb=http://influxdb:8086/k6
volumes :
- ./scripts:/scripts
Tableau de bord
Nous avons préconfiguré un tableau de bord Grafana avec :
- Utilisateurs virtuels actifs
- Requêtes par seconde
- Taux d’erreurs
- Temps de réponse (moyenne, p90, p95)
- Heatmap des temps de réponse
Le tout est alimenté par InfluxDB, préconfiguré et actualisable en temps réel.
Le script de test k6
Le script simule du trafic sur toutes les pages principales de Sengo.com (FR et EN) :
import http from 'k6/http' ;
export let options = {
stages : [
{ duration : '15s', target : 25 },
{ duration : '5m', target : 85 },
{ duration : '3m', target : 105 },
{ duration : '3m', target : 75 },
{ duration : '15m', target : 155 },
{ duration : '3m', target : 100 },
{ duration : '1m', target : 0 }
]
} ;
export default function () {
http.get('https://sengo.com/') ;
http.get('https://sengo.com/fr/') ;
// ...plus de points d'extrémité
}
Surveillance en temps réel
Ouvrez http://localhost:3000 pour accéder au tableau de bord Grafana :
- Les pics de trafic et d’erreurs
- Utilisateurs virtuels actifs /s
- Les performances par page
Bonus : warmup des pages
Ce script joue aussi le rôle de « page warmer » : il permet de charger les pages importantes en cache avant un lancement ou une montée en charge réelle.
Conseils supplémentaires
- Utilisez des variables Grafana pour basculer d’un environnement à l’autre
- Intégrez les tests dans vos pipelines CI/CD
- Configurez des alertes sur les erreurs ou les lenteurs
EN BREF
| Outil | Objectif |
|---|---|
| k6 | Test de charge & préchauffage |
| InfluxDB | Base de données de métriques |
| Grafana | Tableaux de bord en temps réel |
| Docker | Environnement local simple |
Besoin d’un coup de main ? Contactez l’équipe de Sengo. Nous optimisons les performances web sur des plateformes modernes, headless et composables.
Sources et références
- Documentation k6 - Officielle
k6.io - Documentation InfluxDB - Officiel
docs.influxdata.com - Documentation Grafana - Officiel
grafana.com - Documentation Docker Compose - Officielle
docs.docker.com - Documentation Grafana k6
grafana.com
