From 0c8df66cbea0a77f91fe4fd16d9154139ebe9a0c Mon Sep 17 00:00:00 2001 From: Facu de la Cruz Date: Sat, 24 Oct 2020 14:19:48 -0300 Subject: [PATCH] Update README.md --- README.md | 1 + img/github-banner.png | Bin 0 -> 64226 bytes kubernetes/ISP-Checker-deploy.MD5 | 2 +- kubernetes/ISP-Checker-deploy.SHA512 | 2 +- kubernetes/ISP-Checker-deploy.yaml | 4959 ++++++++++++++------------ 5 files changed, 2688 insertions(+), 2276 deletions(-) create mode 100644 img/github-banner.png diff --git a/README.md b/README.md index acbf38a..31c1b06 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ + ![License](https://img.shields.io/github/license/fmdlc/ISP-Checker) ![LastCommit](https://img.shields.io/github/last-commit/fmdlc/ISP-Checker) ![Build](https://github.com/fmdlc/ISP-Checker/workflows/Build/badge.svg) ![Docker](https://img.shields.io/badge/Docker-19.03.13-blue) > A `docker-compose` and `kubernetes` stack to run a set of ISP controls and collect metrics on a [Raspberry Pi](https://www.raspberrypi.org/). diff --git a/img/github-banner.png b/img/github-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7482a0fc7cf43285c51467d5f37d06480051c8 GIT binary patch literal 64226 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 literal 0 HcmV?d00001 diff --git a/kubernetes/ISP-Checker-deploy.MD5 b/kubernetes/ISP-Checker-deploy.MD5 index 28a5bc7..45a0af7 100644 --- a/kubernetes/ISP-Checker-deploy.MD5 +++ b/kubernetes/ISP-Checker-deploy.MD5 @@ -1 +1 @@ -MD5 (../ISP-Checker-deploy.yaml) = 8cdf1b01019a8a4745aac678d0a7dce9 +MD5 (../ISP-Checker-deploy.yaml) = 1042b03c2b09827ea0b2cded73e4f8bb diff --git a/kubernetes/ISP-Checker-deploy.SHA512 b/kubernetes/ISP-Checker-deploy.SHA512 index f123d51..7029ad0 100644 --- a/kubernetes/ISP-Checker-deploy.SHA512 +++ b/kubernetes/ISP-Checker-deploy.SHA512 @@ -1 +1 @@ -SHA512 (../ISP-Checker-deploy.yaml) = fa4f4feccfb9bede2d2705b2faf0e5ebc3de416cf4815c728700e338c72813ceea834a54294dc6d11e0577892bb5bdc44e004853538ae7686741dbb519626078 +SHA512 (../ISP-Checker-deploy.yaml) = 23b9a2d6b7f4840380d0040eda06ea2cddc1e39fcee059d5188204851dbd752dbab5dcc7b0001615965c7e603522f0cbbcfb375aedf9c7f84787077862fab131 diff --git a/kubernetes/ISP-Checker-deploy.yaml b/kubernetes/ISP-Checker-deploy.yaml index e0c5677..b2b8d54 100644 --- a/kubernetes/ISP-Checker-deploy.yaml +++ b/kubernetes/ISP-Checker-deploy.yaml @@ -303,9 +303,9 @@ metadata: data: network-dashboard.json: |- { - "annotations": { - "list": [ - { + "annotations": { + "list": [ + { "builtIn": 1, "datasource": "-- Grafana --", "enable": true, @@ -313,268 +313,63 @@ data: "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" - } - ] - }, + } + ] + }, "description": "Network latencies and availability", "editable": true, "gnetId": 13140, "graphTooltip": 0, - "iteration": 1603341911009, + "iteration": 1603557787209, "links": [], "panels": [ { - "datasource": "InfluxDB", + "datasource": null, "fieldConfig": { "defaults": { - "custom": {}, - "mappings": [], - "max": 300, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "super-light-green", - "value": 0 - }, - { - "color": "light-green", - "value": 50 - }, - { - "color": "semi-dark-green", - "value": 100 - }, - { - "color": "semi-dark-green", - "value": 150 - }, - { - "color": "light-orange", - "value": 150 - }, - { - "color": "super-light-orange", - "value": 200 - }, - { - "color": "semi-dark-orange", - "value": 250 - }, - { - "color": "dark-red", - "value": 300 - } - ] - }, - "unit": "ms" - }, - "overrides": [] + "custom": {} }, + "overrides": [] + }, "gridPos": { - "h": 11, - "w": 6, + "h": 6, + "w": 11, "x": 0, "y": 0 - }, - "id": 26, + }, + "id": 95, "options": { - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": true, - "showThresholdMarkers": true - }, - "pluginVersion": "7.2.1", - "targets": [ - { - "groupBy": [ - { - "params": [ - "5m" - ], - "type": "time" - }, - { - "params": [ - "previous" - ], - "type": "fill" - } - ], - "measurement": "speedtest", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "Ping" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [] - } - ], + "content": " ", + "mode": "html" + }, + "pluginVersion": "7.1.0", "timeFrom": null, "timeShift": null, - "title": "Speedtest (Ping)", - "type": "gauge" - }, - { - "datasource": "InfluxDB", - "description": "Download bandwidth", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "light-red", - "value": 5 - }, - { - "color": "dark-orange", - "value": 10 - }, - { - "color": "super-light-orange", - "value": 20 - }, - { - "color": "super-light-green", - "value": 30 - }, - { - "color": "light-green", - "value": 40 - }, - { - "color": "semi-dark-green", - "value": 50 - } - ] - }, - "unit": "Mbits" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 5, - "x": 6, - "y": 0 - }, - "id": 20, - "options": { - "colorMode": "background", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} }, - "pluginVersion": "7.2.1", - "targets": [ - { - "groupBy": [ - { - "params": [ - "5m" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "speedtest", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "Download" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - }, - { - "params": [ - "/1048576" - ], - "type": "math" - } - ] - ], - "tags": [] - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Bandwidth (Download)", - "type": "stat" + "overrides": [] }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, "fill": 1, "fillGradient": 2, "gridPos": { - "h": 11, + "h": 9, "w": 13, "x": 11, "y": 0 - }, + }, "hiddenSeries": false, "id": 24, "legend": { @@ -587,13 +382,13 @@ data: "show": false, "total": false, "values": false - }, + }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, @@ -610,16 +405,16 @@ data: { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "previous" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], "measurement": "speedtest", "orderByTime": "ASC", "policy": "default", @@ -630,45 +425,45 @@ data: { "params": [ "Download" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - " / 1000000" - ], + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + " / 1000000" + ], "type": "math" - } - ] - ], + } + ] + ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$NetHost$/" - } - ] + } + ] + }, + { + "alias": "Upload", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" }, { - "alias": "Upload", - "groupBy": [ - { - "params": [ - "$__interval" - ], - "type": "time" - }, - { - "params": [ - "previous" - ], - "type": "fill" - } - ], + "params": [ + "previous" + ], + "type": "fill" + } + ], "measurement": "speedtest", "orderByTime": "ASC", "policy": "default", @@ -679,24 +474,24 @@ data: { "params": [ "Upload" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - }, - { - "params": [ - " / 1000000" - ], + ], + "type": "field" + }, + { + "params": [], + "type": "last" + }, + { + "params": [ + " / 1000000" + ], "type": "math" - } - ] - ], + } + ] + ], "tags": [] - } - ], + } + ], "thresholds": [], "timeFrom": null, "timeRegions": [], @@ -706,7 +501,7 @@ data: "shared": true, "sort": 0, "value_type": "individual" - }, + }, "type": "graph", "xaxis": { "buckets": null, @@ -714,7 +509,7 @@ data: "name": null, "show": true, "values": [] - }, + }, "yaxes": [ { "$$hashKey": "object:401", @@ -724,93 +519,204 @@ data: "max": null, "min": null, "show": true - }, - { - "$$hashKey": "object:402", - "decimals": 2, - "format": "MBs", - "label": "Download (MB/s)", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], + }, + { + "$$hashKey": "object:402", + "decimals": 2, + "format": "MBs", + "label": "Download (MB/s)", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], "yaxis": { "align": false, "alignLevel": null - } + } + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "max": 300, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "super-light-green", + "value": 0 + }, + { + "color": "light-green", + "value": 50 + }, + { + "color": "semi-dark-green", + "value": 100 + }, + { + "color": "semi-dark-green", + "value": 150 + }, + { + "color": "light-orange", + "value": 150 + }, + { + "color": "super-light-orange", + "value": 200 + }, + { + "color": "semi-dark-orange", + "value": 250 + }, + { + "color": "dark-red", + "value": 300 + } + ] + }, + "unit": "ms" + }, + "overrides": [] }, - { - "datasource": "InfluxDB", - "description": "Uptime bandwidth", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "red", - "value": 0.5 - }, - { - "color": "dark-orange", - "value": 1 - }, - { - "color": "light-yellow", - "value": 2 - }, - { - "color": "super-light-green", - "value": 3 - }, - { - "color": "light-green", - "value": 4 - }, - { - "color": "semi-dark-green", - "value": 5 - }, + "gridPos": { + "h": 11, + "w": 6, + "x": 0, + "y": 6 + }, + "id": 26, + "options": { + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": true, + "showThresholdMarkers": true + }, + "pluginVersion": "7.2.1", + "targets": [ + { + "groupBy": [ + { + "params": [ + "5m" + ], + "type": "time" + }, + { + "params": [ + "previous" + ], + "type": "fill" + } + ], + "measurement": "speedtest", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ { - "color": "dark-green", - "value": 6 - } - ] + "params": [ + "Ping" + ], + "type": "field" }, - "unit": "Mbits" + { + "params": [], + "type": "last" + } + ] + ], + "tags": [] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Speedtest (Ping)", + "type": "gauge" + }, + { + "datasource": "InfluxDB", + "description": "Download bandwidth", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "light-red", + "value": 5 + }, + { + "color": "dark-orange", + "value": 10 + }, + { + "color": "super-light-orange", + "value": 20 + }, + { + "color": "super-light-green", + "value": 30 + }, + { + "color": "light-green", + "value": 40 + }, + { + "color": "semi-dark-green", + "value": 50 + } + ] }, - "overrides": [] + "unit": "Mbits" }, + "overrides": [] + }, "gridPos": { - "h": 5, + "h": 6, "w": 5, "x": 6, "y": 6 - }, - "id": 22, + }, + "id": 20, "options": { - "colorMode": "value", + "colorMode": "background", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", "targets": [ { @@ -818,16 +724,16 @@ data: { "params": [ "5m" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "measurement": "speedtest", "orderByTime": "ASC", "policy": "default", @@ -837,93 +743,101 @@ data: [ { "params": [ - "Upload" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - }, - { - "params": [ - "/1048576" - ], + "Download" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + "/1048576" + ], "type": "math" - } - ] - ], - "tags": [] - } + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, - "title": "Bandwidth (Upload)", + "title": "Bandwidth (Download)", "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "description": "ICMP echo requests average latency.", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "description": "Percentage of package lost ", + "fieldConfig": { + "defaults": { + "custom": {}, + "unit": "percent" }, - "fill": 1, + "overrides": [] + }, + "fill": 3, "fillGradient": 2, "gridPos": { - "h": 11, - "w": 18, - "x": 0, - "y": 11 - }, + "h": 8, + "w": 13, + "x": 11, + "y": 9 + }, "hiddenSeries": false, - "id": 2, + "id": 8, "legend": { "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, + "hideEmpty": false, "hideZero": false, "max": false, "min": false, - "rightSide": true, "show": true, - "sideWidth": null, "total": false, "values": false - }, + }, "lines": true, "linewidth": 1, - "nullPointMode": "null", + "nullPointMode": "connected", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, "points": false, "renderer": "flot", - "seriesOverrides": [], + "seriesOverrides": [ + { + "$$hashKey": "object:405" + } + ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "alias": "$tag_url", "groupBy": [ { "params": [ - "url" - ], - "type": "tag" - } - ], + "5m" + ], + "type": "time" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], "measurement": "ping", "orderByTime": "ASC", "policy": "default", @@ -933,47 +847,59 @@ data: [ { "params": [ - "average_response_ms" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "url", - "operator": "=~", - "value": "/^$PingURL$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" + "percent_packet_loss" + ], + "type": "field" + }, + { + "params": [ + 95 + ], + "type": "percentile" } ] - } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [ + "tags": [] + } + ], + "thresholds": [ { - "$$hashKey": "object:150", - "colorMode": "background6", - "fill": true, - "fillColor": "rgba(234, 112, 112, 0.12)", - "line": false, - "lineColor": "rgba(237, 46, 24, 0.60)", - "op": "time" - } - ], + "$$hashKey": "object:387", + "colorMode": "critical", + "fill": false, + "line": true, + "op": "gt", + "value": 25, + "yaxis": "left" + }, + { + "$$hashKey": "object:393", + "colorMode": "warning", + "fill": false, + "line": true, + "op": "gt", + "value": 2, + "yaxis": "left" + }, + { + "$$hashKey": "object:399", + "colorMode": "ok", + "fill": true, + "line": false, + "op": "lt", + "value": 2, + "yaxis": "left" + } + ], + "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "ICMP average response", + "title": "ICMP Packet loss (%)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" - }, + }, "type": "graph", "xaxis": { "buckets": null, @@ -981,317 +907,481 @@ data: "name": null, "show": true, "values": [] - }, + }, "yaxes": [ { - "$$hashKey": "object:100", - "format": "short", - "label": "average (ms)", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:101", - "format": "short", - "label": "", + "$$hashKey": "object:416", + "format": "percent", + "label": "Packet lost %", "logBase": 1, - "max": null, - "min": null, + "max": "100", + "min": "0", "show": true - } - ], + }, + { + "$$hashKey": "object:417", + "format": "percent", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], "yaxis": { "align": false, "alignLevel": null - } - }, - { - "datasource": "InfluxDB", - "description": "Average response time for External Ping in ms.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "max": 1000, - "min": 0, - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "super-light-green", - "value": null - }, - { - "color": "light-green", - "value": 10 - }, - { - "color": "semi-dark-green", - "value": 20 - }, - { - "color": "dark-green", - "value": 30 - }, - { - "color": "super-light-orange", - "value": 40 - }, - { - "color": "light-orange", - "value": 50 - }, - { - "color": "semi-dark-orange", - "value": 70 - }, - { - "color": "dark-orange", - "value": 80 - }, - { - "color": "light-red", - "value": 90 - }, - { - "color": "dark-red", - "value": 100 - } - ] - }, - "unit": "ms" + } + }, + { + "datasource": "InfluxDB", + "description": "Uptime bandwidth", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "red", + "value": 0.5 + }, + { + "color": "dark-orange", + "value": 1 + }, + { + "color": "light-yellow", + "value": 2 + }, + { + "color": "super-light-green", + "value": 3 + }, + { + "color": "light-green", + "value": 4 + }, + { + "color": "semi-dark-green", + "value": 5 + }, + { + "color": "dark-green", + "value": 6 + } + ] }, - "overrides": [] + "unit": "Mbits" }, + "overrides": [] + }, "gridPos": { - "h": 11, - "w": 6, - "x": 18, - "y": 11 - }, - "id": 4, + "h": 5, + "w": 5, + "x": 6, + "y": 12 + }, + "id": 22, "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", "reduceOptions": { "calcs": [ - "mean" - ], - "fields": "/^ping\\.average_response_ms$/", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true + "lastNotNull" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", "targets": [ { - "groupBy": [], - "hide": false, - "limit": "", - "measurement": "ping", + "groupBy": [ + { + "params": [ + "5m" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "speedtest", "orderByTime": "ASC", "policy": "default", - "query": "SELECT \"average_response_ms\" FROM \"ping\" ", - "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "average_response_ms" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "url", - "operator": "=~", - "value": "/^$PingURL$/" + "Upload" + ], + "type": "field" + }, + { + "params": [], + "type": "sum" }, { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" + "params": [ + "/1048576" + ], + "type": "math" } ] - } ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, - "title": "Ping AVG response time", - "type": "gauge" - }, - { - "datasource": "InfluxDB", - "description": "DNS resolution average query time", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "max": 500, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "super-light-yellow", - "value": 200 - }, - { - "color": "semi-dark-orange", - "value": 300 - }, - { - "color": "dark-red", - "value": 400 - } - ] - }, - "unit": "ms" - }, - "overrides": [] + "title": "Bandwidth (Upload)", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "description": "ICMP echo requests average latency.", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 2, "gridPos": { - "h": 9, - "w": 11, + "h": 10, + "w": 18, "x": 0, - "y": 22 - }, - "id": 6, + "y": 17 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "showUnfilled": true - }, + "alertThreshold": true + }, + "percentage": false, "pluginVersion": "7.2.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "alias": "$tag_domain", + "alias": "$tag_url", "groupBy": [ { "params": [ - "domain" + "url" + ], + "type": "tag" + } + ], + "measurement": "ping", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "average_response_ms" ], - "type": "tag" + "type": "field" } - ], - "measurement": "dns_query", + ] + ], + "tags": [ + { + "key": "url", + "operator": "=~", + "value": "/^$PingURL$/" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [ + { + "$$hashKey": "object:150", + "colorMode": "background6", + "fill": true, + "fillColor": "rgba(234, 112, 112, 0.12)", + "line": false, + "lineColor": "rgba(237, 46, 24, 0.60)", + "op": "time" + } + ], + "timeShift": null, + "title": "ICMP average response", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:100", + "format": "short", + "label": "average (ms)", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:101", + "format": "short", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": "InfluxDB", + "description": "Average response time for External Ping in ms.", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "max": 1000, + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "light-green", + "value": 10 + }, + { + "color": "semi-dark-green", + "value": 20 + }, + { + "color": "dark-green", + "value": 30 + }, + { + "color": "super-light-orange", + "value": 40 + }, + { + "color": "light-orange", + "value": 50 + }, + { + "color": "semi-dark-orange", + "value": 70 + }, + { + "color": "dark-orange", + "value": 80 + }, + { + "color": "light-red", + "value": 90 + }, + { + "color": "dark-red", + "value": 100 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 6, + "x": 18, + "y": 17 + }, + "id": 4, + "options": { + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "/^ping\\.average_response_ms$/", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.2.1", + "targets": [ + { + "groupBy": [], + "hide": false, + "limit": "", + "measurement": "ping", "orderByTime": "ASC", "policy": "default", + "query": "SELECT \"average_response_ms\" FROM \"ping\" ", + "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "query_time_ms" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } + "average_response_ms" + ], + "type": "field" + } ] - } - ], + ], + "tags": [ + { + "key": "url", + "operator": "=~", + "value": "/^$PingURL$/" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "timeFrom": null, "timeShift": null, - "title": "DNS AVG Query time", - "type": "bargauge" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "description": "Percentage of package lost ", - "fieldConfig": { - "defaults": { - "custom": {}, - "unit": "percent" - }, - "overrides": [] + "title": "Ping AVG response time", + "type": "gauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {} }, - "fill": 3, - "fillGradient": 2, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, "gridPos": { "h": 9, - "w": 13, - "x": 11, - "y": 22 - }, + "w": 11, + "x": 0, + "y": 27 + }, "hiddenSeries": false, - "id": 8, + "id": 87, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": false, - "hideZero": false, "max": false, "min": false, "show": true, "total": false, "values": false - }, + }, "lines": true, "linewidth": 1, - "nullPointMode": "connected", + "nullPointMode": "null", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, "points": false, "renderer": "flot", - "seriesOverrides": [ - { - "$$hashKey": "object:405" - } - ], + "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "alias": "HTTP", "groupBy": [ { "params": [ - "5m" - ], - "type": "time" - }, - { - "params": [ - "linear" - ], - "type": "fill" - } - ], - "measurement": "ping", + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "http_response", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -1300,129 +1390,352 @@ data: [ { "params": [ - "percent_packet_loss" - ], - "type": "field" - }, + "response_time" + ], + "type": "field" + }, + { + "params": [], + "type": "stddev" + } + ] + ], + "tags": [] + }, + { + "alias": "ICMP", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "ping", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ { "params": [ - 95 - ], - "type": "percentile" - } - ] - ], + "standard_deviation_ms" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] + ], "tags": [] - } - ], - "thresholds": [ + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Jitter (ICMP/HTTP)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "$$hashKey": "object:387", - "colorMode": "critical", - "fill": false, - "line": true, - "op": "gt", - "value": 25, - "yaxis": "left" + "$$hashKey": "object:2579", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:2580", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": { + "align": "left", + "displayMode": "color-background", + "filterable": true + }, + "displayName": "Execution", + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(96, 96, 96)", + "value": null + }, + { + "color": "rgb(22, 51, 116)", + "value": 80 + } + ] + }, + "unit": "dateTimeAsUS" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.width", + "value": 176 + } + ] }, { - "$$hashKey": "object:393", - "colorMode": "warning", - "fill": false, - "line": true, - "op": "gt", - "value": 2, - "yaxis": "left" + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "displayName", + "value": "Execution" + } + ] }, { - "$$hashKey": "object:399", - "colorMode": "ok", - "fill": true, - "line": false, - "op": "lt", - "value": 2, - "yaxis": "left" + "matcher": { + "id": "byName", + "options": "last" + }, + "properties": [ + { + "id": "displayName", + "value": "Speedtest Server" + } + ] } + ] + }, + "gridPos": { + "h": 9, + "w": 13, + "x": 11, + "y": 27 + }, + "id": 97, + "options": { + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "7.2.1", + "targets": [ + { + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "speedtest", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "Sponsor" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] ], + "tags": [] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "", + "type": "table" + }, + { + "datasource": "InfluxDB", + "description": "DNS resolution average query time", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "max": 500, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "super-light-yellow", + "value": 200 + }, + { + "color": "semi-dark-orange", + "value": 300 + }, + { + "color": "dark-red", + "value": 400 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 11, + "x": 0, + "y": 36 + }, + "id": 6, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "7.2.1", + "targets": [ + { + "alias": "$tag_domain", + "groupBy": [ + { + "params": [ + "domain" + ], + "type": "tag" + } + ], + "measurement": "dns_query", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "query_time_ms" + ], + "type": "field" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "ICMP Packet loss (%)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "title": "DNS AVG Query time", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {} }, - "yaxes": [ - { - "$$hashKey": "object:416", - "format": "percent", - "label": "Packet lost %", - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:417", - "format": "percent", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "overrides": [] }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, - "w": 24, - "x": 0, - "y": 31 - }, + "w": 13, + "x": 11, + "y": 36 + }, "hiddenSeries": false, - "id": 87, + "id": 99, "legend": { + "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, "values": false - }, + }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, @@ -1434,22 +1747,22 @@ data: "steppedLine": false, "targets": [ { - "alias": "HTTP", + "alias": "ICMP Out redirects", "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "linear" - ], - "type": "fill" - } - ], - "measurement": "http_response", + ], + "type": "time" + }, + { + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "net", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -1458,66 +1771,164 @@ data: [ { "params": [ - "response_time" - ], - "type": "field" - }, - { - "params": [], - "type": "stddev" - } - ] - ], - "tags": [] + "icmp_outredirects" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "ICMP In Redirects", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" }, { - "alias": "ICMP", - "groupBy": [ - { - "params": [ - "$__interval" + "params": [ + "none" + ], + "type": "fill" + } + ], + "measurement": "net", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "icmp_inredirects" ], - "type": "time" - }, + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ { - "params": [ - "null" + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "ICMP Out Time exceeded", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "net", + "orderByTime": "ASC", + "policy": "default", + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "icmp_outtimeexcds" ], - "type": "fill" + "type": "field" + }, + { + "params": [], + "type": "mean" } - ], - "measurement": "ping", + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "ICMP In Time exceeded", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "measurement": "net", "orderByTime": "ASC", "policy": "default", - "refId": "B", + "refId": "D", "resultFormat": "time_series", "select": [ [ { "params": [ - "standard_deviation_ms" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [] - } - ], + "icmp_intimeexcds" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Jitter (ICMP/HTTP)", + "title": "ICMP Analysis", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" - }, + }, "type": "graph", "xaxis": { "buckets": null, @@ -1525,107 +1936,107 @@ data: "name": null, "show": true, "values": [] - }, + }, "yaxes": [ { - "$$hashKey": "object:2579", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:2580", + "$$hashKey": "object:765", "format": "short", "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true - } - ], + }, + { + "$$hashKey": "object:766", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], "yaxis": { "align": false, "alignLevel": null - } + } + }, + { + "collapsed": false, + "datasource": "InfluxDB", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 }, - { - "collapsed": false, - "datasource": "InfluxDB", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 40 - }, "id": 34, "panels": [], "title": "Connectivity metrics", "type": "row" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-green", - "value": null - }, - { - "color": "semi-dark-green", - "value": 150 - }, - { - "color": "dark-green", - "value": 200 - }, - { - "color": "#EAB839", - "value": 250 - }, - { - "color": "semi-dark-orange", - "value": 300 - }, - { - "color": "dark-red", - "value": 350 - } - ] - }, - "unit": "ms" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "semi-dark-green", + "value": 150 + }, + { + "color": "dark-green", + "value": 200 + }, + { + "color": "#EAB839", + "value": 250 + }, + { + "color": "semi-dark-orange", + "value": 300 + }, + { + "color": "dark-red", + "value": 350 + } + ] }, - "overrides": [] + "unit": "ms" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 0, - "y": 41 - }, + "y": 46 + }, "id": 42, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, + ], + "fields": "", + "values": false + }, "showThresholdLabels": false, "showThresholdMarkers": true - }, + }, "pluginVersion": "7.2.1", "repeat": "PingURL", "scopedVars": { @@ -1633,24 +2044,24 @@ data: "selected": false, "text": "amazon.com", "value": "amazon.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "hide": false, "orderByTime": "ASC", "policy": "default", @@ -1663,110 +2074,110 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "gauge" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-green", - "value": null - }, - { - "color": "semi-dark-green", - "value": 150 - }, - { - "color": "dark-green", - "value": 200 - }, - { - "color": "#EAB839", - "value": 250 - }, - { - "color": "semi-dark-orange", - "value": 300 - }, - { - "color": "dark-red", - "value": 350 - } - ] - }, - "unit": "ms" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "semi-dark-green", + "value": 150 + }, + { + "color": "dark-green", + "value": 200 + }, + { + "color": "#EAB839", + "value": 250 + }, + { + "color": "semi-dark-orange", + "value": 300 + }, + { + "color": "dark-red", + "value": 350 + } + ] }, - "overrides": [] + "unit": "ms" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 6, - "y": 41 - }, + "y": 46 + }, "id": 88, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, + ], + "fields": "", + "values": false + }, "showThresholdLabels": false, "showThresholdMarkers": true - }, + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 42, "scopedVars": { "PingURL": { "selected": false, "text": "google.com", "value": "google.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "hide": false, "orderByTime": "ASC", "policy": "default", @@ -1779,110 +2190,110 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "gauge" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-green", - "value": null - }, - { - "color": "semi-dark-green", - "value": 150 - }, - { - "color": "dark-green", - "value": 200 - }, - { - "color": "#EAB839", - "value": 250 - }, - { - "color": "semi-dark-orange", - "value": 300 - }, - { - "color": "dark-red", - "value": 350 - } - ] - }, - "unit": "ms" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "semi-dark-green", + "value": 150 + }, + { + "color": "dark-green", + "value": 200 + }, + { + "color": "#EAB839", + "value": 250 + }, + { + "color": "semi-dark-orange", + "value": 300 + }, + { + "color": "dark-red", + "value": 350 + } + ] }, - "overrides": [] + "unit": "ms" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 12, - "y": 41 - }, + "y": 46 + }, "id": 89, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, + ], + "fields": "", + "values": false + }, "showThresholdLabels": false, "showThresholdMarkers": true - }, + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 42, "scopedVars": { "PingURL": { "selected": false, "text": "twitter.com", "value": "twitter.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "hide": false, "orderByTime": "ASC", "policy": "default", @@ -1895,110 +2306,110 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "gauge" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 2, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-green", - "value": null - }, - { - "color": "semi-dark-green", - "value": 150 - }, - { - "color": "dark-green", - "value": 200 - }, - { - "color": "#EAB839", - "value": 250 - }, - { - "color": "semi-dark-orange", - "value": 300 - }, - { - "color": "dark-red", - "value": 350 - } - ] - }, - "unit": "ms" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "super-light-green", + "value": null + }, + { + "color": "semi-dark-green", + "value": 150 + }, + { + "color": "dark-green", + "value": 200 + }, + { + "color": "#EAB839", + "value": 250 + }, + { + "color": "semi-dark-orange", + "value": 300 + }, + { + "color": "dark-red", + "value": 350 + } + ] }, - "overrides": [] + "unit": "ms" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 18, - "y": 41 - }, + "y": 46 + }, "id": 90, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, + ], + "fields": "", + "values": false + }, "showThresholdLabels": false, "showThresholdMarkers": true - }, + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 42, "scopedVars": { "PingURL": { "selected": false, "text": "yahoo.com", "value": "yahoo.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "hide": false, "orderByTime": "ASC", "policy": "default", @@ -2011,44 +2422,44 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "gauge" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "description": "HTTP GET request response time (ms)", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "description": "HTTP GET request response time (ms)", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 10, "w": 24, "x": 0, - "y": 47 - }, + "y": 52 + }, "hiddenSeries": false, "id": 12, "legend": { @@ -2062,13 +2473,13 @@ data: "show": true, "total": false, "values": true - }, + }, "lines": true, "linewidth": 1, "nullPointMode": "null", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, @@ -2085,40 +2496,40 @@ data: { "params": [ "server" + ], + "type": "tag" + } + ], + "measurement": "http_response", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "response_time" ], - "type": "tag" - } - ], - "measurement": "http_response", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "response_time" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "method", - "operator": "=", - "value": "GET" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" + "type": "field" } ] - } - ], + ], + "tags": [ + { + "key": "method", + "operator": "=", + "value": "GET" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "thresholds": [ { "$$hashKey": "object:1216", @@ -2128,26 +2539,26 @@ data: "op": "gt", "value": 10, "yaxis": "left" - }, - { - "$$hashKey": "object:1222", - "colorMode": "warning", - "fill": false, - "line": false, - "op": "gt", - "value": 5, - "yaxis": "left" - }, - { - "$$hashKey": "object:1228", - "colorMode": "ok", - "fill": true, - "line": true, - "op": "lt", - "value": 2, - "yaxis": "left" - } - ], + }, + { + "$$hashKey": "object:1222", + "colorMode": "warning", + "fill": false, + "line": false, + "op": "gt", + "value": 5, + "yaxis": "left" + }, + { + "$$hashKey": "object:1228", + "colorMode": "ok", + "fill": true, + "line": true, + "op": "lt", + "value": 2, + "yaxis": "left" + } + ], "timeFrom": null, "timeRegions": [], "timeShift": null, @@ -2156,7 +2567,7 @@ data: "shared": true, "sort": 0, "value_type": "individual" - }, + }, "transparent": true, "type": "graph", "xaxis": { @@ -2165,7 +2576,7 @@ data: "name": null, "show": true, "values": [] - }, + }, "yaxes": [ { "$$hashKey": "object:1019", @@ -2175,42 +2586,42 @@ data: "max": null, "min": null, "show": true - }, - { - "$$hashKey": "object:1020", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], + }, + { + "$$hashKey": "object:1020", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], "yaxis": { "align": false, "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {} }, + "overrides": [] + }, "fill": 1, "fillGradient": 1, "gridPos": { "h": 18, "w": 12, "x": 0, - "y": 57 - }, + "y": 62 + }, "hiddenSeries": false, "id": 85, "legend": { @@ -2223,13 +2634,13 @@ data: "show": true, "total": true, "values": true - }, + }, "lines": true, "linewidth": 1, "nullPointMode": "connected", "options": { "alertThreshold": true - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, @@ -2246,16 +2657,16 @@ data: { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "measurement": "netstat", "orderByTime": "ASC", "policy": "default", @@ -2268,30 +2679,30 @@ data: { "params": [ "tcp_close" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - }, - { - "params": [ - "tcp_close" - ], + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "tcp_close" + ], "type": "alias" - } - ] - ], + } + ] + ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$NetHost$/" - } - ] - } - ], + } + ] + } + ], "thresholds": [], "timeFrom": null, "timeRegions": [], @@ -2301,7 +2712,7 @@ data: "shared": true, "sort": 0, "value_type": "individual" - }, + }, "type": "graph", "xaxis": { "buckets": null, @@ -2309,7 +2720,7 @@ data: "name": null, "show": true, "values": [] - }, + }, "yaxes": [ { "$$hashKey": "object:2208", @@ -2319,56 +2730,56 @@ data: "max": null, "min": null, "show": true - }, - { - "$$hashKey": "object:2209", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], + }, + { + "$$hashKey": "object:2209", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], "yaxis": { "align": false, "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, + "overrides": [] + }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 18, "w": 12, "x": 12, - "y": 57 - }, + "y": 62 + }, "hiddenSeries": false, "id": 16, "legend": { @@ -2383,13 +2794,13 @@ data: "show": true, "total": false, "values": true - }, + }, "lines": false, "linewidth": 1, "nullPointMode": "null as zero", "options": { "alertThreshold": false - }, + }, "percentage": false, "pluginVersion": "7.2.1", "pointradius": 2, @@ -2406,53 +2817,53 @@ data: { "params": [ "1m" + ], + "type": "time" + } + ], + "measurement": "net", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "bytes_sent" ], - "type": "time" - } - ], - "measurement": "net", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "bytes_sent" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], - "tags": [ - { - "key": "interface", - "operator": "=~", - "value": "/^$NetInterface$/" + "type": "field" }, { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" + "params": [], + "type": "sum" } ] - }, + ], + "tags": [ { - "alias": "Rx (Bytes)", - "groupBy": [ - { - "params": [ - "1m" - ], - "type": "time" - } - ], + "key": "interface", + "operator": "=~", + "value": "/^$NetInterface$/" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "Rx (Bytes)", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -2463,39 +2874,39 @@ data: { "params": [ "bytes_recv" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - }, - { - "alias": "Drop In", - "groupBy": [ - { - "params": [ - "1m" - ], - "type": "time" - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "Drop In", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -2506,39 +2917,39 @@ data: { "params": [ "drop_in" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - }, - { - "alias": "Drop Out", - "groupBy": [ - { - "params": [ - "1m" - ], - "type": "time" - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "Drop Out", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -2549,39 +2960,39 @@ data: { "params": [ "drop_out" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], - "tags": [ - { - "key": "interface", - "operator": "=~", - "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - }, - { - "alias": "Error In", - "groupBy": [ - { - "params": [ - "1m" ], - "type": "time" + "type": "field" + }, + { + "params": [], + "type": "sum" } - ], + ] + ], + "tags": [ + { + "key": "interface", + "operator": "=~", + "value": "/^$NetInterface$/" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "Error In", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -2592,39 +3003,39 @@ data: { "params": [ "err_in" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - }, - { - "alias": "Error Out", - "groupBy": [ - { - "params": [ - "1m" - ], - "type": "time" - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + }, + { + "alias": "Error Out", + "groupBy": [ + { + "params": [ + "1m" + ], + "type": "time" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -2635,30 +3046,30 @@ data: { "params": [ "err_out" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "thresholds": [ { "$$hashKey": "object:1747", @@ -2668,8 +3079,8 @@ data: "op": "lt", "value": 0, "yaxis": "left" - } - ], + } + ], "timeFrom": null, "timeRegions": [], "timeShift": null, @@ -2678,7 +3089,7 @@ data: "shared": true, "sort": 0, "value_type": "cumulative" - }, + }, "type": "graph", "xaxis": { "buckets": null, @@ -2687,8 +3098,8 @@ data: "show": true, "values": [ "total" - ] - }, + ] + }, "yaxes": [ { "$$hashKey": "object:1468", @@ -2698,27 +3109,27 @@ data: "max": null, "min": null, "show": true - }, - { - "$$hashKey": "object:1469", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], + }, + { + "$$hashKey": "object:1469", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], "yaxis": { "align": true, "alignLevel": null - } + } + }, + { + "cards": { + "cardPadding": 1, + "cardRound": null }, - { - "cards": { - "cardPadding": 1, - "cardRound": null - }, "color": { "cardColor": "#b4ff00", "colorScale": "sqrt", @@ -2727,29 +3138,29 @@ data: "max": null, "min": null, "mode": "spectrum" - }, + }, "dataFormat": "timeseries", "datasource": "InfluxDB", "description": "Standard Deviation (ms) heatmap", "fieldConfig": { "defaults": { "custom": {} - }, - "overrides": [] }, + "overrides": [] + }, "gridPos": { "h": 12, "w": 12, "x": 0, - "y": 75 - }, + "y": 80 + }, "heatmap": {}, "hideZeroBuckets": false, "highlightCards": true, "id": 10, "legend": { "show": true - }, + }, "pluginVersion": "7.2.0", "reverseYBuckets": false, "targets": [ @@ -2758,57 +3169,57 @@ data: { "params": [ "$interval" + ], + "type": "time" + } + ], + "measurement": "ping", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "standard_deviation_ms" ], - "type": "time" - } - ], - "measurement": "ping", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "table", - "select": [ - [ - { - "params": [ - "standard_deviation_ms" - ], - "type": "field" - }, - { - "params": [], - "type": "stddev" - } - ] - ], - "tags": [ - { - "key": "url", - "operator": "=~", - "value": "/^$PingURL$/" + "type": "field" }, { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" + "params": [], + "type": "stddev" } ] - } - ], + ], + "tags": [ + { + "key": "url", + "operator": "=~", + "value": "/^$PingURL$/" + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "timeFrom": null, "timeShift": null, "title": "Ping Standard Deviation (ms)", "tooltip": { "show": true, "showHistogram": true - }, + }, "tooltipDecimals": 3, "transparent": true, "type": "heatmap", "xAxis": { "show": true - }, + }, "xBucketNumber": null, "xBucketSize": "10s", "yAxis": { @@ -2819,181 +3230,181 @@ data: "min": null, "show": true, "splitFactor": null - }, + }, "yBucketBound": "auto", "yBucketNumber": null, "yBucketSize": null - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": { - "align": "center", - "displayMode": "color-text", - "filterable": true - }, - "mappings": [], - "max": 500, - "min": 100, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "super-light-blue", - "value": null - } - ] - }, - "unit": "none" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": { + "align": "center", + "displayMode": "color-text", + "filterable": true }, - "overrides": [ + "mappings": [], + "max": 500, + "min": 100, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ { - "matcher": { - "id": "byName", - "options": "Time" - }, - "properties": [ - { - "id": "custom.width", - "value": 100 - }, - { - "id": "custom.displayMode", - "value": "color-text" - }, - { - "id": "unit", - "value": "dateTimeAsLocal" - } - ] + "color": "super-light-blue", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" }, + "properties": [ { - "matcher": { - "id": "byName", - "options": "server" + "id": "custom.width", + "value": 100 }, - "properties": [ - { - "id": "custom.width", - "value": 300 - }, - { - "id": "mappings", - "value": [] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "last" + { + "id": "custom.displayMode", + "value": "color-text" }, - "properties": [ - { - "id": "custom.width", - "value": 145 - }, - { - "id": "displayName", - "value": "Response code" - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "light-red", - "value": null - }, - { - "color": "light-green", - "value": 100 - }, - { - "color": "light-green", - "value": 200 - }, - { - "color": "semi-dark-green", - "value": 300 - }, - { - "color": "super-light-yellow", - "value": 400 - }, - { - "color": "super-light-red", - "value": 500 - } - ] - } - } - ] + { + "id": "unit", + "value": "dateTimeAsLocal" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "server" }, - { - "matcher": { - "id": "byName", - "options": "Response code" - }, - "properties": [ - { - "id": "custom.width", - "value": 145 - } - ] + "properties": [ + { + "id": "custom.width", + "value": 300 + }, + { + "id": "mappings", + "value": [] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "last" + }, + "properties": [ + { + "id": "custom.width", + "value": 145 + }, + { + "id": "displayName", + "value": "Response code" }, { - "matcher": { - "id": "byName", - "options": "method" - }, - "properties": [ - { - "id": "custom.width", - "value": 100 + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "light-red", + "value": null + }, + { + "color": "light-green", + "value": 100 + }, + { + "color": "light-green", + "value": 200 + }, + { + "color": "semi-dark-green", + "value": 300 + }, + { + "color": "super-light-yellow", + "value": 400 + }, + { + "color": "super-light-red", + "value": 500 + } + ] } - ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Response code" + }, + "properties": [ + { + "id": "custom.width", + "value": 145 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "method" + }, + "properties": [ + { + "id": "custom.width", + "value": 100 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Endpoint" }, - { - "matcher": { - "id": "byName", - "options": "Endpoint" - }, - "properties": [ - { - "id": "custom.width", - "value": 514 - } - ] + "properties": [ + { + "id": "custom.width", + "value": 514 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "HTTP Method" }, - { - "matcher": { - "id": "byName", - "options": "HTTP Method" - }, - "properties": [ - { - "id": "custom.width", - "value": 333 - } - ] - } + "properties": [ + { + "id": "custom.width", + "value": 333 + } ] - }, + } + ] + }, "gridPos": { "h": 6, "w": 12, "x": 12, - "y": 75 - }, + "y": 80 + }, "id": 14, "options": { "showHeader": true, "sortBy": [] - }, + }, "pluginVersion": "7.2.1", "repeat": null, "repeatDirection": "h", @@ -3004,16 +3415,16 @@ data: { "params": [ "server" - ], - "type": "tag" - }, - { - "params": [ - "method" - ], - "type": "tag" - } - ], + ], + "type": "tag" + }, + { + "params": [ + "method" + ], + "type": "tag" + } + ], "measurement": "http_response", "orderByTime": "ASC", "policy": "default", @@ -3024,18 +3435,18 @@ data: { "params": [ "http_response_code" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "HTTP response codes", @@ -3045,74 +3456,74 @@ data: "options": { "excludeByName": { "Time": true - }, - "indexByName": { - "Time": 0, - "last": 3, - "method": 2, - "server": 1 - }, - "renameByName": { - "last": "Response code", - "method": "HTTP Method", - "server": "Endpoint" - } - } + }, + "indexByName": { + "Time": 0, + "last": 3, + "method": 2, + "server": 1 + }, + "renameByName": { + "last": "Response code", + "method": "HTTP Method", + "server": "Endpoint" } - ], + } + } + ], "transparent": true, "type": "table" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, + "overrides": [] + }, "gridPos": { "h": 12, "w": 12, "x": 12, - "y": 81 - }, + "y": 86 + }, "id": 18, "options": { "geoIPProviders": { "active": "ipsb", "custom-api": { "kind": "custom-api" - }, - "custom-function": { - "kind": "custom-function" - }, - "ipinfo": { - "kind": "ipinfo" - }, - "ipsb": { - "kind": "ipsb" - } }, + "custom-function": { + "kind": "custom-function" + }, + "ipinfo": { + "kind": "ipinfo" + }, + "ipsb": { + "kind": "ipsb" + } + }, "hostnameLabelWidth": 8, "longitude360": false, "mapClusterRadius": 15, "simplifyHostname": false - }, + }, "pluginVersion": "7.2.0", "targets": [ { @@ -3120,16 +3531,16 @@ data: { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "orderByTime": "ASC", "policy": "default", "query": "select mean(avg) as rtt, mean(loss) as loss from mtr WHERE now() - 5m < time group by hop, ip, host, dest\n", @@ -3141,51 +3552,51 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "TraceRoute", "type": "gowee-traceroutemap-panel" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 3, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(238, 238, 238)", - "value": null - } - ] - }, - "unit": "decmbytes" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 3, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(238, 238, 238)", + "value": null + } + ] }, - "overrides": [] + "unit": "decmbytes" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 0, - "y": 87 - }, + "y": 92 + }, "id": 65, "maxDataPoints": 100, "options": { @@ -3196,12 +3607,12 @@ data: "reduceOptions": { "calcs": [ "last" - ], - "fields": "", - "values": false - }, - "textMode": "value" + ], + "fields": "", + "values": false }, + "textMode": "value" + }, "pluginVersion": "7.2.1", "targets": [ { @@ -3209,16 +3620,16 @@ data: { "params": [ "5m" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -3229,75 +3640,75 @@ data: { "params": [ "bytes_recv" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - }, - { - "params": [ - "/1048576" - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + "/1048576" + ], "type": "math" - }, - { - "params": [ - "MiB Sent" - ], + }, + { + "params": [ + "MiB Sent" + ], "type": "alias" - } - ] - ], + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "timeFrom": null, "timeShift": null, "title": "MiB Received ($NetInterface)", "type": "stat" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 3, - "mappings": [], - "min": 0, - "noValue": "N/A", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "light-blue", - "value": null - } - ] - }, - "unit": "decmbytes" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 3, + "mappings": [], + "min": 0, + "noValue": "N/A", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "light-blue", + "value": null + } + ] }, - "overrides": [] + "unit": "decmbytes" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 6, - "y": 87 - }, + "y": 92 + }, "id": 56, "maxDataPoints": 100, "options": { @@ -3307,13 +3718,13 @@ data: "orientation": "horizontal", "reduceOptions": { "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "textMode": "value" + "last" + ], + "fields": "", + "values": false }, + "textMode": "value" + }, "pluginVersion": "7.2.1", "targets": [ { @@ -3321,16 +3732,16 @@ data: { "params": [ "5m" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "measurement": "net", "orderByTime": "ASC", "policy": "default", @@ -3341,104 +3752,104 @@ data: { "params": [ "bytes_sent" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - }, - { - "params": [ - "/1048576" - ], + ], + "type": "field" + }, + { + "params": [], + "type": "sum" + }, + { + "params": [ + "/1048576" + ], "type": "math" - }, - { - "params": [ - "MiB Sent" - ], + }, + { + "params": [ + "MiB Sent" + ], "type": "alias" - } - ] - ], + } + ] + ], "tags": [ { "key": "interface", "operator": "=~", "value": "/^$NetInterface$/" - }, - { - "condition": "AND", - "key": "host", - "operator": "=~", - "value": "/^$NetHost$/" - } - ] - } - ], + }, + { + "condition": "AND", + "key": "host", + "operator": "=~", + "value": "/^$NetHost$/" + } + ] + } + ], "timeFrom": null, "timeShift": null, "title": "MiB Sent ($NetInterface)", "type": "stat" + }, + { + "collapsed": false, + "datasource": "InfluxDB", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 98 }, - { - "collapsed": false, - "datasource": "InfluxDB", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 93 - }, "id": 32, "panels": [], "title": "Availability metrics", "type": "row" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 4, - "mappings": [ - { - "from": "", - "id": 0, - "text": "N/A", - "to": "", - "type": 1, - "value": "null" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [ + { + "from": "", + "id": 0, + "text": "N/A", + "to": "", + "type": 1, + "value": "null" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "semi-dark-orange", + "value": 95 + }, + { + "color": "semi-dark-green", + "value": 100 } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "semi-dark-orange", - "value": 95 - }, - { - "color": "semi-dark-green", - "value": 100 - } - ] - }, - "unit": "percent" + ] }, - "overrides": [] + "unit": "percent" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 0, - "y": 94 - }, + "y": 99 + }, "id": 36, "options": { "colorMode": "value", @@ -3448,12 +3859,12 @@ data: "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", "repeat": "PingURL", "scopedVars": { @@ -3461,24 +3872,24 @@ data: "selected": false, "text": "amazon.com", "value": "amazon.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "orderByTime": "ASC", "policy": "default", "query": "SELECT 100 - mean(\"percent_packet_loss\") FROM \"ping\" WHERE \"url\" =~ /^$PingURL$/ AND $timeFilter GROUP BY time(1m) fill(null)", @@ -3490,66 +3901,66 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "stat" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 4, - "mappings": [ - { - "from": "", - "id": 0, - "text": "N/A", - "to": "", - "type": 1, - "value": "null" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [ + { + "from": "", + "id": 0, + "text": "N/A", + "to": "", + "type": 1, + "value": "null" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "semi-dark-orange", + "value": 95 + }, + { + "color": "semi-dark-green", + "value": 100 } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "semi-dark-orange", - "value": 95 - }, - { - "color": "semi-dark-green", - "value": 100 - } - ] - }, - "unit": "percent" + ] }, - "overrides": [] + "unit": "percent" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 6, - "y": 94 - }, + "y": 99 + }, "id": 91, "options": { "colorMode": "value", @@ -3559,38 +3970,38 @@ data: "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 36, "scopedVars": { "PingURL": { "selected": false, "text": "google.com", "value": "google.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "orderByTime": "ASC", "policy": "default", "query": "SELECT 100 - mean(\"percent_packet_loss\") FROM \"ping\" WHERE \"url\" =~ /^$PingURL$/ AND $timeFilter GROUP BY time(1m) fill(null)", @@ -3602,66 +4013,66 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "stat" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 4, - "mappings": [ - { - "from": "", - "id": 0, - "text": "N/A", - "to": "", - "type": 1, - "value": "null" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [ + { + "from": "", + "id": 0, + "text": "N/A", + "to": "", + "type": 1, + "value": "null" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "semi-dark-orange", + "value": 95 + }, + { + "color": "semi-dark-green", + "value": 100 } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "semi-dark-orange", - "value": 95 - }, - { - "color": "semi-dark-green", - "value": 100 - } - ] - }, - "unit": "percent" + ] }, - "overrides": [] + "unit": "percent" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 12, - "y": 94 - }, + "y": 99 + }, "id": 92, "options": { "colorMode": "value", @@ -3671,38 +4082,38 @@ data: "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 36, "scopedVars": { "PingURL": { "selected": false, "text": "twitter.com", "value": "twitter.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "orderByTime": "ASC", "policy": "default", "query": "SELECT 100 - mean(\"percent_packet_loss\") FROM \"ping\" WHERE \"url\" =~ /^$PingURL$/ AND $timeFilter GROUP BY time(1m) fill(null)", @@ -3714,66 +4125,66 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "stat" - }, - { - "datasource": "InfluxDB", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 4, - "mappings": [ - { - "from": "", - "id": 0, - "text": "N/A", - "to": "", - "type": 1, - "value": "null" + }, + { + "datasource": "InfluxDB", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [ + { + "from": "", + "id": 0, + "text": "N/A", + "to": "", + "type": 1, + "value": "null" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + }, + { + "color": "semi-dark-orange", + "value": 95 + }, + { + "color": "semi-dark-green", + "value": 100 } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-red", - "value": null - }, - { - "color": "semi-dark-orange", - "value": 95 - }, - { - "color": "semi-dark-green", - "value": 100 - } - ] - }, - "unit": "percent" + ] }, - "overrides": [] + "unit": "percent" }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 6, "x": 18, - "y": 94 - }, + "y": 99 + }, "id": 93, "options": { "colorMode": "value", @@ -3783,38 +4194,38 @@ data: "reduceOptions": { "calcs": [ "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" + ], + "fields": "", + "values": false }, + "textMode": "auto" + }, "pluginVersion": "7.2.1", - "repeatIteration": 1603341911009, + "repeatIteration": 1603557787209, "repeatPanelId": 36, "scopedVars": { "PingURL": { "selected": false, "text": "yahoo.com", "value": "yahoo.com" - } - }, + } + }, "targets": [ { "groupBy": [ { "params": [ "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], "orderByTime": "ASC", "policy": "default", "query": "SELECT 100 - mean(\"percent_packet_loss\") FROM \"ping\" WHERE \"url\" =~ /^$PingURL$/ AND $timeFilter GROUP BY time(1m) fill(null)", @@ -3826,24 +4237,24 @@ data: { "params": [ "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] - } + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] ], + "tags": [] + } + ], "timeFrom": null, "timeShift": null, "title": "$PingURL Ping", "type": "stat" - } - ], + } + ], "refresh": "5s", "schemaVersion": 26, "style": "dark", @@ -3854,7 +4265,7 @@ data: "influxdb", "isp", "raspberry" - ], + ], "templating": { "list": [ { @@ -3863,84 +4274,84 @@ data: "selected": false, "text": "All", "value": "$__all" - }, - "datasource": "InfluxDB", - "definition": "", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "PingURL", - "options": [], - "query": "SHOW TAG VALUES FROM \"ping\" WITH KEY = \"url\"", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false }, - { - "allValue": null, - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": "InfluxDB", - "definition": "", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "NetInterface", - "options": [], - "query": "SHOW TAG VALUES FROM \"net\" WITH KEY = \"interface\" WHERE \"host\" =~ /$NetHost/", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "datasource": "InfluxDB", + "definition": "", + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "PingURL", + "options": [], + "query": "SHOW TAG VALUES FROM \"ping\" WITH KEY = \"url\"", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "All", + "value": "$__all" }, - { - "allValue": null, - "current": { - "selected": true, - "text": "node1", - "value": "node1" - }, - "datasource": "InfluxDB", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "NetHost", - "options": [], - "query": "SHOW TAG VALUES FROM \"net\" WITH KEY = \"host\"", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] + "datasource": "InfluxDB", + "definition": "", + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "NetInterface", + "options": [], + "query": "SHOW TAG VALUES FROM \"net\" WITH KEY = \"interface\" WHERE \"host\" =~ /$NetHost/", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false }, + { + "allValue": null, + "current": { + "selected": false, + "text": "node1", + "value": "node1" + }, + "datasource": "InfluxDB", + "definition": "", + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "NetHost", + "options": [], + "query": "SHOW TAG VALUES FROM \"net\" WITH KEY = \"host\"", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, "time": { "from": "now-1h", "to": "now" - }, + }, "timepicker": {}, "timezone": "browser", "title": "Network",