Fondamentaux et Scripting¶
Module 8 : Résultats et Grafana¶
8.1 Formats de Sortie¶
Export JSON
Liste des outputs disponible
- Amazon CloudWatch
- Cloud
- CSV
- Datadog
- Dynatrace
- Elasticsearch
- Grafana Cloud Prometheus
- InfluxDB
- Netdata
- New Relic
- Prometheus
- TimescaleDB
- StatsD
8.2 Installation de Prometheus & Grafana¶
Mettre en place Grafana & Prometheus
Installation avec Docker Compose
Créer docker-compose.yml :
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=168h' # Conserve 7 jours
- '--web.enable-remote-write-receiver' # OBLIGER
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_SECURITY_ADMIN_USER=admin
volumes:
- grafana_data:/var/lib/grafana
- ./config/grafana:/etc/grafana/provisioning
depends_on:
- prometheus
volumes:
prometheus_data:
grafana_data:
Lancer
8.2 Configuration de Prometheus & Grafana¶
Configuration de la datasource Prometheus dans Grafana
Faisons le via le docker compose :
apiVersion: 1
datasources:
- name: k6
type: prometheus
url: http://prometheus:9090
access: proxy
isDefault: true
basicAuth: true
basicAuthUser: admin
secureJsonData:
basicAuthPassword: admin
volumes Import du dashboard K6
- Dashboards > Import
- Choississez un ID de dash compatible
- Sélectionner la datasource Prometheus
8.2 Installation et Configuration Grafana¶
Lancer un test avec export Prometheus
K6_PROMETHEUS_RW_SERVER_URL=http://localhost:9090/api/v1/write \
K6_PROMETHEUS_RW_USERNAME=admin \
K6_PROMETHEUS_RW_PASSWORD=admin \
k6 run --out experimental-prometheus-rw load.js
8.2 Grafana - Metrics¶
Metrics built-in
| k6 | Prometheus | Name label |
|---|---|---|
| Counter | Counter | k6_*_total |
| Gauge | Gauge | k6_*_ |
| Rate | Gauge | k6_*_rate |
| Trend | Counter and Gauges (default) or Native Histogram | k6_*_ |
8.2 Installation et Configuration Grafana¶
Exercice pratique
Objectif : Visualiser un test en temps réel
- Lancer un test de 5 minutes avec rampe
- Observer en temps réel dans Grafana
- Identifier les métriques clés
- Créer des annotations pour marquer des événements
8.3 Génération et Analyse de Rapports¶
Rapport HTML avec k6-reporter
Script avec summary :
import http from 'k6/http';
import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
export default function () {
http.get('https://example.com');
}
export function handleSummary(data) {
return {
"summary.html": htmlReport(data),
"summary.json": JSON.stringify(data),
};
}

8.3 Génération et Analyse de Rapports¶
Custom Summary - STDOUT
import { htmlReport } from 'https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js'
import { textSummary } from 'https://jslib.k6.io/k6-summary/0.1.0/index.js'
export function handleSummary(data) {
return {
'stdout': textSummary(data, { indent: ' ', enableColors: true }),
};
}
8.3 Génération et Analyse de Rapports¶
Exercice pratique
Objectif : Analyser un rapport de test
- Exécuter un test de stress complet
- Générer un rapport HTML
- Identifier dans le rapport :
- Le point de rupture
- Les métriques qui se dégradent en premier
- Le comportement des erreurs
- Les recommandations d'optimisation
8.4 Utilisation d'extension - xk6¶
k6 est écrit en Go, mais il ne charge pas dynamiquement des plugins
xk6 est un outil qui permet de compiler k6 avec des extensions personnalisées
Pourquoi ?
Donc pour ajouter une fonctionnalité (ex. Kafka, Redis, gRPC avancé, WebSocket custom…), il faut :
- écrire l’extension en Go
- créer un binaire k6 custom
- utiliser xk6 pour assembler tout ça
- exécuter ensuite vos scripts k6 avec le nouveau binaire généré
8.4 Utilisation d'extension - Ex. xk6-dashboard¶
xk6-dashboard est une extension k6 qui affiche un dashboard HTML en direct pendant le test, sans avoir besoin de Prometheus/Grafana
# Installer xk6
go install go.k6.io/xk6/cmd/xk6@latest
# Compiler k6 avec xk6-dashboard
xk6 build --with github.com/grafana/xk6-dashboard@latest
# Lancer
K6_WEB_DASHBOARD=true ./k6 run script.js
# Ouvrir sur http://localhost:5665 par default
8.4 Utilisation d'extension - Ex. xk6-dashboard¶
