From cf66e8c488ce2f56b15ff6f096c1e213d6cd3cf6 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 4 Jan 2024 07:44:44 +0000 Subject: [PATCH] fix: update grafana dashboard --- grafana-dashboard.json | 409 ++++++++++++++++++++++++----------------- 1 file changed, 245 insertions(+), 164 deletions(-) diff --git a/grafana-dashboard.json b/grafana-dashboard.json index 9e60ad2..c5374e6 100644 --- a/grafana-dashboard.json +++ b/grafana-dashboard.json @@ -18,8 +18,21 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 7, - "links": [], + "id": 1, + "links": [ + { + "asDropdown": false, + "icon": "external link", + "includeVars": false, + "keepTime": false, + "tags": [], + "targetBlank": true, + "title": "Other Dashboards", + "tooltip": "", + "type": "dashboards", + "url": "" + } + ], "liveNow": false, "panels": [ { @@ -32,13 +45,13 @@ }, "id": 2, "panels": [], - "title": "All Server Stats", + "title": "Global Server Stats", "type": "row" }, { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "fieldConfig": { "defaults": { @@ -60,7 +73,7 @@ "overrides": [] }, "gridPos": { - "h": 5, + "h": 4, "w": 4, "x": 0, "y": 1 @@ -76,14 +89,15 @@ "fields": "", "values": false }, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "10.2.0", + "pluginVersion": "10.2.3", "targets": [ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: -1h)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> last()\r\n |> map(fn: (r) => ({_value: r._value}))\r\n |> group(columns: [])\r\n |> sum()\r\n", "refId": "A" @@ -95,7 +109,7 @@ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "fieldConfig": { "defaults": { @@ -120,12 +134,12 @@ "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, - "pointSize": 5, + "pointSize": 1, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", - "spanNulls": false, + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -152,7 +166,31 @@ }, "unit": "locale" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "totalPlayerCombind" + }, + "properties": [ + { + "id": "displayName", + "value": "Total players across all servers" + }, + { + "id": "mappings", + "value": [] + }, + { + "id": "color", + "value": { + "fixedColor": "#ffffff", + "mode": "fixed" + } + } + ] + } + ] }, "gridPos": { "h": 10, @@ -163,7 +201,7 @@ "id": 1, "options": { "legend": { - "calcs": ["min", "max", "mean", "last"], + "calcs": ["max", "mean", "last"], "displayMode": "table", "placement": "right", "showLegend": true, @@ -172,20 +210,29 @@ }, "tooltip": { "mode": "multi", - "sort": "none" + "sort": "desc" } }, "targets": [ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> aggregateWindow(every: 5m, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", "refId": "A" + }, + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "hide": false, + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> aggregateWindow(every: 5m, fn: mean, createEmpty: false)\r\n |> group(columns: [\"_measurement\"]) // Group by measurement to get a single result per measurement\r\n |> aggregateWindow(every: 5m, fn: sum, createEmpty: false)\r\n |> map(fn: (r) => ({ _time: r._time, totalPlayerCombind: r._value })) // Retain time and rename the column\r\n |> yield(name: \"totalPlayerCombind\")\r\n", + "refId": "B" } ], - "title": "Player Counts", + "title": "Global Server Player Count (5m avg)", "type": "timeseries" }, { @@ -206,17 +253,17 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "Tracking historical data for Minecraft servers, this was inspired by [Minetrack](https://github.com/Cryptkeeper/Minetrack).
\nPlease contact me on Discord if there is any issues: `fascinated7`.\n\nWant to add a server? Open a PR [here](https://git.fascinated.cc/Fascinated/mc-tracker/pulls)", + "content": "Tracking historical data for Minecraft servers, this was inspired by [Minetrack](https://github.com/Cryptkeeper/Minetrack).
\nPlease contact me on Discord if there is any issues: `fascinated7`.\n\nWant to add a server? Open a PR [here](https://git.fascinated.cc/Fascinated/mc-tracker/pulls)\n\nSee other metrics [here](https://mc-tracker.fascinated.cc/dashboards)", "mode": "markdown" }, - "pluginVersion": "10.2.0", + "pluginVersion": "10.2.3", "title": "Information", "type": "text" }, { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "fieldConfig": { "defaults": { @@ -238,10 +285,10 @@ "overrides": [] }, "gridPos": { - "h": 5, + "h": 3, "w": 4, "x": 0, - "y": 6 + "y": 5 }, "id": 6, "options": { @@ -254,22 +301,81 @@ "fields": "", "values": false }, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "10.2.0", + "pluginVersion": "10.2.3", "targets": [ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: -1mo)\r\n |> distinct(column: \"ip\")\r\n |> group()\r\n |> count()", + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: -1mo)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> distinct(column: \"ip\")\r\n |> group()\r\n |> count()", "refId": "A" } ], "title": "Total Tracked Servers", "type": "stat" }, + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 8 + }, + "id": 40, + "interval": "1d", + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "/^_time$/", + "values": false + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.3", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> group(columns: [\"_measurement\"]) // Group by server\r\n |> last(column: \"_time\") // Get the latest timestamp for each server\r\n |> group(columns: [\"_measurement\"]) // Group again to get each series\r\n |> last() // Get the last value with that timestamp for each server\r\n", + "refId": "A" + } + ], + "title": "Last Server Ping", + "type": "stat" + }, { "collapsed": false, "gridPos": { @@ -278,6 +384,83 @@ "x": 0, "y": 11 }, + "id": 59, + "panels": [], + "title": "Player Count (Now)", + "type": "row" + }, + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 0, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "locale" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 12 + }, + "id": 58, + "maxPerRow": 6, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "limit": 1, + "values": false + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.3", + "repeat": "server", + "repeatDirection": "h", + "targets": [ + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> last()\r\n", + "refId": "Player Count" + } + ], + "title": "Player Count Now (${server})", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, "id": 3, "panels": [], "title": "Per Server Stats", @@ -286,7 +469,7 @@ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "fieldConfig": { "defaults": { @@ -318,8 +501,8 @@ "scaleDistribution": { "type": "linear" }, - "showPoints": "auto", - "spanNulls": false, + "showPoints": "never", + "spanNulls": 300000, "stacking": { "group": "A", "mode": "none" @@ -329,6 +512,7 @@ } }, "decimals": 0, + "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", @@ -444,7 +628,7 @@ "h": 8, "w": 8, "x": 0, - "y": 12 + "y": 25 }, "id": 4, "maxPerRow": 3, @@ -457,7 +641,7 @@ }, "tooltip": { "mode": "multi", - "sort": "none" + "sort": "desc" } }, "repeat": "server", @@ -466,148 +650,45 @@ { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, - "hide": false, - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", - "refId": "A" + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: true)\r\n |> yield(name: \"mean\")", + "refId": "Player Count" }, { "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "hide": true, + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)\r\n |> map(fn: (r) => ({r with _value: r._value, _field: \"1dAvg\"}))\r\n |> yield(name: \"mean\")", + "refId": "Player Count (1d avg)" + }, + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" + }, + "hide": true, + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)\r\n |> map(fn: (r) => ({r with _value: r._value, _field: \"7dAvg\"}))\r\n |> yield(name: \"mean\")", + "refId": "Player Count (7d avg)" + }, + { + "datasource": { + "type": "influxdb", + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, "hide": false, "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: 0)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> map(fn: (r) => ({r with _value: r._value, _field: \"highestPlayerCount\"}))\r\n |> max()", - "refId": "D" - }, - { - "datasource": { - "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" - }, - "hide": false, - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)\r\n |> map(fn: (r) => ({r with _value: r._value, _field: \"1dAvg\"}))\r\n |> yield(name: \"mean\")\r\n", - "refId": "B" - }, - { - "datasource": { - "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" - }, - "hide": false, - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"playerCount\")\r\n |> filter(fn: (r) => r[\"name\"] == \"${server}\")\r\n |> aggregateWindow(every: 7d, fn: mean, createEmpty: false)\r\n |> map(fn: (r) => ({r with _value: r._value, _field: \"7dAvg\"}))\r\n |> yield(name: \"mean\")", - "refId": "C" + "refId": "Player Count Peak (All time)" } ], "title": "Player Count (${server})", "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 44 - }, - "id": 29, - "panels": [], - "title": "Tracker Stats", - "type": "row" - }, - { - "datasource": { - "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 15, - "gradientMode": "opacity", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "displayName": "Storage Used", - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "deckbytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 28, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" - }, - "query": "from(bucket: \"influx_metrics\")\r\n |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"storage_usage\")\r\n |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n |> filter(fn: (r) => r[\"db\"] == \"mc-tracker\")\r\n |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n |> yield(name: \"mean\")", - "refId": "A" - } - ], - "title": "InfluxDB Storage Size", - "type": "timeseries" } ], "refresh": "30s", - "schemaVersion": 38, + "schemaVersion": 39, "tags": [], "templating": { "list": [ @@ -619,15 +700,15 @@ }, "datasource": { "type": "influxdb", - "uid": "face5ed9-19c5-419c-ac67-e80ed8945e49" + "uid": "a123f480-c065-4aa4-841e-6d00b4c98e2a" }, - "definition": "from(bucket: \"mc-tracker\")\r\n |> range(start: -6h)\r\n |> group()\r\n |> distinct(column: \"name\")\r\n", + "definition": "from(bucket: \"mc-tracker\")\r\n |> range(start: -6h)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> group()\r\n |> distinct(column: \"name\")\r\n", "hide": 2, "includeAll": true, "multi": true, "name": "server", "options": [], - "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: -6h)\r\n |> group()\r\n |> distinct(column: \"name\")\r\n", + "query": "from(bucket: \"mc-tracker\")\r\n |> range(start: -6h)\r\n |> filter(fn: (r) => r[\"_measurement\"] == \"playerCount\")\r\n |> group()\r\n |> distinct(column: \"name\")\r\n", "refresh": 1, "regex": "", "skipUrlSync": false, @@ -642,8 +723,8 @@ }, "timepicker": {}, "timezone": "", - "title": "Mc Tracker", - "uid": "c4d923ad-b588-4953-a302-2af1514fddd0", - "version": 39, + "title": "Server Tracker", + "uid": "c4d923ad", + "version": 30, "weekStart": "" }