diff --git a/README.md b/README.md index b3b74c4..5d99260 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,8 @@ The supported versions: * Java 11 - make sure that you have it (its minimum version). * InfluxDB v2.x, see release notes: https://docs.influxdata.com/influxdb/v2.0/reference/release-notes/influxdb/ (1.8 is not supported) * JMeter 5.5.0 only. -* The current board and plugin were tested on Grafana 8.5.4 and InfluxDB 2.2.0, JAVA 15. + +* The current board and plugin were tested on Grafana 9.1.6 and InfluxDB 2.2.0, JAVA 15. ## Maven Support Please see the latest release here https://search.maven.org/artifact/io.github.mderevyankoaqa/jmeter-plugins-influxdb2-listener. @@ -192,9 +193,14 @@ Notes: when test has been interrupted from UI; the processes may not be finished See deployment instructions here https://grafana.com/grafana/dashboards/13644 Dashboard helps: +* Filter the results by Run Id or Type (can be requests or transactions). + ![](img/filterById.png) + + ![](img/filterByType.png) + + * Monitor throughput with active users. ![](img/grafana1.png) - * Overview and analise the response time, distribution as well. Added the filters to see requests with status "pass", "fail". ![](img/grafana2.png) diff --git a/build.gradle b/build.gradle index e11a7a3..9767540 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ repositories { sourceCompatibility = 11 group = 'io.github.mderevyankoaqa' -version = '2.4' +version = '2.5' def title = 'JMeterInfluxDB2Listener' def archiveName = 'jmeter-plugins-influxdb2-listener' @@ -45,8 +45,9 @@ def archiveName = 'jmeter-plugins-influxdb2-listener' implementation group: 'org.apache.jmeter', name: 'ApacheJMeter_java', version: '5.5' implementation group: 'org.apache.jmeter', name: 'ApacheJMeter_components', version: '5.5' implementation group: 'org.apache.jmeter', name: 'jorphan', version: '5.5' - implementation group: 'com.influxdb', name: 'influxdb-client-java', version: '6.1.0' + implementation group: 'com.influxdb', name: 'influxdb-client-java', version: '6.5.0' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' + implementation group: 'org.apache.jmeter', name: 'ApacheJMeter_http', version: '5.4.3' components { withModule("org.apache.jmeter:ApacheJMeter_core", JMeterRule) @@ -54,6 +55,7 @@ def archiveName = 'jmeter-plugins-influxdb2-listener' withModule("org.apache.jmeter:ApacheJMeter_components", JMeterRule) withModule("org.apache.jmeter:jorphan", JMeterRule) withModule("org.apache.jmeter:ApacheJMeter", JMeterRule) + withModule("org.apache.jmeter:ApacheJMeter_http", JMeterRule) } } @@ -130,6 +132,11 @@ publishing { name = 'Pierre Brun' email = 'pbrun.pro@gmail.com' } + developer { + id = 'ushklianik' + name = 'Uladzislau Shklianik' + email = 'Uladzislau_Shklianik@epam.com' + } } scm { connection = 'scm:git:git:github.com/mderevyankoaqa/jmeter-influxdb2-listener-plugin.git' diff --git a/dashboard/JMeter Load Test (org.md.jmeter.influxdb2.visualizer) - influxdb v2.0 (Flux).json b/dashboard/JMeter Load Test (org.md.jmeter.influxdb2.visualizer) - influxdb v2.0 (Flux).json index 57c85ba..15bcf0c 100644 --- a/dashboard/JMeter Load Test (org.md.jmeter.influxdb2.visualizer) - influxdb v2.0 (Flux).json +++ b/dashboard/JMeter Load Test (org.md.jmeter.influxdb2.visualizer) - influxdb v2.0 (Flux).json @@ -9,8 +9,8 @@ "pluginName": "InfluxDB" } ], - "__elements": [ - { + "__elements": { + "NKdhkbj7k": { "name": "Porcessing Time = Latency - Connect Time ", "uid": "NKdhkbj7k", "kind": 1, @@ -26,6 +26,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -58,7 +60,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -116,13 +119,6 @@ } ] }, - "gridPos": { - "h": 10, - "w": 24, - "x": 0, - "y": 151 - }, - "id": 87, "links": [], "options": { "legend": { @@ -132,7 +128,8 @@ "min" ], "displayMode": "table", - "placement": "right" + "placement": "right", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -143,6 +140,10 @@ "targets": [ { "alias": "$tag_requestName", + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -166,7 +167,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "autogen", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"processingTime\")\r\n |> group (columns: [\"requestName\"])\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"processingTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group (columns: [\"requestName\"])\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", "rawQuery": true, "refId": "D", "resultFormat": "time_series", @@ -184,8 +185,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Porcessing Time = Latency - Connect Time ", @@ -193,7 +193,7 @@ "type": "timeseries" } } - ], + }, "__requires": [ { "type": "panel", @@ -211,7 +211,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "8.5.4" + "version": "9.1.6" }, { "type": "datasource", @@ -276,13 +276,19 @@ "uid": "${DS_INFLUXDB2.0_JMETER}" }, "enable": true, + "hide": false, "iconColor": "rgb(23, 255, 0)", - "mappings": {}, + "mappings": { + "tags": { + "source": "field", + "value": "placeholder {nodeName=\"Test-Node\", runId=\"R006\", testName=\"Test\", type=\"started\"}" + } + }, "name": "Test Start", "showIn": 0, "tagsColumn": "type", "target": { - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"testStartEnd\")\r\n |> filter(fn: (r) => r[\"type\"] == \"started\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)" + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"testStartEnd\")\r\n |> filter(fn: (r) => r[\"type\"] == \"started\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)" }, "titleColumn": "testName" }, @@ -298,7 +304,7 @@ "showIn": 0, "tagsColumn": "type", "target": { - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"testStartEnd\")\r\n |> filter(fn: (r) => r[\"type\"] == \"finished\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)" + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"testStartEnd\")\r\n |> filter(fn: (r) => r[\"type\"] == \"finished\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)" }, "titleColumn": "testName" } @@ -310,7 +316,6 @@ "gnetId": 13644, "graphTooltip": 1, "id": null, - "iteration": 1655192906717, "links": [], "liveNow": false, "panels": [ @@ -395,16 +400,20 @@ "text": {}, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [], "hide": false, "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: [[aggregation]]s, fn: last, createEmpty: false) \r\n |> yield(name: \"last\")\r\n ", "rawQuery": true, "refId": "C", "resultFormat": "time_series", @@ -418,8 +427,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Active Users", @@ -489,7 +497,7 @@ "text": {}, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -502,7 +510,7 @@ "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -588,9 +596,13 @@ "text": {}, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -608,7 +620,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"sentBytes\")\r\n |> group(columns: [\"runId\"], mode: \"by\")\r\n |> sum()\r\n", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"sentBytes\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> sum()\r\n", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -626,8 +638,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Sent Bytes", @@ -697,7 +708,7 @@ "text": {}, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -722,7 +733,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"receivedBytes\")\r\n |> group(columns: [\"runId\"], mode: \"by\")\r\n |> sum()\r\n", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"receivedBytes\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> sum()\r\n", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -811,16 +822,20 @@ "text": {}, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [], "hide": false, "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> group(columns: [\"runId\"])\r\n |> sum()\r\n", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> sum()\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -834,8 +849,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Errors Count", @@ -907,16 +921,20 @@ }, "textMode": "auto" }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [], "hide": false, "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"_field\"])\r\n |> count()", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> count()", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -930,8 +948,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Request Count", @@ -1004,15 +1021,19 @@ "showThresholdMarkers": true, "text": {} }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [], "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": "successfulPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"runId\"])\r\n |> count()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> group(columns: [\"runId\"]) \r\n |> sum()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"runId\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \r\n percentage: 1.0 - r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n \r\n}\r\n\r\nsuccessfulPercentages()", + "query": "successfulPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"runId\"])\r\n |> count()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"runId\"]) \r\n |> sum()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"runId\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \r\n percentage: 1.0 - r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n \r\n}\r\n\r\nsuccessfulPercentages()", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -1026,8 +1047,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Success Rate", @@ -1099,15 +1119,19 @@ "showThresholdMarkers": true, "text": {} }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [], "measurement": "virtualUsers", "orderByTime": "ASC", "policy": "default", - "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"runId\"])\r\n |> count()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> group(columns: [\"runId\"])\r\n |> sum()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"runId\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \r\n percentage: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", + "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"runId\"])\r\n |> count()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"runId\"])\r\n |> sum()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"runId\"])\r\n \r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"runId\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \r\n percentage: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -1121,8 +1145,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Error Rate", @@ -1157,6 +1180,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -1259,7 +1284,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -1293,7 +1319,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": "\r\n \r\n from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\") \r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -1334,7 +1360,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])\r\n ", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/) \r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])\r\n ", "refId": "A", "resultFormat": "time_series", "select": [ @@ -1370,6 +1396,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -1460,7 +1488,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -1494,7 +1523,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -1535,7 +1564,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/) \r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "A", "resultFormat": "time_series", "select": [ @@ -1571,6 +1600,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -1673,7 +1704,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -1707,7 +1739,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"_value\"] == 1)\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"_value\"] == 1)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"_field\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -1748,7 +1780,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/) \r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "A", "resultFormat": "time_series", "select": [ @@ -1784,6 +1816,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -1874,7 +1908,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -1908,7 +1943,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -1949,7 +1984,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "A", "resultFormat": "time_series", "select": [ @@ -1985,6 +2020,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -2075,7 +2112,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -2109,7 +2147,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"fail\" )\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"fail\" )\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))\r\n", "rawQuery": true, "refId": "B", "resultFormat": "time_series", @@ -2150,7 +2188,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/) \r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "A", "resultFormat": "time_series", "select": [ @@ -2186,6 +2224,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Throughput", "axisPlacement": "auto", "barAlignment": 0, @@ -2247,7 +2287,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -2280,7 +2321,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"responseCode\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"responseCode\"])\r\n |> aggregateWindow(every: ${aggregation}s, fn: count, createEmpty: false) \r\n |> toFloat() \r\n |> map(fn: (r) => ({ r with _value: float(v: r._value /float(v: ${aggregation})) }))", "rawQuery": true, "refId": "C", "resultFormat": "time_series", @@ -2338,6 +2379,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Response Time, ms", "axisPlacement": "auto", "barAlignment": 0, @@ -2473,7 +2516,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -2506,7 +2550,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", + "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -2553,7 +2597,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "B", "resultFormat": "time_series", "select": [ @@ -2587,6 +2631,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Response Time, ms", "axisPlacement": "auto", "barAlignment": 0, @@ -2722,7 +2768,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -2755,7 +2802,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", + "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -2802,7 +2849,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "B", "resultFormat": "time_series", "select": [ @@ -2836,6 +2883,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Response Time, ms", "axisPlacement": "auto", "barAlignment": 0, @@ -2971,7 +3020,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -3004,7 +3054,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"result\"] == \"fail\")\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", + "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"result\"] == \"fail\")\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -3051,7 +3101,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "B", "resultFormat": "time_series", "select": [ @@ -3085,6 +3135,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "Response Time, ms", "axisPlacement": "auto", "barAlignment": 0, @@ -3220,7 +3272,8 @@ "min" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "multi", @@ -3231,6 +3284,10 @@ "targets": [ { "alias": "$tag_requestName", + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "dsType": "influxdb", "groupBy": [ { @@ -3249,7 +3306,7 @@ "measurement": "requestsRaw", "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: max, createEmpty: false)\n |> keep(columns: [\"_time\", \"_value\", \"requestName\"])", + "query": "from(bucket: v.bucket)\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\n |> filter(fn: (r) => r[\"runId\"] == \"${runId}\")\n |> group(columns: [\"requestName\"])\n |> aggregateWindow(every: [[aggregation]]s, fn: max, createEmpty: false)\n |> keep(columns: [\"_time\", \"_value\", \"requestName\"])", "rawQuery": true, "refId": "A", "resultFormat": "time_series", @@ -3273,10 +3330,13 @@ "operator": "=~", "value": "/^$request$/" } - ], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + ] }, { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3293,7 +3353,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", + "query": " from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"virtualUsers\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"meanActiveThreads\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> aggregateWindow(every: [[aggregation]]s, fn: mean, createEmpty: false)\r\n |> keep(columns: [\"_time\", \"_value\", \"_field\"])", "refId": "B", "resultFormat": "time_series", "select": [ @@ -3310,8 +3370,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "MAX Response Times (no filters)", @@ -3434,9 +3493,13 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3453,7 +3516,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "get_percent_500 = () => {\r\nfcount_500=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 500)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_500:fcount_500, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 500, (%)\": r._value_fcount_500 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_500()\r\n\r\n", + "query": "get_percent_500 = () => {\r\nfcount_500=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 500)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_500:fcount_500, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 500, (%)\": r._value_fcount_500 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_500()\r\n\r\n", "refId": "A", "resultFormat": "time_series", "select": [ @@ -3470,10 +3533,13 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] }, { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3490,7 +3556,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "get_percent_1000 = () => {\r\n\r\nfcount_1000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 1000)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_1000:fcount_1000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 1000, (%)\": r._value_fcount_1000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_1000()", + "query": "get_percent_1000 = () => {\r\n\r\nfcount_1000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 1000)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_1000:fcount_1000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 1000, (%)\": r._value_fcount_1000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_1000()", "refId": "B", "resultFormat": "time_series", "select": [ @@ -3507,10 +3573,13 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] }, { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3527,7 +3596,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "get_percent_1500 = () => {\r\n\r\nfcount_1500=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 1500)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_1500:fcount_1500, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 1500, (%)\": r._value_fcount_1500 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_1500()", + "query": "get_percent_1500 = () => {\r\n\r\nfcount_1500=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 1500)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/) \r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_1500:fcount_1500, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 1500, (%)\": r._value_fcount_1500 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_1500()", "refId": "C", "resultFormat": "time_series", "select": [ @@ -3544,10 +3613,13 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] }, { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3564,7 +3636,7 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "get_percent_2000 = () => {\r\n\r\nfcount_2000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 2000)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_2000:fcount_2000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 2000, (%)\": r._value_fcount_2000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_2000()", + "query": "get_percent_2000 = () => {\r\n\r\nfcount_2000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 2000)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_2000:fcount_2000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 2000, (%)\": r._value_fcount_2000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_2000()", "refId": "D", "resultFormat": "time_series", "select": [ @@ -3581,10 +3653,13 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] }, { + "datasource": { + "type": "influxdb", + "uid": "${DS_INFLUXDB2.0_JMETER}" + }, "groupBy": [ { "params": [ @@ -3602,7 +3677,7 @@ "hide": false, "orderByTime": "ASC", "policy": "default", - "query": "get_percent_5000 = () => {\r\n\r\nfcount_5000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 5000)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_5000:fcount_5000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 5000, (%)\": r._value_fcount_5000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_5000()\r\n\r\n", + "query": "get_percent_5000 = () => {\r\n\r\nfcount_5000=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"_value\"] <= 5000)\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"]) \r\n \r\n count=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{fcount_5000:fcount_5000, count:count},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n \"Request Name\": r.requestName,\r\n \"Response time is <= 5000, (%)\": r._value_fcount_5000 * 100.0/ r._value_count, \r\n })) \r\n}\r\nget_percent_5000()\r\n\r\n", "refId": "E", "resultFormat": "time_series", "select": [ @@ -3619,8 +3694,7 @@ } ] ], - "tags": [], - "datasource": "${DS_INFLUXDB2.0_JMETER}" + "tags": [] } ], "title": "Response Times Distribution, % (no filters)", @@ -3689,7 +3763,7 @@ "valueSize": 15 } }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -3697,7 +3771,7 @@ "uid": "${DS_INFLUXDB2.0_JMETER}" }, "hide": false, - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group(columns: [\"requestName\"])\r\n |> keep(columns: [ \"_value\", \"requestName\"])\r\n |> rename(columns: {_value: \"request\"})\r\n\r\n", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group(columns: [\"requestName\"])\r\n |> keep(columns: [ \"_value\", \"requestName\"])\r\n |> rename(columns: {_value: \"request\"})\r\n\r\n", "refId": "A" } ], @@ -3760,7 +3834,7 @@ "valueSize": 15 } }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -3768,7 +3842,7 @@ "uid": "${DS_INFLUXDB2.0_JMETER}" }, "hide": false, - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group(columns: [\"requestName\"])\r\n |> keep(columns: [ \"_value\", \"requestName\"])\r\n |> rename(columns: {_value: \"request\"})\r\n\r\n", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group(columns: [\"requestName\"])\r\n |> keep(columns: [ \"_value\", \"requestName\"])\r\n |> rename(columns: {_value: \"request\"})\r\n\r\n", "refId": "A" } ], @@ -4024,7 +4098,7 @@ } ] }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -4047,8 +4121,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> mean()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Avg\"})\r\n |> keep(columns: [\"Avg\", \"requestName\"])\r\n\r\n ", - "refId": "B", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> mean()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Avg\"})\r\n |> keep(columns: [\"Avg\", \"requestName\"])\r\n\r\n ", + "refId": "AVG", "resultFormat": "time_series", "select": [ [ @@ -4087,8 +4161,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Count\"})\r\n |> keep(columns: [\"requestName\", \"Count\"])", - "refId": "D", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Count\"})\r\n |> keep(columns: [\"requestName\", \"Count\"])", + "refId": "Request Name", "resultFormat": "time_series", "select": [ [ @@ -4127,8 +4201,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> max()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Max\"})\r\n |> keep(columns: [\"Max\", \"requestName\"])", - "refId": "C", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> max()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Max\"})\r\n |> keep(columns: [\"Max\", \"requestName\"])", + "refId": "Max", "resultFormat": "time_series", "select": [ [ @@ -4167,8 +4241,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> median()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Median\"})\r\n |> keep(columns: [\"Median\", \"requestName\"])", - "refId": "A", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> median()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Median\"})\r\n |> keep(columns: [\"Median\", \"requestName\"])", + "refId": "Median", "resultFormat": "time_series", "select": [ [ @@ -4207,8 +4281,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"90%\"})\r\n |> keep(columns: [\"90%\", \"requestName\"])", - "refId": "E", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"90%\"})\r\n |> keep(columns: [\"90%\", \"requestName\"])", + "refId": "90 %", "resultFormat": "time_series", "select": [ [ @@ -4247,8 +4321,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"95%\"})\r\n |> keep(columns: [\"95%\", \"requestName\"])", - "refId": "F", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"95%\"})\r\n |> keep(columns: [\"95%\", \"requestName\"])", + "refId": "95 %", "resultFormat": "time_series", "select": [ [ @@ -4287,8 +4361,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.99)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"99%\"})\r\n |> keep(columns: [\"99%\", \"requestName\"])", - "refId": "G", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.99)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"99%\"})\r\n |> keep(columns: [\"99%\", \"requestName\"])", + "refId": "99 %", "resultFormat": "time_series", "select": [ [ @@ -4327,8 +4401,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> stddev()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"stddev\"})\r\n |> keep(columns: [\"stddev\", \"requestName\"])", - "refId": "H", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> stddev()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"stddev\"})\r\n |> keep(columns: [\"stddev\", \"requestName\"])", + "refId": "stddev", "resultFormat": "time_series", "select": [ [ @@ -4367,8 +4441,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "tpsCalculator = () => {\r\ncount = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n integral = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> group(columns: [\"requestName\"])\r\n |> integral()\r\n |> toFloat()\r\n |> group() \r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{count:count, integral:integral},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n TPS: r._value_count / r._value_integral,\r\n TPM: (r._value_count / r._value_integral) * 60.0,\r\n TPH: (r._value_count / r._value_integral) * 60.0 * 60.0, \r\n })) \r\n}\r\n\r\ntpsCalculator()", - "refId": "I", + "query": "tpsCalculator = () => {\r\ncount = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n integral = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> integral()\r\n |> toFloat()\r\n |> group() \r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{count:count, integral:integral},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n TPS: r._value_count / r._value_integral,\r\n TPM: (r._value_count / r._value_integral) * 60.0,\r\n TPH: (r._value_count / r._value_integral) * 60.0 * 60.0, \r\n })) \r\n}\r\n\r\ntpsCalculator()", + "refId": "TPS", "resultFormat": "time_series", "select": [ [ @@ -4407,8 +4481,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"] )\r\n |> count()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> group(columns: [\"requestName\"] )\r\n |> sum()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n ErrorRate: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", - "refId": "J", + "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"] )\r\n |> count()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"] )\r\n |> sum()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n ErrorRate: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", + "refId": "Error %", "resultFormat": "time_series", "select": [ [ @@ -4470,7 +4544,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null } ] }, @@ -4504,7 +4579,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "#1F78C1", @@ -4656,7 +4732,7 @@ "h": 10, "w": 24, "x": 0, - "y": 102 + "y": 104 }, "id": 115, "links": [], @@ -4677,7 +4753,7 @@ } ] }, - "pluginVersion": "8.5.4", + "pluginVersion": "9.1.6", "targets": [ { "datasource": { @@ -4700,8 +4776,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> mean()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Avg\"})\r\n |> keep(columns: [\"Avg\", \"requestName\"])\r\n\r\n ", - "refId": "B", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> mean()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Avg\"})\r\n |> keep(columns: [\"Avg\", \"requestName\"])\r\n\r\n ", + "refId": "AVG", "resultFormat": "time_series", "select": [ [ @@ -4740,8 +4816,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Count\"})\r\n |> keep(columns: [\"requestName\", \"Count\"])", - "refId": "D", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Count\"})\r\n |> keep(columns: [\"requestName\", \"Count\"])", + "refId": "Request Name & Count", "resultFormat": "time_series", "select": [ [ @@ -4780,8 +4856,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> max()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Max\"})\r\n |> keep(columns: [\"Max\", \"requestName\"])", - "refId": "C", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> max()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Max\"})\r\n |> keep(columns: [\"Max\", \"requestName\"])", + "refId": "Max", "resultFormat": "time_series", "select": [ [ @@ -4820,8 +4896,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> median()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Median\"})\r\n |> keep(columns: [\"Median\", \"requestName\"])", - "refId": "A", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> median()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"Median\"})\r\n |> keep(columns: [\"Median\", \"requestName\"])", + "refId": "Median", "resultFormat": "time_series", "select": [ [ @@ -4860,8 +4936,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"90%\"})\r\n |> keep(columns: [\"90%\", \"requestName\"])", - "refId": "E", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.90)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"90%\"})\r\n |> keep(columns: [\"90%\", \"requestName\"])", + "refId": "90%", "resultFormat": "time_series", "select": [ [ @@ -4900,8 +4976,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"95%\"})\r\n |> keep(columns: [\"95%\", \"requestName\"])", - "refId": "F", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.95)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"95%\"})\r\n |> keep(columns: [\"95%\", \"requestName\"])", + "refId": "95 %", "resultFormat": "time_series", "select": [ [ @@ -4940,8 +5016,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.99)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"99%\"})\r\n |> keep(columns: [\"99%\", \"requestName\"])", - "refId": "G", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> toFloat()\r\n |> quantile(q: 0.99)\r\n |> group()\r\n |> rename(columns: {\"_value\": \"99%\"})\r\n |> keep(columns: [\"99%\", \"requestName\"])", + "refId": "99 %", "resultFormat": "time_series", "select": [ [ @@ -4980,8 +5056,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> stddev()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"stddev\"})\r\n |> keep(columns: [\"stddev\", \"requestName\"])", - "refId": "H", + "query": "from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> stddev()\r\n |> group()\r\n |> rename(columns: {\"_value\": \"stddev\"})\r\n |> keep(columns: [\"stddev\", \"requestName\"])", + "refId": "STDDEV", "resultFormat": "time_series", "select": [ [ @@ -5020,8 +5096,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "tpsCalculator = () => {\r\ncount = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n integral = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> group(columns: [\"requestName\"])\r\n |> integral()\r\n |> toFloat()\r\n |> group() \r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{count:count, integral:integral},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n TPS: r._value_count / r._value_integral,\r\n TPM: (r._value_count / r._value_integral) * 60.0,\r\n TPH: (r._value_count / r._value_integral) * 60.0 * 60.0, \r\n })) \r\n}\r\n\r\ntpsCalculator()", - "refId": "I", + "query": "tpsCalculator = () => {\r\ncount = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> count()\r\n |> toFloat()\r\n |> group()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n integral = from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"count\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"])\r\n |> integral()\r\n |> toFloat()\r\n |> group() \r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n \r\n return join(\r\n tables:{count:count, integral:integral},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n TPS: r._value_count / r._value_integral,\r\n TPM: (r._value_count / r._value_integral) * 60.0,\r\n TPH: (r._value_count / r._value_integral) * 60.0 * 60.0, \r\n })) \r\n}\r\n\r\ntpsCalculator()", + "refId": "TPS", "resultFormat": "time_series", "select": [ [ @@ -5060,8 +5136,8 @@ ], "orderByTime": "ASC", "policy": "default", - "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n\r\n |> group(columns: [\"requestName\"] )\r\n |> count()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> group(columns: [\"requestName\"] )\r\n |> sum()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n ErrorRate: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", - "refId": "J", + "query": "failuresPercentages = () => {\r\n\r\ncountResponseTime=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"responseTime\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"] )\r\n |> count()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n \r\nsumerrorCount=from(bucket: v.bucket)\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"requestsRaw\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"errorCount\")\r\n |> filter(fn: (r) => r[\"result\"] == \"pass\")\r\n |> filter(fn: (r) => r[\"runId\"] =~ /${runId:regex}/)\r\n |> filter(fn: (r) => r[\"samplerType\"] =~ /${samplerType:regex}/)\r\n |> group(columns: [\"requestName\"] )\r\n |> sum()\r\n |> group()\r\n |> toFloat()\r\n |> keep(columns: [\"_value\", \"requestName\"])\r\n\r\n return join(\r\n tables:{countResponseTime:countResponseTime, sumerrorCount:sumerrorCount},\r\n on:[\"requestName\"]\r\n )\r\n |> map(fn:(r) => ({\r\n requestName: r.requestName,\r\n ErrorRate: r._value_sumerrorCount / r._value_countResponseTime \r\n })) \r\n}\r\n\r\nfailuresPercentages()", + "refId": "Error %", "resultFormat": "time_series", "select": [ [ @@ -5100,7 +5176,7 @@ "h": 2, "w": 24, "x": 0, - "y": 112 + "y": 114 }, "height": "180", "id": 25, @@ -5109,7 +5185,7 @@ "content": "