Mon dashboard Grafana pour suivre les tirs de performance sur K6

K6 ? Quesako

K6 c’est un injecteur codé en GO vous permettant de réaliser vos tests de performance.

Deux versions :

  • Opensource (si vous avez votre infrastructure de test notamment)
  • Cloud (si vous souhaitez utiliser K6 en Cloud)

Je détaillerai cette partie dans d’autres articles à venir.

Reporting

K6 permet de générer des rapports, sur un certain nombre de plateformes, outils :

  • RAW
  • Cloudwatch (AWS)
  • Kafka
  • Cloud
  • CSV
  • Datadog
  • Grafana Cloud
  • InfluxDB
  • Json
  • NetData
  • New Relic
  • Statsd

Chaque technologie a ses avantages et inconvénients, le choix dépendra pour beaucoup de vos contextes techniques, vos compétences, tout comme celles de votre équipe. Car la performance est un travail collaboratif, qui nécessite beaucoup d’interactions pour être menée a bien, aussi bien au niveau de l’équipe produit, marketing, développement, mais aussi les ops, SRE, etc.

Différences entre les intégrations

Un petit préambule, la réalisation de tirs de performance est une démarche qui va bien au delà de l'injection, ici le but de cet article est de simplement vous partager le dashboard qui me sert de base pour mes tirs de performance avec K6.

J’ai testé quasiment toutes les intégrations à savoir Datadog, InfluxDB, Json, Prometheus, New Relic, Statsd to Prometheus, Cloud, Cloudwatch. Aucune de ces solutions n’est parfaite, y compris la version Cloud. Sachant que les métriques générées n’ont pas la même complétude ou exactitude (je ne rentre pas dans les détails technique, mais les méthodes de calcul pour l’aggregation est très différente).

Vision transverse

Avoir une vision transverse de l’injection, et de vos autres métriques est primordial pour vous permettre d’avoir une vision à 360° (infrastructure, applicative, middleware, réseaux).

Donc si j’avais un conseil à vous donner ça serait avant tout d’utiliser une solution d’observabilité où vous entreposez toutes vos métriques, traces.

Grafana

Je déploie et maintient des TSDB on premise ou Cloud depuis une dizaine d’années maintenant, donc j’ai mes petites habitudes de vieux 😄

Grafana est pour moi le meilleur outil du marché, et dans les années à venir il sera bien meilleur encore.

En effet, il est très complet (pour du pre/post traitement), l’affichage et l’exploration, et le meilleur pour la fin, il possède une multitude de datasources, plugins.

New Relic & Datadog

Pour ces deux providers de solution d’observabilité, ils ont tout deux des dashboards minimaliste, mais il est facile de les enrichir en fonction de vos besoins.

Prometheus

J’adore Prometheus, mais les diverses implémentations pour K6 ne sont pas tout à fait fiables en l’état (statsd ou le plugin pour K6). ça le sera sûrement d’ici quelques temps néanmoins, il y a quelques MR en cours…

Cloud

Quand à l’offre Cloud, elle est très bien pour réaliser ses tirs de perf, et même de pouvoir comparer les différents runs. Elle permet également via le remote write de Prometheus et Grafana Cloud de pouvoir intégrer les métriques issues de K6, ce qui à mon sens une grosse plus value.

InfluxDB

InfluxDB est un bon moteur de TSDB, mais il est moins bon que Prometheus pour ce qui est de certaines notions avancées.

Par contre, il permet aisément de pouvoir bénéficier de la puissance de Grafana pour en faire un outil particulièrement intéressant pour K6.

J’ai testé tous les dashboards possibles sur la forge Grafana, beaucoup sont relativement basiques. Mais lorsqu’on souhaite donner plus de sens à nos tirs de performance, il convient de bénéficier d’un niveau de granularité plus important. La version Cloud le fait très bien, mais si par contrainte technique ou financière vous nous pouvez pas le faire, je vous propose un de mes petits dashboards.

Cela peut vous aider à construire le votre, notamment si vous utilisez des customs metrics dans K6.

Comment utiliser le dashboard

En amont, avoir déployé un InfluxDB, Grafana 8 (pour bénéficier des dernières “transformations” notamment).

Lors du run de vos scénarii K6, intégrer un tag correspondant à l’ID de RUN (id_run). Ceci vous permettra de comparer aisément deux runs différents, en ajoutant un “GROUP BY” ou en utilisant d’autres plugins dédiés.

Aperçu

Premiere partie

Deuxième partie

Liens

Gitlab