14. Generieren des Berichts-Dashboards ¶
JMeter unterstützt die Erstellung von Dashboard-Berichten, um Diagramme und Statistiken aus einem Testplan zu erhalten.
Dieses Kapitel beschreibt die Konfiguration und Verwendung des Generators.
14.1 Übersicht ¶
Der Dashboard-Generator ist eine modulare Erweiterung von JMeter. Sein Standardverhalten besteht darin, Beispiele aus CSV-Dateien zu lesen und zu verarbeiten, um HTML-Dateien mit Diagrammansichten zu generieren. Es kann den Bericht am Ende eines Belastungstests oder auf Anfrage generieren.
Dieser Bericht enthält die folgenden Messwerte:
- APDEX-Tabelle (Application Performance Index), die für jede Transaktion den APDEX basierend auf konfigurierbaren Werten für tolerierte und erfüllte Schwellenwerte berechnet
- Ein Anforderungszusammenfassungsdiagramm, das den Prozentsatz erfolgreicher und fehlgeschlagener Anforderungen (Beispielergebnisse des Transaktionscontrollers werden nicht berücksichtigt) zeigt:
- Eine Statistiktabelle, die in einer Tabelle eine Zusammenfassung aller Metriken pro Transaktion bereitstellt, einschließlich 3 konfigurierbarer Perzentile:
- Eine Fehlertabelle mit einer Zusammenfassung aller Fehler und deren Anteil an den Gesamtanfragen :
- Eine Tabelle mit den 5 häufigsten Fehlern nach Sampler, die für jeden Sampler (standardmäßig mit Ausnahme des Transaktionscontrollers) die 5 häufigsten Fehler enthält:
- Zoombares Diagramm, in dem Sie jede Transaktion aktivieren / deaktivieren können, um sie anzuzeigen / auszublenden für:
- Reaktionszeiten im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
- Antwortzeiten Perzentile im Zeitverlauf (nur erfolgreiche Antworten) :
- Aktive Threads im Laufe der Zeit:
- Byte-Durchsatz im Laufe der Zeit (Ignoriert Beispielergebnisse des Transaktionscontrollers):
- Latenzen im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
- Verbinden Sie sich im Laufe der Zeit (einschließlich Beispielergebnisse des Transaktionscontrollers):
- Treffer pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
- Antwortcodes pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
- Transaktionen pro Sekunde (einschließlich Beispielergebnisse des Transaktionscontrollers):
- Antwortzeit vs. Anfrage pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
- Latenz im Vergleich zu Anfragen pro Sekunde (Ignoriert Beispielergebnisse des Transaktionscontrollers):
- Übersicht über die Reaktionszeit (ohne Beispielergebnisse des Transaktionscontrollers):
- Perzentile der Antwortzeiten (einschließlich Beispielergebnisse des Transaktionscontrollers):
- Zeiten vs. Threads (einschließlich Transaktionscontroller-Beispielergebnisse):
Im verteilten Modus zeigt dieses Diagramm auf einer horizontalen Achse die Anzahl der Threads für 1 Server. Es ist eine aktuelle Einschränkung
- Antwortzeitverteilung (einschließlich Beispielergebnisse des Transaktionscontrollers):
14.2 Dashboard-Generierung konfigurieren ¶
Die Dashboard-Generierung verwendet JMeter-Eigenschaften, um den Bericht anzupassen. Einige Eigenschaften werden für allgemeine Einstellungen verwendet, andere für eine bestimmte Diagrammkonfiguration oder Exportprogrammkonfiguration.
14.2.1 Voraussetzungen ¶
14.2.1.1 Filterkonfiguration ¶
Stellen Sie sicher, dass Sie die Eigenschaft jmeter.reportgenerator.exporter.html.series_filter so einstellen , dass nur die gewünschten Transaktionen im Bericht enthalten sind, wenn Sie nicht alles möchten.Im folgenden Beispiel müssen Sie nur Search|Order ändern , den Rest behalten:
jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$
14.2.1.2 Dienstkonfiguration speichern ¶
Damit der Generator funktioniert, muss die von JMeter generierte CSV-Datei bestimmte erforderliche Daten enthalten, die in der letzten Live-Version von JMeter standardmäßig korrekt sind .
Wenn Sie diese Einstellungen geändert haben, überprüfen Sie, ob Ihre JMeter-Konfiguration diesen Einstellungen folgt (dies sind die Standardeinstellungen):
jmeter.save.saveservice.bytes = wahr # Nur verfügbar mit HttpClient4 #jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.label = wahr jmeter.save.saveservice.latency = wahr jmeter.save.saveservice.response_code = wahr jmeter.save.saveservice.response_message = wahr jmeter.save.saveservice.successful = wahr jmeter.save.saveservice.thread_counts = wahr jmeter.save.saveservice.thread_name = wahr jmeter.save.saveservice.time = wahr jmeter.save.saveservice.connect_time = wahr jmeter.save.saveservice.assertion_results_failure_message = wahr # Das Zeitstempelformat muss die Uhrzeit enthalten und sollte das Datum enthalten. # Zum Beispiel der Standard, der Millisekunden seit der Epoche ist: jmeter.save.saveservice.timestamp_format = ms # Oder folgendes wäre auch geeignet # jmeter.save.saveservice.timestamp_format = jjjj/MM/tt HH:mm:ss
14.2.1.3 Konfiguration des Transaktionscontrollers ¶
Wenn Sie Transaktionscontroller verwenden , um möglichst genaue Ergebnisse zu gewährleisten:
- Deaktivieren Sie das Kontrollkästchen ( dies ist die Standardkonfiguration ): Generate parent sample
- Wenn der Transaktionscontroller als Container verwendet wird, um eine Anforderung für eine HTML-Seite darzustellen, die Ajax-Aufrufe auslöst, und Sie nur den Transaktionscontroller in Ihrem Bericht haben möchten, klicken Sie mit der rechten Maustaste auf den Knoten und wenden Sie die Benennungsrichtlinie an Sie erhalten dies:
14.2.2 Allgemeine Einstellungen ¶
jmeter.reportgenerator.
Parameter
Standard: "Apache JMeter-Dashboard"
Das Standarddatumsformat ist jjjjMMttHHmmss
Nützlich, wenn Sie nach dem Belastungstest einen Bericht generieren möchten und die Ergebnisdatei einen Zeitstempel in einer anderen Zeitzone enthält. In diesem Fall muss das Datumsformat die Zeitzone (zzz) enthalten.
Beispiel: tt/MM/jjjj HH:mm:ss zzz
Das Datumsformat wird durch die Eigenschaft date_format definiert.
Standard: nicht gefüllt, was bedeutet, dass der Datenbereich von Anfang an verwendet wird
Das Datumsformat wird durch die Eigenschaft date_format definiert.
Standard: nicht gefüllt, dh der Datenbereich wird bis zum Ende verwendet
Standard: 1500
Verwenden Sie Beispielnamen oder reguläre Ausdrücke.
Das Format ist Beispielname: Zufriedenheit|Toleranz[;] Die
Werte sind in Millisekunden angegeben.
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ Proben12:3000|4000;\ Szenario01-12:5000|6000
Format: Regulärer Ausdruck.
Standard: ""
Standard: Temp
Standard: 20000
- aggregat_rpt_pct1 : Standardmäßig 90
- aggregat_rpt_pct2 : Standardmäßig 95
- aggregat_rpt_pct3 : Standardmäßig 99
Sie können einige allgemeine Eigenschaften definieren, die von der Generatorkonfiguration verwendet werden. Diese Eigenschaften sind frei benannt, aber Sie sollten das Präfix verwenden
jmeter.reportgenerator.um Eigentumsüberschneidungen zu vermeiden.
Z.B:
- Eigenschaftsdefinition:
-
jmeter.reportgenerator.overall_granularity=60000
- Objektreferenz:
-
${jmeter.reportgenerator.overall_granularity}
14.2.3 Grafikeinstellungen ¶
Jeder Eigenschaft, die eine Diagrammkonfiguration beschreibt, muss das Präfix vorangestellt werden
jmeter.reportgenerator.graph.gefolgt von der Kennung des Diagramms.
14.2.3.1 Allgemeine Eigenschaften ¶
Alle Diagramme unterstützen diese Eigenschaften:
Parameter
Die Klasse des Diagramms muss org.apache.jmeter.report.processor.graph.AbstractGraphConsumer erweitern .
Weitere Einzelheiten finden Sie im Abschnitt Standarddiagramm .
14.2.3.2 Spezifische Eigenschaften ¶
Bestimmte Diagrammeigenschaften müssen das Präfix verwenden:
jmeter.reportgenerator.graph.<graph_id>.propertyDer Name der Eigenschaft wird mithilfe der Camel-Case-Transformation abgebildet und die Übereinstimmungsmethode der Klasse wird mit dem Eigenschaftswert als Argument aufgerufen.
Z.B:
jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150veranlasst den Aufruf der Methode setGranularity(150) auf der Instanz des Graphen.
14.2.4 Exporteinstellungen ¶
Jeder Eigenschaft, die eine Exportprogrammkonfiguration beschreibt, muss das Präfix vorangestellt werden
jmeter.reportgenerator.exportergefolgt von der Kennung des Ausführers.
14.2.4.1 Allgemeine Eigenschaften ¶
Alle Exporter unterstützen diese Eigenschaften:
Parameter
Die Klasse des Exporters muss org.apache.jmeter.report.dashboard.DataExporter implementieren .
Format: regulärer Ausdruck. Standard: ""
14.2.4.2 Spezifische Eigenschaften ¶
Bestimmte Exportprogrammeigenschaften müssen das Präfix verwenden
jmeter.reportgenerator.exporter.<Exporter_id>.property
Parameter
14.2.4.3 Diagrammeigenschaften ¶
Diagrammeigenschaften ermöglichen es Exporteuren, einige Diagrammdaten zu überschreiben.
Sie müssen das Präfix verwenden:
jmeter.reportgenerator.exporter.<Exporter_id>.graph_options.<graph_id>
Parameter
14.2.4.4 Filtermechanismen ¶
Anders als bei der Filterung im Abschnitt Allgemeine Eigenschaften , die Daten vor Berechnungen verwirft, erfolgt die Filterung hier nach den Berechnungen und dient der Vereinfachung des Abschlussberichts.
Die Eigenschaft series_filter erlaubt es, welche Reihe eines Diagramms (bzw. Zeilen einer Übersichtstabelle) mit einem regulären Ausdruck zu filtern, der dem Namen der Reihe (bzw. der Zeile) entspricht. Aber auch wenn der Name der Serie (bzw. Zeile) mit dem Filter übereinstimmt, kann das Setzen der anderen Filtereigenschaften zu dessen Verwerfen führen. Wenn umgekehrt keine Übereinstimmung vorhanden ist, können die anderen Eigenschaften zulassen, dass sie beibehalten wird.
Die folgenden Tabellen zeigen, wie die Einstellung der Filtereigenschaften funktioniert.
filter_only_sample_series | Grafik/Zusammenfassung unterstützt Controller-Unterscheidung | Die aktuelle Serie ist eine Controller-Serie | show_controllers_only | Verworfen |
---|---|---|---|---|
FALSCH | FALSCH | - | FALSCH | FALSCH |
WAHR | ||||
- | FALSCH | |||
WAHR | ||||
WAHR | FALSCH | FALSCH | ||
WAHR | ||||
WAHR | FALSCH | |||
WAHR | ||||
WAHR | FALSCH | - | FALSCH | |
WAHR | ||||
- | FALSCH | |||
WAHR | ||||
WAHR | FALSCH | FALSCH | ||
WAHR | WAHR | |||
WAHR | FALSCH | FALSCH | ||
WAHR |
filter_only_sample_series | Grafik/Zusammenfassung unterstützt Controller-Unterscheidung | Gehalten |
---|---|---|
FALSCH | FALSCH | FALSCH |
WAHR | ||
WAHR | FALSCH | WAHR |
WAHR | FALSCH |
- Wenn Sie die Eigenschaft show_controllers_only festlegen und das Diagramm so konfiguriert ist, dass es Controller ausschließt.
- Wenn die Eigenschaft series_filter keiner Serie entspricht.
14.2.5 Beispielkonfiguration ¶
Sie können die folgende Konfiguration in Ihre user.properties-Datei kopieren, um den Berichtsgenerator zu testen.
# Konfigurieren Sie diese Eigenschaft, um den Berichtstitel zu ändern #jmeter.reportgenerator.report_title=Apache JMeter-Dashboard # Ändern Sie diesen Parameter, wenn Sie die Granularität von Zeitdiagrammen ändern möchten. # Die Granularität muss höher als 1000 (1 Sekunde) sein, andernfalls sind die Durchsatzdiagramme nicht korrekt # Siehe Fehler 60149 #jmeter.reportgenerator.overall_granularity=60000 Ändern Sie diesen Parameter, wenn Sie die Granularität der Antwortzeitverteilung ändern möchten # Standardmäßig auf 100 ms eingestellt #jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100 # Ändern Sie diesen Parameter, wenn Sie den APDEX-Zufriedenheitsschwellenwert überschreiben möchten. jmeter.reportgenerator.apdex_satisfied_threshold=1500 # Ändern Sie diesen Parameter, wenn Sie die APDEX-Toleranzschwelle überschreiben möchten. jmeter.reportgenerator.apdex_tolerated_threshold=3000 # Legt das Zielverzeichnis für generierte HTML-Seiten fest, es ist besser, es für jede Generation zu ändern # Dadurch wird der durch die Befehlszeilenoption -o festgelegte Wert überschrieben # jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report # Gibt an, welche Diagrammreihen gefiltert werden (regulärer Ausdruck) # Im folgenden Beispiel filtern wir nach Such- und Bestellmustern # Beachten Sie, dass das Ende des Musters immer (-success|-failure)?$ enthalten sollte # Transaktionen pro Sekunde Suffixe Transaktionen mit "-success" oder "-failure", je nachdem # auf das Ergebnis #jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$ # Gibt an, ob der Serienfilter nur auf Probenserien angewendet wird jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
Diese Konfiguration ermöglicht das Generieren eines Berichts, in dem:
- Zeitdiagramme haben eine Zeitgranularität von 1 Minute.
- Die Zufriedenheitsschwelle für die ADPEX-Berechnung beträgt 1,5 Sekunden.
- Die Toleranzschwelle für die ADPEX-Berechnung beträgt 3 Sekunden.
- Die HTML-Dateien werden im Verzeichnis /tmp/test-report generiert .
- Es werden nur Serien angezeigt, deren Name mit „ s0 “ oder „ s1 “ beginnt.
- Der vorherige Filter gilt nur für Diagramme (bzw. Übersichtstabellen), bei denen die Reihen (bzw. Zeilen) mit Stichproben übereinstimmen
14.3 Berichte erstellen ¶
Die Berichterstellung kann als eigenständiger Prozess aus einer Beispielprotokolldatei oder automatisch nach dem Ausführen eines Lasttests erfolgen.
14.3.1 Generierung aus einer bestehenden Beispiel-CSV-Protokolldatei ¶
Verwenden Sie den folgenden Befehl:
jmeter -g <Protokolldatei> -o <Pfad zum Ausgabeordner>
14.3.2 Generierung nach Belastungstest ¶
Verwenden Sie den folgenden Befehl:
jmeter -n -t <Test-JMX-Datei> -l <Testprotokolldatei> -e -o <Pfad zum Ausgabeordner>
14.3.3 Generierung mit dem GUI Tools Menü ¶
Sie können den HTML-Bericht über den Menüpunkt Extras → HTML-Bericht generieren erstellen :
Für jeden Parameter siehe die folgende Tabelle:
Parameter
Wenn kein Ausgabeverzeichnis definiert ist, verwendet der Controller ${JMETER_HOME}/bin/report-output .
Sie müssen dann nur noch auf die Schaltfläche Bericht erstellen klicken und warten, bis ein Informationsdialog erscheint
14.4 Standardgrafiken ¶
Alle von dieser Report Engine bereitgestellten Grafiken befinden sich im Paket org.apache.jmeter.report.processor.graph.impl
Der Dashboard-Generator stellt die folgenden Diagrammklassen bereit:
Graph | Beschreibung | Unterstützt Controller-Diskriminierung |
---|---|---|
ActiveThreadsGraphConsumer | Dieses Diagramm stellt die Anzahl der aktiven Threads im Laufe der Zeit dar. | FALSCH |
BytesThroughputGraphConsumer | Dieses Diagramm stellt den Durchsatz von empfangenen und gesendeten Daten im Laufe der Zeit dar. | FALSCH |
CodesPerSecondGraphConsumer | Dieses Diagramm stellt die Rate der Antwortcodes im Zeitverlauf dar. | FALSCH |
HitsPerSecondGraphConsumer | Dieses Diagramm stellt die Rate der abgeschlossenen Anfragen im Laufe der Zeit dar. | FALSCH |
LatencyOverTimeGraphConsumer | Dieses Diagramm stellt die durchschnittliche Latenzzeit im Zeitverlauf dar. | WAHR |
ConnectTimeOverTimeGraphConsumer | Dieses Diagramm stellt die Verbindungszeit im Zeitverlauf dar. | WAHR |
LatencyVSRequestGraphConsumer | Dieses Diagramm stellt die mittlere und durchschnittliche Latenzzeit in Abhängigkeit von der Anzahl der aktuellen Anfragen dar. | FALSCH |
ResponseTimeDistributionGraphConsumer | Dieses Diagramm stellt die Verteilung der Proben in Abhängigkeit von ihrer verstrichenen Zeit und ihrem Namen dar. | WAHR |
ResponseTimeOverTimeGraphConsumer | Dieses Diagramm stellt die durchschnittliche Reaktionszeit im Zeitverlauf dar. | WAHR |
ResponseTimePercentilesGraphConsumer | Dieses Diagramm stellt die Perzentile der verstrichenen Zeit im Zeitverlauf dar. | WAHR |
ResponseTimePercentilesOverTimeGraphConsumer | Dieses Diagramm zeigt die minimale/maximale und 3-Perzentile-Antwortzeit im Zeitverlauf. | WAHR |
ResponseTimeVSRequestGraphConsumer | Dieses Diagramm stellt die mittlere und durchschnittliche Antwortzeit in Abhängigkeit von der Anzahl der aktuellen Anfragen dar. | FALSCH |
TimeVSThreadGraphConsumer |
Dieses Diagramm stellt die durchschnittliche Antwortzeit in Abhängigkeit von der Anzahl der aktuell aktiven Threads dar.
Die *-aggregierten Reihen stellen die durchschnittliche Antwortzeit dar, unabhängig von der Anzahl der aktuell aktiven Threads. Diese Reihen werden durch einen einzigen Punkt dargestellt, da die Anzahl der aktuell aktiven Threads zu einem Durchschnitt aggregiert wird. Also zu diesen Punkten:
|
WAHR |
TransactionsPerSecondGraphConsumer | Dieses Diagramm stellt die Transaktionsrate nach Beispielname im Zeitverlauf dar. | WAHR |
14.5 Generieren von Zolldiagrammen im Laufe der Zeit ¶
Sie können jede sample_variable in CSV im Laufe der Zeit grafisch darstellen, Sie können Ihre Graphen anpassen, indem Sie ihre Eigenschaften in der Datei user.properties festlegen.
Sie müssen das ID-Präfix custom_ verwenden :
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>So geben Sie an, dass es sich bei diesem Diagramm um ein benutzerdefiniertes Diagramm handelt:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
Parameter
Hier ist ein Beispiel für eine benutzerdefinierte Diagrammkonfiguration, die die Variable ts-hit grafisch darstellt :
jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer jmeter.reportgenerator.graph.custom_testGraph.title=Chunk-Treffer jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Anzahl der Treffer jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Im Laufe der Zeit jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000 jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=Anzahl der Treffer:
14.6 Möchten Sie das Report Dashboard verbessern? ¶
Wenn Sie neue Grafiken beisteuern oder bestehende verbessern möchten, können Sie diese Entwicklerdokumentation lesen .Lesen Sie diese Dokumentation zum Beitragen.