Skip to content

Instantly share code, notes, and snippets.

@PovilasID
Last active January 30, 2023 19:10
Show Gist options
  • Save PovilasID/113c5d2ef6fc9fbddcd19864466399a6 to your computer and use it in GitHub Desktop.
Save PovilasID/113c5d2ef6fc9fbddcd19864466399a6 to your computer and use it in GitHub Desktop.
{
"__inputs": [
{
"name": "DS_INFLUXDB",
"label": "InfluxDB",
"description": "",
"type": "datasource",
"pluginId": "influxdb",
"pluginName": "InfluxDB"
}
],
"__elements": {},
"__requires": [
{
"type": "panel",
"id": "gauge",
"name": "Gauge",
"version": ""
},
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "9.1.4"
},
{
"type": "datasource",
"id": "influxdb",
"name": "InfluxDB",
"version": "1.0.0"
},
{
"type": "panel",
"id": "table",
"name": "Table",
"version": ""
},
{
"type": "panel",
"id": "timeseries",
"name": "Time series",
"version": ""
}
],
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"description": "Dashboard for Speedtest Tracker v2",
"editable": true,
"fiscalYearStartMonth": 0,
"gnetId": 17460,
"graphTooltip": 2,
"id": null,
"links": [
{
"asDropdown": false,
"icon": "external link",
"includeVars": false,
"keepTime": false,
"tags": [],
"targetBlank": true,
"title": "Speedtest-Tracker@GitHub",
"tooltip": "GitHub Repository",
"type": "link",
"url": "https://github.com/alexjustesen/speedtest-tracker"
}
],
"liveNow": false,
"panels": [
{
"collapsed": false,
"datasource": {
"type": "influxdb",
"uid": "aIJpPB_nk"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 115,
"panels": [],
"title": "Speedtest Tracker v2",
"type": "row"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "center",
"displayMode": "auto",
"inspect": false,
"minWidth": 150
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Server ID"
},
"properties": [
{
"id": "custom.displayMode",
"value": "auto"
},
{
"id": "mappings",
"value": []
},
{
"id": "unit",
"value": "string"
}
]
},
{
"matcher": {
"id": "byName",
"options": "DL Speed (mean)"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "custom.displayMode",
"value": "gradient-gauge"
},
{
"id": "color",
"value": {
"mode": "continuous-RdYlGr"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "UL Speed (mean)"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "custom.displayMode",
"value": "gradient-gauge"
},
{
"id": "color",
"value": {
"mode": "continuous-RdYlGr"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "Ping (mean)"
},
"properties": [
{
"id": "unit",
"value": "ms"
},
{
"id": "custom.displayMode",
"value": "gradient-gauge"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Ping jitter (mean)"
},
"properties": [
{
"id": "unit",
"value": "ms"
},
{
"id": "custom.displayMode",
"value": "gradient-gauge"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Packet Loss (mean)"
},
"properties": [
{
"id": "unit",
"value": "percent"
},
{
"id": "custom.displayMode",
"value": "gradient-gauge"
}
]
}
]
},
"gridPos": {
"h": 4,
"w": 24,
"x": 0,
"y": 1
},
"id": 121,
"options": {
"footer": {
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"frameIndex": 7,
"showHeader": true,
"sortBy": [
{
"desc": true,
"displayName": "ID"
}
]
},
"pluginVersion": "9.1.4",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"server_id\" or r[\"_field\"] == \"server_name\" or r[\"_field\"] == \"download_bits\" or r[\"_field\"] == \"download_jitter\" or r[\"_field\"] == \"upload_bits\" or r[\"_field\"] == \"upload_jitter\" or r[\"_field\"] == \"ping\" or r[\"_field\"] == \"ping_jitter\" or r[\"_field\"] == \"packet_loss\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "A"
}
],
"title": "Average by Server",
"transformations": [
{
"id": "merge",
"options": {}
},
{
"id": "organize",
"options": {
"excludeByName": {
"scheduled": true,
"server_id": false
},
"indexByName": {
"Time": 0,
"download_bits": 3,
"download_jitter": 4,
"packet_loss": 9,
"ping": 7,
"ping_jitter": 8,
"server_id": 1,
"server_name": 2,
"upload_bits": 5,
"upload_jitter": 6
},
"renameByName": {
"Time": "Time",
"download": "Download (Mbit/s)",
"download_bits": "DL Speed",
"download_jitter": "DL jitter",
"id": "ID",
"id {host=\"speedtest\", name=\"speedtest\"}": "",
"packet_loss": "Packet Loss",
"ping": "Ping",
"ping_jitter": "Ping jitter",
"scheduled": "",
"server_host": "Server Host",
"server_id": "Server ID",
"server_name": "Server Name",
"upload": "Upload (Mbit/s)",
"upload_bits": "UL Speed",
"upload_jitter": "UL jitter"
}
}
},
{
"id": "groupBy",
"options": {
"fields": {
"DL (Mbit/s)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"DL Speed": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Packet Loss": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Ping": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Ping (ms)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Ping jitter": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Server ID": {
"aggregations": [],
"operation": "groupby"
},
"Server Name": {
"aggregations": [],
"operation": "groupby"
},
"UL (Mbit/s)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"UL Speed": {
"aggregations": [
"mean"
],
"operation": "aggregate"
}
}
}
}
],
"type": "table"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "bps"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 6,
"x": 0,
"y": 5
},
"hideTimeOverride": false,
"id": 116,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "/^download_bits$/",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true,
"text": {}
},
"pluginVersion": "9.1.4",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"linear"
],
"type": "fill"
}
],
"hide": false,
"measurement": "speedtest",
"orderByTime": "ASC",
"policy": "default",
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"download_bits\")\r\n |> drop(columns: [\"server_host\",\"server_name\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"download"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": []
}
],
"title": "Last Test: DL Speed",
"type": "gauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisGridShow": true,
"axisLabel": "",
"axisPlacement": "left",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 45,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "smooth",
"lineStyle": {
"fill": "solid"
},
"lineWidth": 2,
"pointSize": 4,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "Mbits"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "download_bits"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "displayName",
"value": "Download Speed"
}
]
},
{
"matcher": {
"id": "byName",
"options": "upload_bits"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "displayName",
"value": "Upload Speed"
}
]
}
]
},
"gridPos": {
"h": 12,
"w": 18,
"x": 6,
"y": 5
},
"id": 104,
"interval": "",
"options": {
"legend": {
"calcs": [
"lastNotNull",
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"download_bits\" or r[\"_field\"] == \"upload_bits\")\r\n |> drop(columns: [\"server_host\",\"server_name\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "DL/UL Speed",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "light-yellow",
"value": 7
},
{
"color": "green",
"value": 9
}
]
},
"unit": "bps"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 6,
"x": 0,
"y": 11
},
"id": 117,
"interval": "",
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "/^upload_bits$/",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "9.1.4",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"linear"
],
"type": "fill"
}
],
"measurement": "speedtest",
"orderByTime": "ASC",
"policy": "default",
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"upload_bits\")\r\n |> drop(columns: [\"server_host\",\"server_name\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"upload"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": []
}
],
"title": "Last Test: UL Speed",
"type": "gauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 50
}
]
},
"unit": "ms"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 6,
"x": 0,
"y": 17
},
"id": 118,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"last"
],
"fields": "/^ping$/",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "9.1.4",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"linear"
],
"type": "fill"
}
],
"measurement": "speedtest",
"orderByTime": "ASC",
"policy": "default",
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"ping\")\r\n |> drop(columns: [\"server_host\",\"server_name\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"ping"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": []
}
],
"title": "Last Test: Ping",
"type": "gauge"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 30,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 3,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 20
},
{
"color": "red",
"value": 30
}
]
},
"unit": "ms"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "ping"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "green",
"mode": "fixed"
}
},
{
"id": "displayName",
"value": "Ping"
}
]
},
{
"matcher": {
"id": "byName",
"options": "ping_jitter"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "yellow",
"mode": "fixed"
}
},
{
"id": "displayName",
"value": "Jitter"
}
]
}
]
},
"gridPos": {
"h": 7,
"w": 18,
"x": 6,
"y": 17
},
"id": 119,
"interval": "",
"options": {
"legend": {
"calcs": [
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"ping\" or r[\"_field\"] == \"ping_jitter\")\r\n |> drop(columns: [\"server_host\",\"server_name\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "Ping",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "center",
"displayMode": "auto",
"inspect": false,
"minWidth": 150
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "none"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Server ID"
},
"properties": [
{
"id": "custom.displayMode",
"value": "auto"
},
{
"id": "mappings",
"value": []
},
{
"id": "unit",
"value": "string"
}
]
},
{
"matcher": {
"id": "byName",
"options": "DL Speed"
},
"properties": [
{
"id": "unit",
"value": "bps"
}
]
},
{
"matcher": {
"id": "byName",
"options": "UL Speed"
},
"properties": [
{
"id": "unit",
"value": "bps"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Ping"
},
"properties": [
{
"id": "unit",
"value": "ms"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Ping jitter"
},
"properties": [
{
"id": "unit",
"value": "ms"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Packet Loss"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
}
]
},
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 24
},
"id": 122,
"options": {
"footer": {
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"frameIndex": 7,
"showHeader": true,
"sortBy": [
{
"desc": true,
"displayName": "Time"
}
]
},
"pluginVersion": "9.1.4",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"server_id\" or r[\"_field\"] == \"server_name\" or r[\"_field\"] == \"download_bits\" or r[\"_field\"] == \"download_jitter\" or r[\"_field\"] == \"upload_bits\" or r[\"_field\"] == \"upload_jitter\" or r[\"_field\"] == \"ping\" or r[\"_field\"] == \"ping_jitter\" or r[\"_field\"] == \"packet_loss\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "A"
}
],
"title": "All Tests",
"transformations": [
{
"id": "merge",
"options": {}
},
{
"id": "organize",
"options": {
"excludeByName": {
"download_jitter": true,
"scheduled": true,
"server_id": false,
"upload_jitter": true
},
"indexByName": {
"Time": 0,
"download_bits": 3,
"download_jitter": 4,
"packet_loss": 9,
"ping": 7,
"ping_jitter": 8,
"server_id": 1,
"server_name": 2,
"upload_bits": 5,
"upload_jitter": 6
},
"renameByName": {
"Time": "Time",
"download": "Download (Mbit/s)",
"download_bits": "DL Speed",
"download_jitter": "DL jitter",
"id": "ID",
"id {host=\"speedtest\", name=\"speedtest\"}": "",
"packet_loss": "Packet Loss",
"ping": "Ping",
"ping_jitter": "Ping jitter",
"scheduled": "",
"server_host": "Server Host",
"server_id": "Server ID",
"server_name": "Server Name",
"upload": "Upload (Mbit/s)",
"upload_bits": "UL Speed",
"upload_jitter": "UL jitter"
}
}
},
{
"id": "groupBy",
"options": {
"fields": {
"DL (Mbit/s)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"DL Speed": {
"aggregations": [
"mean"
]
},
"Packet Loss": {
"aggregations": [
"mean"
]
},
"Ping": {
"aggregations": [
"mean"
]
},
"Ping (ms)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"Ping jitter": {
"aggregations": [
"mean"
]
},
"Server ID": {
"aggregations": []
},
"Server Name": {
"aggregations": []
},
"Time": {
"aggregations": []
},
"UL (Mbit/s)": {
"aggregations": [
"mean"
],
"operation": "aggregate"
},
"UL Speed": {
"aggregations": [
"mean"
]
}
}
}
}
],
"type": "table"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 30
},
"id": 128,
"panels": [],
"title": "Per server dynamics",
"type": "row"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisGridShow": true,
"axisLabel": "",
"axisPlacement": "left",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 45,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "smooth",
"lineStyle": {
"fill": "solid"
},
"lineWidth": 2,
"pointSize": 4,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "Mbits"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "download_bits"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "displayName",
"value": "${__field.labels.server_name}"
}
]
}
]
},
"gridPos": {
"h": 14,
"w": 12,
"x": 0,
"y": 31
},
"id": 123,
"interval": "",
"options": {
"legend": {
"calcs": [
"lastNotNull",
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"download_bits\")\r\n |> drop(columns: [\"server_host\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "Download speed per server",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisGridShow": true,
"axisLabel": "",
"axisPlacement": "left",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 45,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "smooth",
"lineStyle": {
"fill": "solid"
},
"lineWidth": 2,
"pointSize": 4,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "Mbits"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "upload_bits"
},
"properties": [
{
"id": "unit",
"value": "bps"
},
{
"id": "displayName",
"value": "${__field.labels.server_name}"
}
]
}
]
},
"gridPos": {
"h": 14,
"w": 12,
"x": 12,
"y": 31
},
"id": 124,
"interval": "",
"options": {
"legend": {
"calcs": [
"lastNotNull",
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"upload_bits\")\r\n |> drop(columns: [\"server_host\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "Upload speed by server",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 30,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 3,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 20
},
{
"color": "red",
"value": 30
}
]
},
"unit": "ms"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "ping"
},
"properties": [
{
"id": "displayName",
"value": "${__field.labels.server_name}"
}
]
}
]
},
"gridPos": {
"h": 13,
"w": 12,
"x": 0,
"y": 45
},
"id": 125,
"interval": "",
"options": {
"legend": {
"calcs": [
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"ping\")\r\n |> drop(columns: [\"server_host\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "Ping per serever",
"type": "timeseries"
},
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 30,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 3,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "always",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 20
},
{
"color": "red",
"value": 30
}
]
},
"unit": "ms"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "ping"
},
"properties": [
{
"id": "displayName",
"value": "${__field.labels.server_name}"
}
]
}
]
},
"gridPos": {
"h": 13,
"w": 12,
"x": 12,
"y": 45
},
"id": 129,
"interval": "",
"options": {
"legend": {
"calcs": [
"mean",
"max",
"min"
],
"displayMode": "table",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"pluginVersion": "8.5.2",
"targets": [
{
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"hide": false,
"query": "from(bucket: \"${bucket}\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"speedtest\")\r\n |> filter(fn: (r) => r[\"server_name\"] =~ /^${server:regex}$/)\r\n |> filter(fn: (r) => r[\"_field\"] == \"ping\")\r\n |> drop(columns: [\"server_host\"])\r\n |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)\r\n |> yield(name: \"last\")",
"refId": "C"
}
],
"title": "Ping per serever",
"type": "timeseries"
}
],
"refresh": "15m",
"schemaVersion": 37,
"style": "dark",
"tags": [
"speedtest-tracker-v2",
"influxdb2",
"Flux"
],
"templating": {
"list": [
{
"current": {},
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"definition": "buckets()",
"hide": 0,
"includeAll": false,
"multi": false,
"name": "bucket",
"options": [],
"query": "buckets()",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 5,
"type": "query"
},
{
"current": {},
"datasource": {
"type": "influxdb",
"uid": "${DS_INFLUXDB}"
},
"definition": "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(bucket: \"speedtest-tracker\", tag: \"server_name\")",
"hide": 0,
"includeAll": true,
"label": "Server",
"multi": true,
"name": "server",
"options": [],
"query": "import \"influxdata/influxdb/schema\"\r\n\r\nschema.tagValues(bucket: \"speedtest-tracker\", tag: \"server_name\")",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"type": "query"
}
]
},
"time": {
"from": "now-24h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
]
},
"timezone": "",
"title": "Speedtest Tracker v2",
"uid": "AX734aDLp",
"version": 9,
"weekStart": ""
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment