From 37988e0f4cd681c7cd6c964669eb37c2a4ef5ab9 Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 11 Jan 2021 17:15:09 -0800 Subject: [PATCH 1/2] Add Grafana dashboard for Starlink Stats. --- GrafanaDashboard - Starlink Statistics.json | 818 ++++++++++++++++++++ 1 file changed, 818 insertions(+) create mode 100644 GrafanaDashboard - Starlink Statistics.json diff --git a/GrafanaDashboard - Starlink Statistics.json b/GrafanaDashboard - Starlink Statistics.json new file mode 100644 index 0000000..94e6da3 --- /dev/null +++ b/GrafanaDashboard - Starlink Statistics.json @@ -0,0 +1,818 @@ +{ + "__inputs": [ + { + "name": "VAR_DS_INFLUXDB", + "type": "constant", + "label": "InfluxDB DataSource", + "value": "InfluxDB-starlinkstats", + "description": "" + }, + { + "name": "VAR_TBL_STATS", + "type": "constant", + "label": "Table name for Statistics", + "value": "spacex.starlink.user_terminal.status", + "description": "" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.3.6" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1610413551748, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$DS_INFLUXDB", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "hideZero": false, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.6", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "groupBy": [], + "measurement": "/^$TBL_STATS$/", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "downlink_throughput_bps" + ], + "type": "field" + }, + { + "params": [ + "bps Down" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "uplink_throughput_bps" + ], + "type": "field" + }, + { + "params": [ + "bps Up" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Actual Throughput", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1099", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1100", + "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": "$DS_INFLUXDB", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.6", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "groupBy": [], + "measurement": "/^$TBL_STATS$/", + "orderByTime": "ASC", + "policy": "default", + "queryType": "randomWalk", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "pop_ping_latency_ms" + ], + "type": "field" + }, + { + "params": [ + "Ping Latency" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "pop_ping_drop_rate" + ], + "type": "field" + }, + { + "params": [ + "Drop Rate" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "fraction_obstructed" + ], + "type": "field" + }, + { + "params": [ + "*100" + ], + "type": "math" + }, + { + "params": [ + "Percent Obstructed" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "snr" + ], + "type": "field" + }, + { + "params": [ + "*10" + ], + "type": "math" + }, + { + "params": [ + "SNR" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Ping Latency, Drop Rate, Percent Obstructed & SNR", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "cacheTimeout": null, + "datasource": "$DS_INFLUXDB", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": null, + "filterable": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Obstructed" + }, + "properties": [ + { + "id": "custom.width", + "value": 105 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Wrong Location" + }, + "properties": [ + { + "id": "custom.width", + "value": 114 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Thermal Throttle" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Thermal Shutdown" + }, + "properties": [ + { + "id": "custom.width", + "value": 136 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Motors Stuck" + }, + "properties": [ + { + "id": "custom.width", + "value": 116 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "custom.width", + "value": 143 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "State" + }, + "properties": [ + { + "id": "custom.width", + "value": 118 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Bad Location" + }, + "properties": [ + { + "id": "custom.width", + "value": 122 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Temp Throttle" + }, + "properties": [ + { + "id": "custom.width", + "value": 118 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Temp Shutdown" + }, + "properties": [ + { + "id": "custom.width", + "value": 134 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Software Version" + }, + "properties": [ + { + "id": "custom.width", + "value": 369 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 6, + "interval": null, + "links": [], + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Time (last)" + } + ] + }, + "pluginVersion": "7.3.6", + "targets": [ + { + "groupBy": [], + "hide": false, + "measurement": "/^$TBL_STATS$/", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT \"currently_obstructed\" AS \"Obstructed\", \"alert_unexpected_location\" AS \"Wrong Location\", \"alert_thermal_throttle\" AS \"Thermal Throttle\", \"alert_thermal_shutdown\" AS \"Thermal Shutdown\", \"alert_motors_stuck\" AS \"Motors Stuck\", \"state\" AS \"State\" FROM \"spacex.starlink.user_terminal.status\" WHERE $timeFilter", + "queryType": "randomWalk", + "rawQuery": false, + "refId": "A", + "resultFormat": "table", + "select": [ + [ + { + "params": [ + "state" + ], + "type": "field" + }, + { + "params": [ + "State" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "currently_obstructed" + ], + "type": "field" + }, + { + "params": [ + "Obstructed" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "alert_unexpected_location" + ], + "type": "field" + }, + { + "params": [ + "Bad Location" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "alert_thermal_throttle" + ], + "type": "field" + }, + { + "params": [ + "Temp Throttled" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "alert_thermal_shutdown" + ], + "type": "field" + }, + { + "params": [ + "Temp Shutdown" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "alert_motors_stuck" + ], + "type": "field" + }, + { + "params": [ + "Motors Stuck" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "software_version" + ], + "type": "field" + }, + { + "params": [ + "Software Version" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "hardware_version" + ], + "type": "field" + }, + { + "params": [ + "Hardware Version" + ], + "type": "alias" + } + ] + ], + "tags": [] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Alerts & Versions", + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "Bad Location": { + "aggregations": [], + "operation": "groupby" + }, + "Hardware Version": { + "aggregations": [], + "operation": "groupby" + }, + "Motors Stuck": { + "aggregations": [], + "operation": "groupby" + }, + "Obstructed": { + "aggregations": [], + "operation": "groupby" + }, + "Software Version": { + "aggregations": [], + "operation": "groupby" + }, + "State": { + "aggregations": [], + "operation": "groupby" + }, + "Temp Shutdown": { + "aggregations": [], + "operation": "groupby" + }, + "Temp Throttle": { + "aggregations": [], + "operation": "groupby" + }, + "Temp Throttled": { + "aggregations": [], + "operation": "groupby" + }, + "Thermal Shutdown": { + "aggregations": [], + "operation": "groupby" + }, + "Thermal Throttle": { + "aggregations": [], + "operation": "groupby" + }, + "Time": { + "aggregations": [ + "last" + ], + "operation": "aggregate" + }, + "Wrong Location": { + "aggregations": [], + "operation": "groupby" + } + } + } + } + ], + "type": "table" + } + ], + "refresh": false, + "schemaVersion": 26, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "value": "${VAR_DS_INFLUXDB}", + "text": "${VAR_DS_INFLUXDB}", + "selected": false + }, + "error": null, + "hide": 2, + "label": "InfluxDB DataSource", + "name": "DS_INFLUXDB", + "options": [ + { + "value": "${VAR_DS_INFLUXDB}", + "text": "${VAR_DS_INFLUXDB}", + "selected": false + } + ], + "query": "${VAR_DS_INFLUXDB}", + "skipUrlSync": false, + "type": "constant" + }, + { + "current": { + "value": "${VAR_TBL_STATS}", + "text": "${VAR_TBL_STATS}", + "selected": false + }, + "error": null, + "hide": 2, + "label": "Table name for Statistics", + "name": "TBL_STATS", + "options": [ + { + "value": "${VAR_TBL_STATS}", + "text": "${VAR_TBL_STATS}", + "selected": false + } + ], + "query": "${VAR_TBL_STATS}", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "Starlink Statistics", + "uid": "ymkHwLaMz", + "version": 36 +} \ No newline at end of file From 0ed3e074db874a4220d8967aa54713df7d9fd19f Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 11 Jan 2021 17:24:10 -0800 Subject: [PATCH 2/2] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6832cb4..427bb43 100644 --- a/README.md +++ b/README.md @@ -83,4 +83,6 @@ docker run -d --name='starlink-grpc-tools' -e INFLUXDB_HOST={InfluxDB Hostname} neurocis/starlink-grpc-tools dishStatusInflux.py -v ``` -`dishStatusInflux.py -v` is optional and will run same but not -verbose, or you can replace it with one of the other scripts if you wish to run that instead. I (neurocis) will push a Grafana dashboard in the near future, or please create and share your own. +`dishStatusInflux.py -v` is optional and will run same but not -verbose, or you can replace it with one of the other scripts if you wish to run that instead. There is also an `GrafanaDashboard - Starlink Statistics.json` which can be imported to get some charts like: + +![image](https://user-images.githubusercontent.com/945191/104257179-ae570000-5431-11eb-986e-3fedd04bfcfb.png)