Article

Tests de charge simples et préchauffage des pages avec k6, InfluxDB et Grafana

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
Vignette par défaut de l'article Sengo

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

 

TL;DR

OutilObjectif
k6Test de charge & préchauffage
InfluxDBBase de données de métriques
GrafanaTableaux de bord en temps réel
DockerEnvironnement 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.

Sengo Robot Nikko