This article is available in French.
1. Pourquoi exporter ? #
Le résumé ne suffit pas.
Voir dans le temps #
Le résumé de fin de test donne des moyennes et des percentiles globaux. Pour comprendre à quel moment la latence décroche et pourquoi, il faut voir les métriques de k6 dans le temps, à côté du CPU, des connexions à la base et des traces du système testé.
2. Vers Prometheus #
La sortie remote write.
Configuration #
# Prometheus doit accepter le remote write
prometheus --config.file=prometheus.yml --web.enable-remote-write-receiverK6_PROMETHEUS_RW_SERVER_URL=http://localhost:9090/api/v1/write \
K6_PROMETHEUS_RW_TREND_STATS="p(95),p(99),avg,max" \
k6 run -o experimental-prometheus-rw --tag testid=release-2.4 script.js| Métrique Prometheus | Origine |
|---|---|
k6_http_reqs_total | Compteur http_reqs |
k6_http_req_duration_p95 | Statistique demandée dans TREND_STATS |
k6_http_req_failed_rate | Taux d'échec |
k6_vus | Utilisateurs virtuels |
Bonne Pratique : Avec K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM=true, les durées sont envoyées en histogrammes natifs : n'importe quel percentile se calcule ensuite dans Grafana.À savoir : Le tag testid distingue les exécutions : il permet de comparer deux tests dans le même dashboard. Grafana publie un dashboard officiel « k6 Prometheus » à importer.En OpenTelemetry #
k6 dispose aussi d'une sortie OpenTelemetry (-o opentelemetry) qui envoie ses métriques en OTLP à un Collector ou à Alloy, pratique si votre pile est déjà OTLP.
3. Corréler avec le système testé #
Expliquer les résultats.
Méthode #
- Marquer le test : tag
testidet annotation Grafana au début et à la fin. - Afficher sur le même dashboard : débit et latence k6, saturation du service (CPU, mémoire, pool de connexions), erreurs.
- Repérer le moment où la latence décroche et chercher la ressource saturée à cet instant (méthode USE).
- Ouvrir des traces lentes de cette période (exemplars) et le profil CPU du service (Pyroscope).
import http from 'k6/http';
// Propager un en-tête de trace pour retrouver les requêtes du test dans Tempo
export default function () {
http.get('http://api/produits', { headers: { 'X-Test-Id': __ENV.TEST_ID } });
}My progress
Sign in to track your progress and take notes. Sign in