diff --git a/grafana/provisioning/dashboards/dashboards.yaml b/grafana/provisioning/dashboards/dashboards.yaml new file mode 100644 index 0000000..b6790f9 --- /dev/null +++ b/grafana/provisioning/dashboards/dashboards.yaml @@ -0,0 +1,13 @@ +apiVersion: 1 + +providers: + - name: MeshCore + orgId: 1 + type: file + disableDeletion: false + # Allow edits in the UI without them being reverted on the next scan. + allowUiUpdates: true + updateIntervalSeconds: 30 + options: + path: /etc/grafana/provisioning/dashboards/json + foldersFromFilesStructure: false diff --git a/grafana/provisioning/dashboards/json/meshcore.json b/grafana/provisioning/dashboards/json/meshcore.json new file mode 100644 index 0000000..0190d41 --- /dev/null +++ b/grafana/provisioning/dashboards/json/meshcore.json @@ -0,0 +1,2060 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 17, + "panels": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 1 + }, + "id": 18, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "table", + "rawSql": "SELECT FROM LIMIT 1000", + "refId": "A" + } + ], + "title": "New panel", + "type": "stat" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 1 + }, + "id": 19, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "table", + "rawSql": "SELECT FROM LIMIT 1000", + "refId": "A" + } + ], + "title": "New panel", + "type": "stat" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 1 + }, + "id": 20, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "table", + "rawSql": "SELECT FROM LIMIT 1000", + "refId": "A" + } + ], + "title": "New panel", + "type": "stat" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 21, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 1, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "table", + "rawSql": "SELECT FROM LIMIT 1000", + "refId": "A" + } + ], + "title": "New panel", + "type": "stat" + } + ], + "title": "Overview", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 5, + "panels": [], + "title": "Network Stats", + "type": "row" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 2 + }, + "id": 4, + "maxDataPoints": 25, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "WITH all_nodes AS (\n SELECT \n $__timeInterval(ingest_timestamp) AS time_bucket, \n public_key, \n latitude, \n longitude, \n is_repeater, \n is_room_server\n FROM meshcore_adverts\n WHERE ingest_timestamp >= ($__fromTime - INTERVAL 7 DAY) \n AND ingest_timestamp <= $__toTime\n),\nfiltered_time_buckets AS (\n SELECT DISTINCT time_bucket \n FROM all_nodes\n WHERE time_bucket >= $__timeInterval($__fromTime)\n AND time_bucket <= $__timeInterval($__toTime)\n ORDER BY time_bucket ASC\n),\nrolling_window AS (\n SELECT \n tb.time_bucket as time,\n n.public_key,\n n.latitude,\n n.longitude,\n n.is_repeater,\n n.is_room_server\n FROM filtered_time_buckets tb\n INNER JOIN all_nodes n ON n.time_bucket BETWEEN (tb.time_bucket - INTERVAL 7 DAY) AND tb.time_bucket\n)\nSELECT \n time,\n count(DISTINCT public_key) AS cumulative_unique_nodes,\n count(DISTINCT CASE WHEN latitude IS NOT NULL AND longitude IS NOT NULL AND latitude != 0 AND longitude != 0 THEN public_key END) AS nodes_with_location,\n count(DISTINCT CASE WHEN latitude IS NULL OR longitude IS NULL OR latitude = 0 OR longitude = 0 THEN public_key END) AS nodes_without_location,\n count(DISTINCT CASE WHEN is_repeater = 1 THEN public_key END) AS repeaters,\n count(DISTINCT CASE WHEN is_room_server = 1 THEN public_key END) AS room_servers\nFROM rolling_window\nGROUP BY time\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Nodes over time (slow)", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binbps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 2 + }, + "id": 23, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "builderOptions": { + "columns": [ + { + "hint": "time", + "name": "date", + "type": "Date" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + } + ], + "limit": 1000, + "meta": {}, + "mode": "list", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "goose_db_version" + }, + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [ + { + "hint": "time", + "name": "date", + "type": "Date" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + } + ], + "limit": 1000, + "meta": {}, + "mode": "list", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "goose_db_version" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n SUM(length(packet) * 8) / (toUInt32($__timeInterval(ingest_timestamp)) / 1000) as throughput\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\nGROUP BY time\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Total Network Throughput", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 1, + "interval": "1m", + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "builderOptions": { + "aggregates": [], + "columns": [ + { + "hint": "time", + "name": "ingest_timestamp", + "type": "DateTime64(3)" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "hex(origin_pubkey)", + "operator": "IN", + "type": "String", + "value": [ + "$origin_pubkey" + ] + } + ], + "groupBy": [ + "packet" + ], + "limit": 100000, + "meta": {}, + "mode": "trend", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "meshcore_packets" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "aggregates": [], + "columns": [ + { + "hint": "time", + "name": "ingest_timestamp", + "type": "DateTime64(3)" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "hex(origin_pubkey)", + "operator": "IN", + "type": "String", + "value": [ + "$origin_pubkey" + ] + } + ], + "groupBy": [ + "packet" + ], + "limit": 100000, + "meta": {}, + "mode": "trend", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "meshcore_packets" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n payload_type = 0, 'REQ',\n payload_type = 1, 'RESPONSE', \n payload_type = 2, 'TXT_MSG',\n payload_type = 3, 'ACK',\n payload_type = 4, 'ADVERT',\n payload_type = 5, 'GRP_TXT',\n payload_type = 6, 'GRP_DATA',\n payload_type = 7, 'ANON_REQ',\n payload_type = 8, 'PATH',\n payload_type = 9, 'TRACE',\n payload_type = 15, 'RAW_CUSTOM',\n toString(payload_type)\n ) as payload_type,\n COUNT(DISTINCT payload) as count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND hex(origin_pubkey) IN ($origin_pubkey)\nGROUP BY time, payload_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Unique Payloads by Type", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 2, + "interval": "1m", + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "builderOptions": { + "aggregates": [], + "columns": [ + { + "hint": "time", + "name": "ingest_timestamp", + "type": "DateTime64(3)" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "hex(origin_pubkey)", + "operator": "IN", + "type": "String", + "value": [ + "$origin_pubkey" + ] + } + ], + "groupBy": [ + "packet" + ], + "limit": 100000, + "meta": {}, + "mode": "trend", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "meshcore_packets" + }, + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "aggregates": [], + "columns": [ + { + "hint": "time", + "name": "ingest_timestamp", + "type": "DateTime64(3)" + } + ], + "database": "default", + "filters": [ + { + "condition": "AND", + "filterType": "custom", + "hint": "time", + "key": "", + "operator": "WITH IN DASHBOARD TIME RANGE", + "type": "datetime" + }, + { + "condition": "AND", + "filterType": "custom", + "key": "hex(origin_pubkey)", + "operator": "IN", + "type": "String", + "value": [ + "$origin_pubkey" + ] + } + ], + "groupBy": [ + "packet" + ], + "limit": 100000, + "meta": {}, + "mode": "trend", + "orderBy": [ + { + "default": true, + "dir": "ASC", + "hint": "time", + "name": "" + } + ], + "queryType": "timeseries", + "table": "meshcore_packets" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n payload_type = 0, 'REQ',\n payload_type = 1, 'RESPONSE', \n payload_type = 2, 'TXT_MSG',\n payload_type = 3, 'ACK',\n payload_type = 4, 'ADVERT',\n payload_type = 5, 'GRP_TXT',\n payload_type = 6, 'GRP_DATA',\n payload_type = 7, 'ANON_REQ',\n payload_type = 8, 'PATH',\n payload_type = 9, 'TRACE',\n payload_type = 15, 'RAW_CUSTOM',\n toString(payload_type)\n ) as payload_type,\n COUNT(payload_type) as count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND hex(origin_pubkey) IN ($origin_pubkey)\nGROUP BY time, payload_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "All repeats heard by Type", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 16, + "panels": [], + "title": "Messaging", + "type": "row" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n channel_hash,\n COUNT(DISTINCT message_id) as count\nFROM meshcore_public_channel_messages \nWHERE $__timeFilter(ingest_timestamp)\n AND channel_hash != ''\nGROUP BY time, channel_hash\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Chat messages by channel hash", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "id": 9, + "panels": [], + "title": "Routing types", + "type": "row" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 29 + }, + "id": 10, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(DISTINCT payload) as unique_payloads\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Routing types by unique payloads", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 29 + }, + "id": 11, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(*) as packet_count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Routing types by repeats heard", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "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": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 12, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(DISTINCT payload) as unique_payloads\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Percentages of unique payloads by routing type", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "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": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 37 + }, + "id": 13, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(*) as packet_count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Percentages of all repeats by routing type", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 45 + }, + "id": 6, + "panels": [ + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 144 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(DISTINCT payload) as unique_payloads\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IN ($payload_type)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Unique payloads - $payload_type", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "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" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 144 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(*) as count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IN ($payload_type)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "All repeats heard - $payload_type", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "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": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 168 + }, + "id": 14, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(DISTINCT payload) as unique_payloads\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IN ($payload_type)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Percentages of unique payloads by routing type - $payload_type", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-clickhouse-datasource", + "uid": "clickhouse" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "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": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 168 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "editorType": "sql", + "format": 0, + "meta": { + "builderOptions": { + "columns": [], + "database": "", + "limit": 1000, + "mode": "list", + "queryType": "table", + "table": "" + } + }, + "pluginVersion": "4.10.2", + "queryType": "timeseries", + "rawSql": "SELECT \n $__timeInterval(ingest_timestamp) as time,\n multiIf(\n route_type = 0, 'TRANSPORT_FLOOD',\n route_type = 1, 'FLOOD',\n route_type = 2, 'DIRECT', \n route_type = 3, 'TRANSPORT_DIRECT',\n concat('UNKNOWN_', toString(route_type))\n ) as route_type_name,\n COUNT(*) as count\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IN ($payload_type)\nGROUP BY time, route_type\nORDER BY time ASC", + "refId": "A" + } + ], + "title": "Percentages of all repeats by routing type - $payload_type", + "type": "timeseries" + } + ], + "repeat": "payload_type", + "title": "Payload Type Detail - $payload_type", + "type": "row" + } + ], + "preload": false, + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "current": { + "text": "All", + "value": [ + "$__all" + ] + }, + "definition": "SELECT \n concat(\n trim(origin), ' (', left(hex(origin_pubkey), 6), '...', right(hex(origin_pubkey), 6), ')',\n '|',\n hex(origin_pubkey)\n ) as combined\nFROM meshcore_packets \nWHERE trim(origin) != '' AND trim(origin_pubkey) != ''\n AND $__timeFilter(ingest_timestamp)\nGROUP BY trim(origin), hex(origin_pubkey)\nORDER BY COUNT(*) DESC", + "description": "", + "includeAll": true, + "label": "origin_pubkey", + "multi": true, + "name": "origin_pubkey", + "options": [], + "query": "SELECT \n concat(\n trim(origin), ' (', left(hex(origin_pubkey), 6), '...', right(hex(origin_pubkey), 6), ')',\n '|',\n hex(origin_pubkey)\n ) as combined\nFROM meshcore_packets \nWHERE trim(origin) != '' AND trim(origin_pubkey) != ''\n AND $__timeFilter(ingest_timestamp)\nGROUP BY trim(origin), hex(origin_pubkey)\nORDER BY COUNT(*) DESC", + "refresh": 1, + "regex": "/^(?.*?)\\|(?.*)$/", + "type": "query" + }, + { + "current": { + "text": [ + "REQ (00)", + "RESPONSE (01)", + "TXT_MSG (02)", + "ACK (03)", + "ADVERT (04)", + "GRP_TXT (05)", + "GRP_DATA (06)", + "ANON_REQ (07)", + "PATH (08)", + "TRACE (09)" + ], + "value": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "definition": "SELECT \n concat(\n multiIf(\n payload_type = 0, 'REQ',\n payload_type = 1, 'RESPONSE', \n payload_type = 2, 'TXT_MSG',\n payload_type = 3, 'ACK',\n payload_type = 4, 'ADVERT',\n payload_type = 5, 'GRP_TXT',\n payload_type = 6, 'GRP_DATA',\n payload_type = 7, 'ANON_REQ',\n payload_type = 8, 'PATH',\n payload_type = 9, 'TRACE',\n payload_type = 15, 'RAW_CUSTOM',\n 'UNK'\n ),\n ' (',\n hex(payload_type),\n ')|',\n payload_type\n ) as combined\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IS NOT NULL\nGROUP BY payload_type\nORDER BY payload_type ASC", + "description": "", + "includeAll": true, + "label": "Payload Type", + "multi": true, + "name": "payload_type", + "options": [], + "query": "SELECT \n concat(\n multiIf(\n payload_type = 0, 'REQ',\n payload_type = 1, 'RESPONSE', \n payload_type = 2, 'TXT_MSG',\n payload_type = 3, 'ACK',\n payload_type = 4, 'ADVERT',\n payload_type = 5, 'GRP_TXT',\n payload_type = 6, 'GRP_DATA',\n payload_type = 7, 'ANON_REQ',\n payload_type = 8, 'PATH',\n payload_type = 9, 'TRACE',\n payload_type = 15, 'RAW_CUSTOM',\n 'UNK'\n ),\n ' (',\n hex(payload_type),\n ')|',\n payload_type\n ) as combined\nFROM meshcore_packets \nWHERE $__timeFilter(ingest_timestamp)\n AND payload_type IS NOT NULL\nGROUP BY payload_type\nORDER BY payload_type ASC", + "refresh": 1, + "regex": "/^(?.*?)\\|(?.*)$/", + "type": "query" + } + ] + }, + "time": { + "from": "now-7d", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "MeshCore", + "uid": "48e6127f-de47-4f8b-b6eb-8f206f182507" +} diff --git a/grafana/provisioning/datasources/clickhouse.yaml b/grafana/provisioning/datasources/clickhouse.yaml index a21409a..f578f4f 100644 --- a/grafana/provisioning/datasources/clickhouse.yaml +++ b/grafana/provisioning/datasources/clickhouse.yaml @@ -3,6 +3,8 @@ apiVersion: 1 datasources: - name: ClickHouse type: grafana-clickhouse-datasource + # Pinned uid so the provisioned MeshCore dashboard's panel references resolve. + uid: clickhouse access: proxy isDefault: true jsonData: