Versionen im Vergleich
Schlüssel
- Diese Zeile wurde hinzugefügt.
- Diese Zeile wurde entfernt.
- Formatierung wurde geändert.
In 0 - Projekt einrichten haben wir unser GatlingJMeter-Projekt aufgesetzt und alles für unseren ersten Test vorbereitet. In diesem Tutorial gehen wir auf die benötigten Grundlagen ein und erstellen ein erstes einfaches Test-Szenario.
Vorbedingung
Als Vorbedingung benötigen wir natürlich unsere JWT-Anwendung, die wir aufrufen und testen können. In den folgenden Tutorials gehen wir davon aus, dass wir die Anwendung lokal unter folgender URL deployed haben: http://localhost:8080/jwt-tutorial-003-5.7.0.2/
Szenario Setup
Unser erstes Szenario sendet eine einfache Anfrage an das jadice web toolkit. Das Szenario legen wir in dem Ordner src/test/scala/org/jwt/performance/ unter dem Namen SimulationSimple.scala an. In diesem Szenario legen wir 5 Nutzer an, welche eine Anfrage an die Base-URL senden.
Als Erfolgskriterien definieren wir:
- Eine erfolgreiche Antwort des Servers (HTTP 200)
- Eine maximale Antwortzeit von 2 Sekunden.
language | scala |
---|---|
theme | RDark |
title | SimulationSimple.scala |
zeigen wir, wie Metriken exponiert werden.
Überblick
Die aktuelle Übersicht über die Metriken finden Sie unter https://webtoolkit.jadice.com/doc/docs/en/reference/monitoring/
Micrometer
Das Tutorial 005 wurde erweitert, sodass die für das Exponieren der Metriken benötigten Dependencies vorhanden sind:
Codeblock | ||||
---|---|---|---|---|
| ||||
<!-- Required for exposing the metrics (only needed for the performance test tutorial, which is not part of tutorial 005 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<scope>runtime</scope>
</dependency> |
Außerdem wurde die application.yml angepasst, sodass die Metriken, wie im Spring-Boot Umfeld gewohnt, exponiert werden:
Codeblock | ||
---|---|---|
| ||
management: endpoints: web: exposure: include: valhealth, defaultHeadermetrics, =info, Map(prometheus "Accept" -> "*/*") # uncomment the following line for valdetailed scncache =info scenario("Simple Scenario")created via CacheInfoResource) .exec(http("Simple Request") .get("/") # include: health, metrics, info, prometheus, jwtcachedetailed metrics: enable: .headers(defaultHeader) .check(status.is(200))all: true export: ) prometheus: setUp(scn.inject(atOnceUsers(5))) .protocols(httpProtocol) enabled: true .assertions( endpoint: global.responseTime.max.lte(2000)health: ) } |
- httpProtocol
Die Variable httpProtocol speichert die Http-Konfiguration für unsere Anfragen.
- header
In der Variable defaultHeader werden die Anfrage-Kopfzeilen gespeichert. Dieser können wir nach belieben Anfragen hinzufügen.
- scn
Hier wird das eigentliche Szenario und somit der Testablauf definiert. Innerhalb eines Szenarios können wir beliebig viele http-Anfragen an die Anwendung senden.
- setUp
Das Erstellen und Injizieren von Nutzern in das Szenario erfolgt innerhalb der Setup-Methode
- protocols
Hier wird das oben vorbereitete http-Protokoll angefügt
- assertions
Unter assertions lassen sich Restriktionen für die Anfragen festlegen
Ausführen von Tests
Die Tests starten wir über folgendes Kommando (entweder über die Konsole oder über einen konfigurierten Maven build):
Codeblock | ||||
---|---|---|---|---|
| ||||
mvn gatling:test |
Ergebnisse
Die Ergebnisse eines Tests werden standardmäßig (in der Konfiguration des Plugins innerhalb der pom.xml) unter target/reports/gatling/ abgelegt. Zum Betrachten eines Reports navigieren wir in das entsprechende Verzeichnis und öffnen die zugehörige index.html.
Die Ergebnisse beinhalten Informationen zu:
- Aktive Nutzer
- Antwortzeiten
- Erhaltene Anfragen/Antworten
Das Ergebnis könnte folgendermaßen aussehen:
Erweitern |
---|
Image Removed show-components: always
show-details: always |
Wenn nun das Tutorial 005 gestartet wird, können wir über 2 Links die Metriken sehen:
- http://127.0.0.1:8080/actuator/metrics (Micrometer)
- hier sehen Sie einen Überblick über alle Metriken
- Möchten Sie z.B. den Wert jwt.read.document betrachten, bitte folgende URL aufrufen: http://127.0.0.1:8080/actuator/metrics/jwt.read.document
- http://127.0.0.1:8080/actuator/prometheus
- hier sehen Sie die Prometheus Werte. Beachten Sie bitte hier vor allem, dass im Unterschied zu Micrometer ein Underscore statt eines Punkts als Trenner verwendet wird.
Prometheus und Grafana
Eine kurze Einführung, wie man Prometheus und Grafana nutzen kann, um die Werte aus dem Lasttest (s. nächstes Kapitel) zu visualisieren, finden wir im Unterordner jwt-tutorial-performancetest\src\test\resources in der README.md
Tutorials
- 0 - Projekt einrichten
- 1 - Szenario: GrundlagenMetriken
- 2 - Szenario: Dokument laden
- 3 - Szenario: Bildabschnitte laden
- Aufbau des Testplans