From 7a2dc32c47c6bdd9cb74422245ba24763a299f35 Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Wed, 16 Jul 2025 06:14:10 -0700 Subject: [PATCH 01/12] Regional dashboard DO NOT MERGE --- .../dashboards/regional-details-dshboard.json | 1447 +++++++++++++++++ 1 file changed, 1447 insertions(+) create mode 100644 grafana-public/dashboards/regional-details-dshboard.json diff --git a/grafana-public/dashboards/regional-details-dshboard.json b/grafana-public/dashboards/regional-details-dshboard.json new file mode 100644 index 0000000..71c5323 --- /dev/null +++ b/grafana-public/dashboards/regional-details-dshboard.json @@ -0,0 +1,1447 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Full matrix of Client ISPs and MLab Server comparisons, circa an anchor metro.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 522, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "xIXR1_LMz" + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 121, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "# Regional Details Dashboard \n\n### MLab Internal version\nCAUTION this version changes frequently\n\nScroll for more info.\n\nThe servers (the region) are selected by distance from the Anchor metro.\n\nThe Client ISPs are selected by rank in the Anchor metro.\n\nData is shown for all selected severs cross all selected Client ISPs.\n\nMethod selects the backend; Please select cached.\n\nFor more information see the\n[slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).", + "mode": "markdown" + }, + "pluginVersion": "11.1.3", + "type": "text" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 134, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "SELECT \"region:regexp\" AS Name, \"${region:regexp}\" AS Value\n UNION ALL\nSELECT \"ClientISP\", \"${ClientISP}\"\n UNION ALL\nSELECT \"anchor\", \"$anchor\"\n UNION ALL\nSELECT \"anchor:regex\", \"${anchor:regex}\"", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Diagnostic Panel", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 6 + }, + "id": 32, + "panels": [], + "title": "Metro Summary Statistics -- Aggregated by the entire metro, MLab Sites and Client ISPs", + "type": "row" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "rank" + }, + "properties": [ + { + "id": "custom.width", + "value": 45 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "custom.width", + "value": 261 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "tests" + }, + "properties": [ + { + "id": "custom.width", + "value": 71 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Percent" + }, + "properties": [ + { + "id": "custom.width", + "value": 67 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "metro" + }, + "properties": [ + { + "id": "custom.width", + "value": 55 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Pct" + }, + "properties": [ + { + "id": "custom.width", + "value": 35 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ISPrank" + }, + "properties": [ + { + "id": "custom.width", + "value": 70 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "percent" + }, + "properties": [ + { + "id": "custom.width", + "value": 69 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "KSdistance" + }, + "properties": [ + { + "id": "custom.width", + "value": 109 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Spread" + }, + "properties": [ + { + "id": "custom.width", + "value": 68 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pct" + }, + "properties": [ + { + "id": "custom.width", + "value": 51 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 246 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Sites" + }, + "properties": [ + { + "id": "custom.width", + "value": 52 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "calKS" + }, + "properties": [ + { + "id": "custom.width", + "value": 68 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Gmean" + }, + "properties": [ + { + "id": "custom.width", + "value": 108 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "level" + }, + "properties": [ + { + "id": "custom.width", + "value": 157 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "KSoutlier" + }, + "properties": [ + { + "id": "custom.width", + "value": 203 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 177 + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 20, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Summary Statistics for the top ISPs in $anchor", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 34, + "panels": [], + "repeat": "ClientISP", + "repeatDirection": "h", + "title": "Performance Distributions for Client ISP $ClientISP", + "type": "row" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "", + "gridPos": { + "h": 13, + "w": 6, + "x": 0, + "y": 17 + }, + "id": 81, + "maxDataPoints": 80000, + "options": { + "config": { + "displayModeBar": false + }, + "data": [], + "layout": { + "font": { + "color": "grey" + }, + "legend": { + "orientation": "h" + }, + "margin": { + "b": 50, + "l": 50, + "r": 50, + "t": 10 + }, + "paper_bgcolor": "rgba(0, 0, 0, 0)", + "plot_bgcolor": "rgba(0, 0, 0, 0)", + "xaxis": { + "autorange": false, + "gridcolor": "#333", + "range": [ + 0, + 300 + ], + "type": "linear" + }, + "yaxis": { + "autorange": true, + "gridcolor": "#333", + "range": [ + -0.055555555555555566, + 1.0555555555555556 + ], + "type": "linear" + } + }, + "onclick": "console.log(\"okay\");\nconsole.log(data)\n// window.updateVariables({query:{'var-project':'test'}, partial: true})", + "script": "console.log(data);\nvar sites = {};\n\nvar x = data.series[0].fields[0].values;\nvar y = data.series[0].fields[1].values;\nvar names = data.series[0].fields[2].values;\n\nnames.forEach(site => {\n sites[site] = {\n x: [],\n y: [],\n name: site,\n line: {\n width: 1\n }\n }\n}); \nx.forEach((xv, i) => {\n sites[names[i]].x.push(x[i]);\n sites[names[i]].y.push(y[i]);\n})\nvar data = [];\nObject.keys(sites).sort().forEach(site => {\n data.push(sites[site]);\n});\nconsole.log(data);\nvar site = \"atl03\";\nvar trace = {\n x: x, //.filter((element, i) => names[i] === site),\n y: y, //.filter((element, i) => names[i] === site),\n name: names //.filter((element, i) => names[i] === site)\n};\nconsole.log(\"okay2\");\nconsole.log(trace);\n//return {data:[trace]};\nreturn {data:data};" + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 0, + "group": [], + "location": "US", + "metricColumn": "none", + "orderByCol": "1", + "orderBySort": "1", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "WITH\n\nISPdata AS (\n SELECT\n linBin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"linearMinRTT\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"linearMinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, linBin\n)\n\nSELECT linBin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY linBin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY linBin", + "refId": "A", + "select": [ + [ + { + "params": [ + "-- value --" + ], + "type": "column" + } + ] + ], + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + }, + "timeColumn": "-- time --", + "timeColumnType": "DATE", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Download MinRTT (linear mS) per MLab Site for ${ClientISP}", + "type": "ae3e-plotly-panel" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "", + "gridPos": { + "h": 13, + "w": 6, + "x": 6, + "y": 17 + }, + "id": 48, + "maxDataPoints": 80000, + "options": { + "config": { + "displayModeBar": false + }, + "data": [], + "layout": { + "font": { + "color": "grey" + }, + "legend": { + "orientation": "h" + }, + "margin": { + "b": 50, + "l": 50, + "r": 50, + "t": 10 + }, + "paper_bgcolor": "rgba(0, 0, 0, 0)", + "plot_bgcolor": "rgba(0, 0, 0, 0)", + "xaxis": { + "autorange": false, + "gridcolor": "#333", + "range": [ + -0.3, + 3 + ], + "type": "log" + }, + "yaxis": { + "autorange": true, + "gridcolor": "#333", + "range": [ + -0.055555555555555566, + 1.0555555555555556 + ], + "type": "linear" + } + }, + "onclick": "console.log(\"okay\");\nconsole.log(data)\n// window.updateVariables({query:{'var-project':'test'}, partial: true})", + "script": "console.log(data);\nvar sites = {};\n\nvar x = data.series[0].fields[0].values;\nvar y = data.series[0].fields[1].values;\nvar names = data.series[0].fields[2].values;\n\nnames.forEach(site => {\n sites[site] = {\n x: [],\n y: [],\n name: site,\n line: {\n width: 1\n }\n }\n}); \nx.forEach((xv, i) => {\n sites[names[i]].x.push(x[i]);\n sites[names[i]].y.push(y[i]);\n})\nvar data = [];\nObject.keys(sites).sort().forEach(site => {\n data.push(sites[site]);\n});\nconsole.log(data);\nvar site = \"atl03\";\nvar trace = {\n x: x, //.filter((element, i) => names[i] === site),\n y: y, //.filter((element, i) => names[i] === site),\n name: names //.filter((element, i) => names[i] === site)\n};\nconsole.log(\"okay2\");\nconsole.log(trace);\n//return {data:[trace]};\nreturn {data:data};" + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 0, + "group": [], + "location": "US", + "metricColumn": "none", + "orderByCol": "1", + "orderBySort": "1", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "WITH\n\nISPdata AS (\n SELECT\n bin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n\"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, bin\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", + "refId": "A", + "select": [ + [ + { + "params": [ + "-- value --" + ], + "type": "column" + } + ] + ], + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + }, + "timeColumn": "-- time --", + "timeColumnType": "DATE", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Download MinRTT (mS) per MLab Site for $ClientISP", + "type": "ae3e-plotly-panel" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "", + "gridPos": { + "h": 13, + "w": 6, + "x": 12, + "y": 17 + }, + "id": 43, + "maxDataPoints": 80000, + "options": { + "config": { + "displayModeBar": false + }, + "data": [], + "layout": { + "font": { + "color": "grey" + }, + "legend": { + "orientation": "h" + }, + "margin": { + "b": 50, + "l": 50, + "r": 50, + "t": 10 + }, + "paper_bgcolor": "rgba(0, 0, 0, 0)", + "plot_bgcolor": "rgba(0, 0, 0, 0)", + "xaxis": { + "autorange": false, + "gridcolor": "#333", + "range": [ + -0.3, + 3.3 + ], + "type": "log" + }, + "yaxis": { + "autorange": true, + "gridcolor": "#333", + "range": [ + -0.055555555555555566, + 1.0555555555555556 + ], + "type": "linear" + } + }, + "onclick": "console.log(\"okay\");\nconsole.log(data)\n// window.updateVariables({query:{'var-project':'test'}, partial: true})", + "script": "console.log(data);\nvar sites = {};\n\nvar x = data.series[0].fields[0].values;\nvar y = data.series[0].fields[1].values;\nvar names = data.series[0].fields[2].values;\n\nnames.forEach(site => {\n sites[site] = {\n x: [],\n y: [],\n name: site,\n line: {\n width: 1\n }\n }\n}); \nx.forEach((xv, i) => {\n sites[names[i]].x.push(x[i]);\n sites[names[i]].y.push(y[i]);\n})\nvar data = [];\nObject.keys(sites).sort().forEach(site => {\n data.push(sites[site]);\n});\nconsole.log(data);\nvar site = \"atl03\";\nvar trace = {\n x: x, //.filter((element, i) => names[i] === site),\n y: y, //.filter((element, i) => names[i] === site),\n name: names //.filter((element, i) => names[i] === site)\n};\nconsole.log(\"okay2\");\nconsole.log(trace);\n//return {data:[trace]};\nreturn {data:data};" + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 0, + "group": [], + "location": "US", + "metricColumn": "none", + "orderByCol": "1", + "orderBySort": "1", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "\nWITH\n\nISPdata AS (\n SELECT\n bin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"MeanThroughputMbps\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MeanThroughputMbps\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, bin\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", + "refId": "A", + "select": [ + [ + { + "params": [ + "-- value --" + ], + "type": "column" + } + ] + ], + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + }, + "timeColumn": "-- time --", + "timeColumnType": "DATE", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Download Mbps per MLab Site for $ClientISP", + "type": "ae3e-plotly-panel" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "", + "gridPos": { + "h": 13, + "w": 6, + "x": 18, + "y": 17 + }, + "id": 133, + "maxDataPoints": 80000, + "options": { + "config": { + "displayModeBar": true + }, + "data": [], + "layout": { + "font": { + "color": "grey" + }, + "legend": { + "orientation": "h" + }, + "margin": { + "b": 50, + "l": 50, + "r": 50, + "t": 10 + }, + "paper_bgcolor": "rgba(0, 0, 0, 0)", + "plot_bgcolor": "rgba(0, 0, 0, 0)", + "xaxis": { + "autorange": true, + "gridcolor": "#333", + "range": [ + -2.08, + 3.48 + ], + "showspikes": false, + "type": "log" + }, + "yaxis": { + "autorange": true, + "gridcolor": "#333", + "range": [ + -0.055555555555555566, + 1.0555555555555556 + ], + "showspikes": false, + "type": "linear" + } + }, + "onclick": "console.log(\"okay\");\nconsole.log(data)\n// window.updateVariables({query:{'var-project':'test'}, partial: true})", + "script": "console.log(data);\nvar sites = {};\n\nvar x = data.series[0].fields[0].values;\nvar y = data.series[0].fields[1].values;\nvar names = data.series[0].fields[2].values;\n\nnames.forEach(site => {\n sites[site] = {\n x: [],\n y: [],\n name: site,\n line: {\n width: 1\n }\n }\n}); \nx.forEach((xv, i) => {\n sites[names[i]].x.push(x[i]);\n sites[names[i]].y.push(y[i]);\n})\nvar data = [];\nObject.keys(sites).sort().forEach(site => {\n data.push(sites[site]);\n});\nconsole.log(data);\nvar site = \"atl03\";\nvar trace = {\n x: x, //.filter((element, i) => names[i] === site),\n y: y, //.filter((element, i) => names[i] === site),\n name: names //.filter((element, i) => names[i] === site)\n};\nconsole.log(\"okay2\");\nconsole.log(trace);\n//return {data:[trace]};\nreturn {data:data};" + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 1, + "group": [], + "location": "US", + "metricColumn": "none", + "orderByCol": "1", + "orderBySort": "1", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "\nWITH\n\nISPdata AS (\n SELECT\n bin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"MeanThroughputMbps\", \"${region:regex}\", ${ISPrank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, bin\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", + "refId": "A", + "select": [ + [ + { + "params": [ + "-- value --" + ], + "type": "column" + } + ] + ], + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + }, + "timeColumn": "-- time --", + "timeColumnType": "DATE", + "where": [ + { + "name": "$__timeFilter", + "params": [], + "type": "macro" + } + ] + } + ], + "title": "Download $field per MLab Site for $ClientISP", + "type": "ae3e-plotly-panel" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Google BigQuery (mlab-collaboration)", + "value": "P116E76923C5457A4" + }, + "hide": 1, + "includeAll": false, + "multi": false, + "name": "datasource", + "options": [], + "query": "grafana-bigquery-datasource", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "hide": 2, + "name": "dataset", + "query": "mlab-collaboration.mm_preproduction", + "skipUrlSync": false, + "type": "constant" + }, + { + "allValue": ".*", + "current": { + "selected": false, + "text": "gru SA Campinas, BR", + "value": "gru" + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "definition": "", + "description": "Used to select Client ISPs to be evaluated in region. ", + "hide": 0, + "includeAll": false, + "label": "Anchor metro", + "multi": false, + "name": "anchor", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "measurement-lab", + "rawQuery": true, + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "500", + "value": "500" + }, + "description": "Radius from the anchor metro for selecting servers", + "hide": 0, + "label": "Radius (kM)", + "name": "radius", + "options": [ + { + "selected": true, + "text": "500", + "value": "500" + } + ], + "query": "500", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": true, + "text": [ + "gru02 (0.0) 262589 INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", + "gru03 (0.0) 6762 TELECOM ITALIA SPARKLE S p A ", + "gru06 (0.0) 396982 Google LLC", + "gru1916 (0.0) 1916 (missing)", + "gig1916 (336.0) 1916 (missing)", + "cwb10881 (360.0) 10881 (missing)", + "cnf1916 (495.0) 1916 (missing)" + ], + "value": [ + "gru02", + "gru03", + "gru06", + "gru1916", + "gig1916", + "cwb10881", + "cnf1916" + ] + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "definition": "", + "description": "Manually select server sites within a specified radius of the anchor metro.", + "hide": 0, + "includeAll": false, + "label": "Servers", + "multi": true, + "name": "region", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "10", + "value": "10" + }, + "description": "Number of ISPs to include", + "hide": 0, + "includeAll": false, + "label": "Client Rows", + "multi": false, + "name": "selectorISPcount", + "options": [ + { + "selected": false, + "text": "0", + "value": "0" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "2", + "value": "2" + }, + { + "selected": false, + "text": "3", + "value": "3" + }, + { + "selected": false, + "text": "4", + "value": "4" + }, + { + "selected": false, + "text": "5", + "value": "5" + }, + { + "selected": true, + "text": "10", + "value": "10" + }, + { + "selected": false, + "text": "20", + "value": "20" + }, + { + "selected": false, + "text": "50", + "value": "50" + } + ], + "query": "0,1,2,3,4,5,10,20,50", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "28573 CLARO S A ", + "18881 TELEFÔNICA BRASIL S A", + "26599 TELEFÔNICA BRASIL S A", + "26615 Tim Celular S A ", + "27699 TELEFÔNICA BRASIL S A" + ], + "value": [ + "28573 CLARO S A ", + "18881 TELEFÔNICA BRASIL S A", + "26599 TELEFÔNICA BRASIL S A", + "26615 Tim Celular S A ", + "27699 TELEFÔNICA BRASIL S A" + ] + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "definition": "", + "description": "Choose high volume Client ISPs. ", + "hide": 0, + "includeAll": false, + "label": "Client ISPs", + "multi": true, + "name": "ClientISP", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "\nSELECT\n ISPname AS text,\n-- Uses ${datasource} Implicitly\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${anchor:regex}\", ${selectorISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "cached", + "value": "cached" + }, + "description": "Select processing stack version", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "method", + "options": [ + { + "selected": true, + "text": "cached", + "value": "cached" + }, + { + "selected": false, + "text": "live", + "value": "live" + }, + { + "selected": false, + "text": "experimental", + "value": "experimental" + } + ], + "query": "cached, live, experimental", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + "description": "Select the 4th data column. (Linear fields don't display correctly.) \nMethod must be set to experimental FIRST.", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "field", + "options": [ + { + "selected": false, + "text": "MinRTT", + "value": "MinRTT" + }, + { + "selected": true, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + }, + { + "selected": false, + "text": "linearMinRTT", + "value": "linearMinRTT" + }, + { + "selected": false, + "text": "linearMSS", + "value": "linearMSS" + }, + { + "selected": false, + "text": "RTO", + "value": "RTO" + }, + { + "selected": false, + "text": "fineMeanThroughputMbps", + "value": "fineMeanThroughputMbps" + } + ], + "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, fineMeanThroughputMbps", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "cdf", + "value": "cdf" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "mode", + "options": [ + { + "selected": false, + "text": "pdf", + "value": "pdf" + }, + { + "selected": false, + "text": "peak", + "value": "peak" + }, + { + "selected": true, + "text": "cdf", + "value": "cdf" + } + ], + "query": "pdf,peak,cdf", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "none", + "value": "none" + }, + "description": "Select time granularity for some experimental queries. ", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "xAxis", + "options": [ + { + "selected": true, + "text": "none", + "value": "none" + }, + { + "selected": false, + "text": "day", + "value": "day" + }, + { + "selected": false, + "text": "hour", + "value": "hour" + } + ], + "query": "none, day, hour", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": "400", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "description": "Number of ISPs data to scan by name. Must be larger than the ISPCount applied to the ISP selector.", + "hide": 0, + "includeAll": true, + "label": "", + "multi": false, + "name": "ISPcount", + "options": [ + { + "selected": true, + "text": "All", + "value": "$__all" + }, + { + "selected": false, + "text": "(10*2)", + "value": "(10*2)" + }, + { + "selected": false, + "text": "(10*4)", + "value": "(10*4)" + } + ], + "query": "(${selectorISPcount}*2), (${selectorISPcount}*4)", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "description": "Shim", + "hide": 2, + "name": "binSize", + "query": "50", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "2025-06-04T00:00:00.000Z", + "to": "2025-06-10T00:00:00.000Z" + }, + "timepicker": { + "hidden": false + }, + "timezone": "utc", + "title": "MLab Regional Details Dashboard", + "uid": "dees4pr47gn40a", + "version": 56, + "weekStart": "" +} From 78bd80b65d3cbd641aaec5c47e61489fdedda921 Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Thu, 24 Jul 2025 20:23:03 -0700 Subject: [PATCH 02/12] Add reference to datasource --- grafana-public/dashboards/regional-details-dshboard.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dshboard.json b/grafana-public/dashboards/regional-details-dshboard.json index 71c5323..4364d1d 100644 --- a/grafana-public/dashboards/regional-details-dshboard.json +++ b/grafana-public/dashboards/regional-details-dshboard.json @@ -1078,7 +1078,7 @@ "location": "", "project": "mlab-collaboration", "rawQuery": true, - "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", + "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", "refId": "tempvar", "sql": { "columns": [ @@ -1442,6 +1442,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 56, + "version": 57, "weekStart": "" } From 1bbe78672aa43aac9293078979f6084c7ff5ce6f Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Thu, 24 Jul 2025 20:54:55 -0700 Subject: [PATCH 03/12] Add country code to region selector --- .../dashboards/regional-details-dshboard.json | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dshboard.json b/grafana-public/dashboards/regional-details-dshboard.json index 4364d1d..f504bed 100644 --- a/grafana-public/dashboards/regional-details-dshboard.json +++ b/grafana-public/dashboards/regional-details-dshboard.json @@ -858,8 +858,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -2.08, - 3.48 + -2.02, + 3.9599999999999995 ], "showspikes": false, "type": "log" @@ -970,8 +970,8 @@ "allValue": ".*", "current": { "selected": false, - "text": "gru SA Campinas, BR", - "value": "gru" + "text": "sin AS Singapore, SG", + "value": "sin" }, "datasource": { "type": "grafana-bigquery-datasource", @@ -1020,8 +1020,8 @@ { "current": { "selected": false, - "text": "500", - "value": "500" + "text": "1000", + "value": "1000" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, @@ -1029,12 +1029,12 @@ "name": "radius", "options": [ { - "selected": true, + "selected": false, "text": "500", "value": "500" } ], - "query": "500", + "query": "1000", "skipUrlSync": false, "type": "textbox" }, @@ -1042,22 +1042,14 @@ "current": { "selected": true, "text": [ - "gru02 (0.0) 262589 INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", - "gru03 (0.0) 6762 TELECOM ITALIA SPARKLE S p A ", - "gru06 (0.0) 396982 Google LLC", - "gru1916 (0.0) 1916 (missing)", - "gig1916 (336.0) 1916 (missing)", - "cwb10881 (360.0) 10881 (missing)", - "cnf1916 (495.0) 1916 (missing)" + "sin01 (0.0 SG) 6453 TATA COMMUNICATIONS (AMERICA) INC", + "sin03 (0.0 SG) 15169 Google LLC", + "sin54825 (0.0 SG) 54825 (missing)" ], "value": [ - "gru02", - "gru03", - "gru06", - "gru1916", - "gig1916", - "cwb10881", - "cnf1916" + "sin01", + "sin03", + "sin54825" ] }, "datasource": { @@ -1078,7 +1070,7 @@ "location": "", "project": "mlab-collaboration", "rawQuery": true, - "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", + "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t %t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(CountryCode), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n -- Uses ${datasource} implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", "refId": "tempvar", "sql": { "columns": [ @@ -1173,18 +1165,28 @@ "current": { "selected": true, "text": [ - "28573 CLARO S A ", - "18881 TELEFÔNICA BRASIL S A", - "26599 TELEFÔNICA BRASIL S A", - "26615 Tim Celular S A ", - "27699 TELEFÔNICA BRASIL S A" + "7713 PT Telekomunikasi Indonesia", + "131445 Advance Wireless Network", + "17552 TRUE INTERNET CO , LTD ", + "132618 Real Future Company Limited", + "23693 PT Telekomunikasi Selular", + "133481 AIS Fibre", + "24378 Total Access Communication PLC ", + "45758 Triple T Internet Triple T Broadband", + "132061 Realmove Company Limited", + "4761 INDOSAT Internet Network Provider" ], "value": [ - "28573 CLARO S A ", - "18881 TELEFÔNICA BRASIL S A", - "26599 TELEFÔNICA BRASIL S A", - "26615 Tim Celular S A ", - "27699 TELEFÔNICA BRASIL S A" + "7713 PT Telekomunikasi Indonesia", + "131445 Advance Wireless Network", + "17552 TRUE INTERNET CO , LTD ", + "132618 Real Future Company Limited", + "23693 PT Telekomunikasi Selular", + "133481 AIS Fibre", + "24378 Total Access Communication PLC ", + "45758 Triple T Internet Triple T Broadband", + "132061 Realmove Company Limited", + "4761 INDOSAT Internet Network Provider" ] }, "datasource": { @@ -1442,6 +1444,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 57, + "version": 59, "weekStart": "" } From 3c58b5d583ef0226eb210862aacf8f3ecc03777f Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Sat, 30 Aug 2025 21:37:17 -0700 Subject: [PATCH 04/12] update regional details and add first calibration and time series dashboards --- .../dashboards/exp-time-series.json | 1025 +++++++++++++++++ .../regional-calibration-dashboard.json | 840 ++++++++++++++ .../dashboards/regional-details-dshboard.json | 310 ++--- 3 files changed, 2038 insertions(+), 137 deletions(-) create mode 100644 grafana-public/dashboards/exp-time-series.json create mode 100644 grafana-public/dashboards/regional-calibration-dashboard.json diff --git a/grafana-public/dashboards/exp-time-series.json b/grafana-public/dashboards/exp-time-series.json new file mode 100644 index 0000000..b9da9ef --- /dev/null +++ b/grafana-public/dashboards/exp-time-series.json @@ -0,0 +1,1025 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "First Time Series of metro report data, including KSdistance and spread", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 512, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": true, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "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": "always", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": true, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "spread" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 23, + "x": 0, + "y": 0 + }, + "id": 23, + "links": [ + { + "title": "SPoutlier", + "url": "" + } + ], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "timezone": [ + "utc" + ], + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "SELECT timeBin AS time,\n KSdistance, KSoutlier,\n spread, SPoutlier,\n -- Implicitly uses ${datasource}\nFROM `${dataset}.timeseries_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n -- DATE_SUB(\"$e ndDate\", INTERVAL ${d uration:raw}-1 DAY), DATE(\"$e ndDate\"),\n DATE(\"${__from:date}\"), DATE(\"${__to:date}\"),\n \"^(${region:regex}).*\", \"^(${ClientISP:regex})\", ${ISPcount})\nWHERE level = \"Regional Summary\"\n -- AND (TIMESTAMP(DATE_SUB(\"$endDate\", INTERVAL ${duration:raw}-1 DAY)) < \"${__to:date:iso}\" OR\n -- ERROR('Prefetch is before timepicker'))\n -- AND ( \"${__from:date:iso}\" > TIMESTAMP(DATE(\"$endDate\")) OR\n -- ERROR('Prefetch is after timepicker'))\nORDER BY timeBin \n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Time Series", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "description": "Show servers and ISPs causing outliers.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": true, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "spread" + }, + "properties": [ + { + "id": "custom.axisPlacement", + "value": "right" + } + ] + } + ] + }, + "gridPos": { + "h": 12, + "w": 23, + "x": 0, + "y": 8 + }, + "id": 24, + "links": [ + { + "title": "SPoutlier", + "url": "" + } + ], + "options": { + "barRadius": 0, + "barWidth": 1, + "fullHighlight": true, + "groupWidth": 0.79, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "mode": "multi", + "sort": "none" + }, + "xField": "time", + "xTickLabelMaxLength": 10, + "xTickLabelRotation": -90, + "xTickLabelSpacing": 0 + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "SELECT timeBin AS time,\n KSdistance, KSoutlier,\n spread, SPoutlier,\n -- Implicitly uses ${datasource}\nFROM `${dataset}.timeseries_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n -- DATE_SUB(\"$e ndDate\", INTERVAL ${d uration:raw}-1 DAY), DATE(\"$e ndDate\"),\n DATE(\"${__from:date}\"), DATE(\"${__to:date}\"),\n \"^(${region:regex}).*\", \"^(${ClientISP:regex})\", ${ISPcount})\nWHERE level = \"Regional Summary\"\n -- AND (TIMESTAMP(DATE_SUB(\"$endDate\", INTERVAL ${duration:raw}-1 DAY)) < \"${__to:date:iso}\" OR\n -- ERROR('Prefetch is before timepicker'))\n -- AND ( \"${__from:date:iso}\" > TIMESTAMP(DATE(\"$endDate\")) OR\n -- ERROR('Prefetch is after timepicker'))\nORDER BY timeBin \n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Time Series with hover data", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "description": "These are aggregated across the entire prefetch date range.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "level" + }, + "properties": [ + { + "id": "custom.width", + "value": 142 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "metro" + }, + "properties": [ + { + "id": "custom.width", + "value": 64 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Sites" + }, + "properties": [ + { + "id": "custom.width", + "value": 47 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "tests" + }, + "properties": [ + { + "id": "custom.width", + "value": 66 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "percent" + }, + "properties": [ + { + "id": "custom.width", + "value": 69 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "KSdistance" + }, + "properties": [ + { + "id": "custom.width", + "value": 89 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Gmean" + }, + "properties": [ + { + "id": "custom.width", + "value": 63 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "spread" + }, + "properties": [ + { + "id": "custom.width", + "value": 65 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ISPrank" + }, + "properties": [ + { + "id": "custom.width", + "value": 52 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "data" + }, + "properties": [ + { + "id": "custom.width", + "value": 175 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Spread" + }, + "properties": [ + { + "id": "custom.width", + "value": 54 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ISPname" + }, + "properties": [ + { + "id": "custom.width", + "value": 343 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ISPtests" + }, + "properties": [ + { + "id": "custom.width", + "value": 76 + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 23, + "x": 0, + "y": 20 + }, + "id": 22, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "SELECT * EXCEPT (serverStart, serverEnd)\nFROM `${dataset}.regional_report` (\"${method}\",\"none\", ${binSize},\"${field}\",\n -- DATE_SUB(\"$endDate\", INTERVAL ${duration:raw}-1 DAY),\n -- DATE(\"$endDate\"),\n DATE(\"${__from:date}\"), DATE(\"${__to:date}\"),\n \"^(${region:regex}).*\", \"^(${ClientISP:regex})\", ${ISPcount})\nWHERE \"${verbose:raw}\" = 'yes' OR level like '%%Summary'\n# ORDER BY ISPname, Sites\nORDER BY ISPtests DESC, Sites", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Aggregate results for ${field}", + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Google BigQuery (mlab-collaboration)", + "value": "P116E76923C5457A4" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "datasource", + "options": [], + "query": "grafana-bigquery-datasource", + "queryValue": "", + "refresh": 1, + "regex": "/(mlab-oti|mlab-staging|mlab-sandbox|mlab-collaboration)/", + "skipUrlSync": false, + "type": "datasource" + }, + { + "hide": 2, + "label": "dataset", + "name": "dataset", + "query": "mlab-collaboration.mm_preproduction", + "skipUrlSync": false, + "type": "constant" + }, + { + "current": { + "selected": true, + "text": "experimental", + "value": "experimental" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "method", + "options": [ + { + "selected": false, + "text": "cached", + "value": "cached" + }, + { + "selected": false, + "text": "live", + "value": "live" + }, + { + "selected": true, + "text": "experimental", + "value": "experimental" + } + ], + "query": "cached, live ,experimental", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": true, + "text": "MinRTT", + "value": "MinRTT" + }, + "hide": 0, + "includeAll": false, + "multi": false, + "name": "field", + "options": [ + { + "selected": true, + "text": "MinRTT", + "value": "MinRTT" + }, + { + "selected": false, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + }, + { + "selected": false, + "text": "linearMinRTT", + "value": "linearMinRTT" + }, + { + "selected": false, + "text": "linearMSS", + "value": "linearMSS" + }, + { + "selected": false, + "text": "RTO", + "value": "RTO" + }, + { + "selected": false, + "text": "MSS", + "value": "MSS" + }, + { + "selected": false, + "text": "", + "value": "" + } + ], + "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, MSS, \n", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": true, + "text": "den NA Denver, US", + "value": "den" + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "definition": "", + "description": "Used to select Client ISPs to be evaluated in region. ", + "hide": 0, + "includeAll": false, + "label": "Anchor metro", + "multi": false, + "name": "anchor", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "500", + "value": "500" + }, + "description": "Radius from the anchor metro for selecting servers", + "hide": 0, + "label": "Radius (kM)", + "name": "radius", + "options": [ + { + "selected": true, + "text": "500", + "value": "500" + } + ], + "query": "500", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": true, + "text": [ + "den02 (0.0 US) 3356 Level 3 Parent, LLC", + "den04 (0.0 US) 6461 Zayo Bandwidth", + "den05 (0.0 US) 1299 Telia Company AB" + ], + "value": [ + "den02", + "den04", + "den05" + ] + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "definition": "", + "description": "Manually select server sites within a specified radius of the anchor metro.", + "hide": 0, + "includeAll": false, + "label": "Servers", + "multi": true, + "name": "region", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t %t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(CountryCode), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n -- Uses ${datasource} implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": true, + "text": "10", + "value": "10" + }, + "description": "Number of ISPs to include", + "hide": 0, + "includeAll": false, + "label": "Client ISPs", + "multi": false, + "name": "ISPcount", + "options": [ + { + "selected": false, + "text": "0", + "value": "0" + }, + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "2", + "value": "2" + }, + { + "selected": false, + "text": "5", + "value": "5" + }, + { + "selected": true, + "text": "10", + "value": "10" + }, + { + "selected": false, + "text": "20", + "value": "20" + }, + { + "selected": false, + "text": "50", + "value": "50" + } + ], + "query": "0,1,2,5,10,20,50", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": true, + "text": [ + "13335 Cloudflare, Inc ", + "7922 Comcast Cable Communications, LLC" + ], + "value": [ + "13335 Cloudflare, Inc ", + "7922 Comcast Cable Communications, LLC" + ] + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "definition": "", + "description": "Choose high volume Client ISPs. ", + "hide": 0, + "includeAll": false, + "label": "Client ISPs", + "multi": true, + "name": "ClientISP", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "\nSELECT\n ISPname AS text,\n-- Uses \"${datasource}\" Implicitly\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"^(${anchor:regex})\", ${ISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "hour", + "value": "hour" + }, + "description": "Time bin size. Future may support diurnal summing.", + "hide": 0, + "includeAll": false, + "label": "Time Axis", + "multi": false, + "name": "xAxis", + "options": [ + { + "selected": false, + "text": "day", + "value": "day" + }, + { + "selected": true, + "text": "hour", + "value": "hour" + } + ], + "query": "day,hour", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "yes", + "value": "yes" + }, + "description": "Show or hide MSI stats in the table view", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "verbose", + "options": [ + { + "selected": true, + "text": "yes", + "value": "yes" + }, + { + "selected": false, + "text": "no", + "value": "no" + } + ], + "query": "yes, no", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "50", + "value": "50" + }, + "hide": 2, + "includeAll": false, + "multi": false, + "name": "binSize", + "options": [ + { + "selected": true, + "text": "50", + "value": "50" + }, + { + "selected": false, + "text": "1", + "value": "1" + } + ], + "query": "50, 1", + "skipUrlSync": false, + "type": "custom" + }, + { + "hide": 2, + "name": "detailURL", + "query": "/d/20250114a?orgId=1", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-30d", + "to": "now-3d" + }, + "timepicker": { + "hidden": false, + "nowDelay": "3d", + "refresh_intervals": [ + "1d", + "2d", + "7d" + ] + }, + "timezone": "utc", + "title": "EXP Time Series", + "uid": "becs8jrn7r75sc", + "version": 28, + "weekStart": "" +} diff --git a/grafana-public/dashboards/regional-calibration-dashboard.json b/grafana-public/dashboards/regional-calibration-dashboard.json new file mode 100644 index 0000000..d017ee5 --- /dev/null +++ b/grafana-public/dashboards/regional-calibration-dashboard.json @@ -0,0 +1,840 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "Find server pairs with minimal deltas circa an anchor metro.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 534, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "xIXR1_LMz" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 121, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "# Regional Calibration Dashboard \n\n### MLab Internal version\nCAUTION this version changes frequently\n\nScroll for more info.\n\nScan all selected sites to find triplets: target Site, second Site and ClientISP;\nwhere both servers provide similar measures of the ClientISP.\nThese are indicated by small KSdistance (robust but it has weak intutive meaning) and spread.\nSpead is the ratio of the mean performances, and can be drirectly interperted as such.\nHowever spread by itself is subject to false pass,\nbecause two ISPs can have very different distrabution and the same mean performances.\n\nThis dashboard it prone to false results, for example if the radius is too large or you scan too many client ISPs\nit might find irrevant matches.\nIt doesn't include sufficient consistency checks,\nfor example confirming that the second site is an appropriate benchmark for the targetSite:\nthat its performance is comperable or above othe sites in the region.\n\nThere is also an underlying assumption that needs to be explored:\nIn regions where there is poor interconnection, how do you define calibration,\nwhen many Clients have poor connectivity to many site?\n\nTODO:\n- Resolve language around spread, ratio, inverse and change.\n- Add some metric of the high performance tail (e.g. the 95 percentile) to be sure that we are not calibrating truncated distrabutions. \n- Add links to the the proper regional details dashboards.\n- Tinker with the scatter plot tool tips. Can they be more useful?\n\nFor more information see the\n[slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).", + "mode": "markdown" + }, + "pluginVersion": "11.1.3", + "type": "text" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "The inverse ratio is the mean of the alternate site divided by the mean of the target site. Ideally it should be close to 1.0.\nHigher values mean the target site is worse than the alternate site. This plot excludes sites where the target is better than the alternate (inverse < 1.0).", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": true, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMin": 1, + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "pointSize": { + "fixed": 3 + }, + "scaleDistribution": { + "type": "linear" + }, + "show": "points" + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 122, + "options": { + "dims": { + "x": "spread" + }, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "series": [ + { + "x": "inverse", + "y": "KSdistance" + } + ], + "seriesMapping": "manual", + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "\nSELECT *\n-- FROM `${dataset}.cached_metro_report`(\"MeanThroughputMBPS\", \"${site:regex}\", ${ISPcount})\nFROM `${dataset}.calibration_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\",${radius}, ${ISPcount})\nWHERE inverse >= 1.0\n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Scatter plot of KSdistance and inverse ratio", + "type": "xychart" + }, + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "description": "KSdistance should be near 0, and spread should be near 1.0. If not, suspect a calibration problem. \n\nThis version contains some experimental columns (inverse, ratio and change) because both spread and KSdistance are symmetrical. We need to know if target site is better or worse than the alternate site.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "rank" + }, + "properties": [ + { + "id": "custom.width", + "value": 45 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "custom.width", + "value": 261 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "tests" + }, + "properties": [ + { + "id": "custom.width", + "value": 71 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Percent" + }, + "properties": [ + { + "id": "custom.width", + "value": 67 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "metro" + }, + "properties": [ + { + "id": "custom.width", + "value": 55 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Pct" + }, + "properties": [ + { + "id": "custom.width", + "value": 35 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ISPrank" + }, + "properties": [ + { + "id": "custom.width", + "value": 70 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "percent" + }, + "properties": [ + { + "id": "custom.width", + "value": 69 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "KSdistance" + }, + "properties": [ + { + "id": "custom.width", + "value": 104 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Spread" + }, + "properties": [ + { + "id": "custom.width", + "value": 68 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pct" + }, + "properties": [ + { + "id": "custom.width", + "value": 37 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 246 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Sites" + }, + "properties": [ + { + "id": "custom.width", + "value": 47 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "calKS" + }, + "properties": [ + { + "id": "custom.width", + "value": 68 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Gmean" + }, + "properties": [ + { + "id": "custom.width", + "value": 66 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "level" + }, + "properties": [ + { + "id": "custom.width", + "value": 142 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "KSoutlier" + }, + "properties": [ + { + "id": "custom.width", + "value": 201 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Metric" + }, + "properties": [ + { + "id": "custom.width", + "value": 174 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "SPoutlier" + }, + "properties": [ + { + "id": "custom.width", + "value": 196 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "targetSite" + }, + "properties": [ + { + "id": "custom.width", + "value": 162 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "spread" + }, + "properties": [ + { + "id": "custom.width", + "value": 101 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "inverse" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "ratio" + }, + "properties": [ + { + "id": "custom.width", + "value": 98 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "change" + }, + "properties": [ + { + "id": "custom.width", + "value": 81 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "distance" + }, + "properties": [ + { + "id": "custom.width", + "value": 92 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "triplets" + }, + "properties": [ + { + "id": "custom.width", + "value": 113 + } + ] + } + ] + }, + "gridPos": { + "h": 26, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 20, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "spread" + } + ] + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-oti", + "rawQuery": true, + "rawSql": "\nSELECT * \n-- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\nFROM `${dataset}.calibration_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\",${radius}, ${ISPcount}) \n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Calibration report", + "type": "table" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Google BigQuery (mlab-collaboration)", + "value": "P116E76923C5457A4" + }, + "hide": 1, + "includeAll": false, + "multi": false, + "name": "datasource", + "options": [], + "query": "grafana-bigquery-datasource", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "hide": 2, + "name": "dataset", + "query": "mlab-collaboration.mm_preproduction", + "skipUrlSync": false, + "type": "constant" + }, + { + "current": { + "selected": false, + "text": "cached", + "value": "cached" + }, + "description": "Select processing stack version", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "method", + "options": [ + { + "selected": true, + "text": "cached", + "value": "cached" + }, + { + "selected": false, + "text": "live", + "value": "live" + }, + { + "selected": false, + "text": "experimental", + "value": "experimental" + } + ], + "query": "cached, live, experimental", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + "description": "Select the 4th data column. (Linear fields don't display correctly.) \nMethod must be set to experimental FIRST.", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "field", + "options": [ + { + "selected": true, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + } + ], + "query": "MeanThroughputMbps, uploadMeanThroughputMbps, LossRate", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "${datasource}" + }, + "definition": "", + "description": "Used to select Client ISPs to be evaluated in region. ", + "hide": 0, + "includeAll": true, + "label": "Region", + "multi": true, + "name": "region", + "options": [], + "query": { + "editorMode": "code", + "format": 1, + "location": "", + "project": "measurement-lab", + "rawQuery": true, + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "refId": "tempvar", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "100", + "value": "100" + }, + "description": "Radius from the anchor metro for selecting servers", + "hide": 0, + "label": "Radius (kM)", + "name": "radius", + "options": [ + { + "selected": true, + "text": "100", + "value": "100" + } + ], + "query": "100", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": false, + "text": "none", + "value": "none" + }, + "description": "Select time granularity for some experimental queries. ", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "xAxis", + "options": [ + { + "selected": true, + "text": "none", + "value": "none" + }, + { + "selected": false, + "text": "day", + "value": "day" + }, + { + "selected": false, + "text": "hour", + "value": "hour" + } + ], + "query": "none, day, hour", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": "400", + "current": { + "selected": false, + "text": "5", + "value": "5" + }, + "description": "Number of ISPs to include when searching for calibration triplets", + "hide": 0, + "includeAll": false, + "label": "", + "multi": false, + "name": "ISPcount", + "options": [ + { + "selected": true, + "text": "5", + "value": "5" + }, + { + "selected": false, + "text": "2", + "value": "2" + }, + { + "selected": false, + "text": "10", + "value": "10" + } + ], + "query": "5, 2, 10", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "description": "Shim", + "hide": 2, + "name": "binSize", + "query": "50", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-90d", + "to": "now" + }, + "timepicker": { + "hidden": false + }, + "timezone": "utc", + "title": "MLab Regional Calibration Dashboard", + "uid": "eeuzfimjclgqoa", + "version": 11, + "weekStart": "" +} diff --git a/grafana-public/dashboards/regional-details-dshboard.json b/grafana-public/dashboards/regional-details-dshboard.json index f504bed..ec026e6 100644 --- a/grafana-public/dashboards/regional-details-dshboard.json +++ b/grafana-public/dashboards/regional-details-dshboard.json @@ -75,8 +75,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -178,8 +177,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -293,7 +291,7 @@ "properties": [ { "id": "custom.width", - "value": 109 + "value": 91 } ] }, @@ -317,7 +315,7 @@ "properties": [ { "id": "custom.width", - "value": 51 + "value": 37 } ] }, @@ -341,7 +339,7 @@ "properties": [ { "id": "custom.width", - "value": 52 + "value": 47 } ] }, @@ -377,7 +375,7 @@ "properties": [ { "id": "custom.width", - "value": 157 + "value": 142 } ] }, @@ -389,7 +387,7 @@ "properties": [ { "id": "custom.width", - "value": 203 + "value": 201 } ] }, @@ -401,7 +399,19 @@ "properties": [ { "id": "custom.width", - "value": 177 + "value": 174 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "SPoutlier" + }, + "properties": [ + { + "id": "custom.width", + "value": 196 } ] } @@ -439,7 +449,7 @@ "location": "", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", + "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, SPoutlier, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE ${verbose} OR level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", "refId": "A", "sql": { "columns": [ @@ -858,8 +868,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -2.02, - 3.9599999999999995 + -1.9199999999999995, + 3.62 ], "showspikes": false, "type": "log" @@ -966,12 +976,103 @@ "skipUrlSync": false, "type": "constant" }, + { + "current": { + "selected": false, + "text": "cached", + "value": "cached" + }, + "description": "Select processing stack version", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "method", + "options": [ + { + "selected": true, + "text": "cached", + "value": "cached" + }, + { + "selected": false, + "text": "live", + "value": "live" + }, + { + "selected": false, + "text": "experimental", + "value": "experimental" + } + ], + "query": "cached, live, experimental", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + "description": "Select the 4th data column. (Linear fields don't display correctly.) \nMethod must be set to experimental FIRST.", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "field", + "options": [ + { + "selected": false, + "text": "MinRTT", + "value": "MinRTT" + }, + { + "selected": true, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + }, + { + "selected": false, + "text": "linearMinRTT", + "value": "linearMinRTT" + }, + { + "selected": false, + "text": "linearMSS", + "value": "linearMSS" + }, + { + "selected": false, + "text": "RTO", + "value": "RTO" + }, + { + "selected": false, + "text": "fineMeanThroughputMbps", + "value": "fineMeanThroughputMbps" + } + ], + "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, fineMeanThroughputMbps", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, { "allValue": ".*", "current": { "selected": false, - "text": "sin AS Singapore, SG", - "value": "sin" + "text": "gru SA Sao Paulo, BR", + "value": "gru" }, "datasource": { "type": "grafana-bigquery-datasource", @@ -1020,8 +1121,8 @@ { "current": { "selected": false, - "text": "1000", - "value": "1000" + "text": "500", + "value": "500" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, @@ -1029,12 +1130,12 @@ "name": "radius", "options": [ { - "selected": false, + "selected": true, "text": "500", "value": "500" } ], - "query": "1000", + "query": "500", "skipUrlSync": false, "type": "textbox" }, @@ -1042,14 +1143,22 @@ "current": { "selected": true, "text": [ - "sin01 (0.0 SG) 6453 TATA COMMUNICATIONS (AMERICA) INC", - "sin03 (0.0 SG) 15169 Google LLC", - "sin54825 (0.0 SG) 54825 (missing)" + "gru02 (0.0 BR) 262589 INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", + "gru03 (0.0 BR) 6762 TELECOM ITALIA SPARKLE S p A ", + "gru06 (0.0 BR) 396982 Google LLC", + "gru1916 (0.0 BR) 1916 (missing)", + "gig1916 (336.0 BR) 1916 (missing)", + "cwb10881 (360.0 BR) 10881 (missing)", + "cnf1916 (495.0 BR) 1916 (missing)" ], "value": [ - "sin01", - "sin03", - "sin54825" + "gru02", + "gru03", + "gru06", + "gru1916", + "gig1916", + "cwb10881", + "cnf1916" ] }, "datasource": { @@ -1165,28 +1274,18 @@ "current": { "selected": true, "text": [ - "7713 PT Telekomunikasi Indonesia", - "131445 Advance Wireless Network", - "17552 TRUE INTERNET CO , LTD ", - "132618 Real Future Company Limited", - "23693 PT Telekomunikasi Selular", - "133481 AIS Fibre", - "24378 Total Access Communication PLC ", - "45758 Triple T Internet Triple T Broadband", - "132061 Realmove Company Limited", - "4761 INDOSAT Internet Network Provider" + "28573 CLARO S A ", + "18881 TELEFÔNICA BRASIL S A", + "26599 TELEFÔNICA BRASIL S A", + "26615 Tim Celular S A ", + "27699 TELEFÔNICA BRASIL S A" ], "value": [ - "7713 PT Telekomunikasi Indonesia", - "131445 Advance Wireless Network", - "17552 TRUE INTERNET CO , LTD ", - "132618 Real Future Company Limited", - "23693 PT Telekomunikasi Selular", - "133481 AIS Fibre", - "24378 Total Access Communication PLC ", - "45758 Triple T Internet Triple T Broadband", - "132061 Realmove Company Limited", - "4761 INDOSAT Internet Network Provider" + "28573 CLARO S A ", + "18881 TELEFÔNICA BRASIL S A", + "26599 TELEFÔNICA BRASIL S A", + "26615 Tim Celular S A ", + "27699 TELEFÔNICA BRASIL S A" ] }, "datasource": { @@ -1233,97 +1332,6 @@ "sort": 0, "type": "query" }, - { - "current": { - "selected": false, - "text": "cached", - "value": "cached" - }, - "description": "Select processing stack version", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "method", - "options": [ - { - "selected": true, - "text": "cached", - "value": "cached" - }, - { - "selected": false, - "text": "live", - "value": "live" - }, - { - "selected": false, - "text": "experimental", - "value": "experimental" - } - ], - "query": "cached, live, experimental", - "queryValue": "", - "skipUrlSync": false, - "type": "custom" - }, - { - "current": { - "selected": false, - "text": "MeanThroughputMbps", - "value": "MeanThroughputMbps" - }, - "description": "Select the 4th data column. (Linear fields don't display correctly.) \nMethod must be set to experimental FIRST.", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "field", - "options": [ - { - "selected": false, - "text": "MinRTT", - "value": "MinRTT" - }, - { - "selected": true, - "text": "MeanThroughputMbps", - "value": "MeanThroughputMbps" - }, - { - "selected": false, - "text": "uploadMeanThroughputMbps", - "value": "uploadMeanThroughputMbps" - }, - { - "selected": false, - "text": "LossRate", - "value": "LossRate" - }, - { - "selected": false, - "text": "linearMinRTT", - "value": "linearMinRTT" - }, - { - "selected": false, - "text": "linearMSS", - "value": "linearMSS" - }, - { - "selected": false, - "text": "RTO", - "value": "RTO" - }, - { - "selected": false, - "text": "fineMeanThroughputMbps", - "value": "fineMeanThroughputMbps" - } - ], - "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, fineMeanThroughputMbps", - "queryValue": "", - "skipUrlSync": false, - "type": "custom" - }, { "current": { "selected": false, @@ -1431,6 +1439,34 @@ "query": "50", "skipUrlSync": false, "type": "constant" + }, + { + "current": { + "selected": false, + "text": "false", + "value": "false" + }, + "description": "Show more detail in the result table", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "verbose", + "options": [ + { + "selected": true, + "text": "false", + "value": "false" + }, + { + "selected": false, + "text": "true", + "value": "true" + } + ], + "query": "false, true", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" } ] }, @@ -1444,6 +1480,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 59, + "version": 65, "weekStart": "" } From ff1b17e6c02f327489f70820fbbd988b35b0c60a Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Sun, 31 Aug 2025 11:54:56 -0700 Subject: [PATCH 05/12] Big round of mostly small updates to four dashboards --- .../dashboards/exp-time-series.json | 50 ++- .../dashboards/global-metro-bar-chart.json | 9 +- .../dashboards/metro-details-dashboard.json | 54 +-- .../regional-calibration-dashboard.json | 30 +- ...d.json => regional-details-dashboard.json} | 322 +++++++----------- 5 files changed, 217 insertions(+), 248 deletions(-) rename grafana-public/dashboards/{regional-details-dshboard.json => regional-details-dashboard.json} (90%) diff --git a/grafana-public/dashboards/exp-time-series.json b/grafana-public/dashboards/exp-time-series.json index b9da9ef..e81eada 100644 --- a/grafana-public/dashboards/exp-time-series.json +++ b/grafana-public/dashboards/exp-time-series.json @@ -29,6 +29,30 @@ "links": [], "liveNow": false, "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "xIXR1_LMz" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 25, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "# Experimental Time Series \n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nAlthough it has not be investigated carefully,\nthis sample data is believed to be the consequence of\nroute flapping between two paths that have small but not identical RTTs.\nIt may not have any operational consequences.\n\nTODO: A way to do a transverse cut of this data: a metro dashboard slice of a single hour of this timeseries.", + "mode": "markdown" + }, + "pluginVersion": "11.1.3", + "type": "text" + }, { "datasource": { "type": "grafana-bigquery-datasource", @@ -106,7 +130,7 @@ "h": 8, "w": 23, "x": 0, - "y": 0 + "y": 8 }, "id": 23, "links": [ @@ -232,7 +256,7 @@ "h": 12, "w": 23, "x": 0, - "y": 8 + "y": 16 }, "id": 24, "links": [ @@ -495,7 +519,7 @@ "h": 10, "w": 23, "x": 0, - "y": 20 + "y": 28 }, "id": 22, "options": { @@ -581,7 +605,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "experimental", "value": "experimental" }, @@ -613,7 +637,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "MinRTT", "value": "MinRTT" }, @@ -675,7 +699,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "den NA Denver, US", "value": "den" }, @@ -804,7 +828,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "10", "value": "10" }, @@ -860,12 +884,12 @@ "current": { "selected": true, "text": [ - "13335 Cloudflare, Inc ", - "7922 Comcast Cable Communications, LLC" + "7922 Comcast Cable Communications, LLC", + "13335 Cloudflare, Inc " ], "value": [ - "13335 Cloudflare, Inc ", - "7922 Comcast Cable Communications, LLC" + "7922 Comcast Cable Communications, LLC", + "13335 Cloudflare, Inc " ] }, "datasource": { @@ -1005,7 +1029,7 @@ ] }, "time": { - "from": "now-30d", + "from": "now-10d", "to": "now-3d" }, "timepicker": { @@ -1020,6 +1044,6 @@ "timezone": "utc", "title": "EXP Time Series", "uid": "becs8jrn7r75sc", - "version": 28, + "version": 29, "weekStart": "" } diff --git a/grafana-public/dashboards/global-metro-bar-chart.json b/grafana-public/dashboards/global-metro-bar-chart.json index f23d218..28ee022 100644 --- a/grafana-public/dashboards/global-metro-bar-chart.json +++ b/grafana-public/dashboards/global-metro-bar-chart.json @@ -47,8 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - - "content": "# Global Metro Bar Chart \n\n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\n\nFor more information scroll down or see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nEvaluate the interconnections between ISPs by measuring differences in performance to MLab servers\nfrom each of the N largest Client ISPs in the metro.\nIf the score is poor it means that users attached to a some ISPs get different performances\nto the different MLab servers,\nindicating non-uniform connectivity between the ISPs.\n\nThe metrics are: KSdistance (0 is ideal), the worst case vertical distance between the cdf distributions;\nand spread (1 is ideal), the worst case ratio of the geometric means.\nTo make it more visible, KSdistance is scaled 10x,\nsuch that 10 is the worst possible score, indicating non-overlapping distributions.\n\nThis data is precomputed for the date range shown, and can't be adjusted in this version of the dashboard.\n\nTo see the entire MLab fleet select verbose,\nwhich also shows singleton MLab sites that can't be analyzed by this technique.\nThese sites show 0 spread.\n\n\n", + "content": "# Global Metro Bar Chart \n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nEvaluate the interconnections between ISPs by measuring differences in performance to MLab servers\nfrom each of the N largest Client ISPs in the metro.\nIf the score is poor it means that users attached to a some ISPs get different performances\nto the different MLab servers,\nindicating non-uniform connectivity between the ISPs.\n\nThe metrics are: KSdistance (0 is ideal), the worst case vertical distance between the cdf distributions;\nand spread (1 is ideal), the worst case ratio of the geometric means.\nTo make it more visible, KSdistance is scaled 10x,\nsuch that 10 is the worst possible score, indicating non-overlapping distributions.\n\nThis data is precomputed for the date range shown, and can't be adjusted in this version of the dashboard.\n\nTo see the entire MLab fleet select verbose,\nwhich also shows singleton MLab sites that can't be analyzed by this technique.\nThese sites show 0 spread.\n\n\n", "mode": "markdown" }, "pluginVersion": "11.1.3", @@ -430,8 +429,8 @@ { "current": { "selected": false, - "text": "0 2025-02-21 - 2025-02-27 Cached", - "value": "0 2025-02-21 - 2025-02-27 Cached" + "text": "0 2025-08-15 - 2025-08-21 Cached", + "value": "0 2025-08-15 - 2025-08-21 Cached" }, "datasource": { "type": "grafana-bigquery-datasource", @@ -489,6 +488,6 @@ "timezone": "utc", "title": "Global Metro Bar Chart", "uid": "20250110a", - "version": 69, + "version": 70, "weekStart": "" } diff --git a/grafana-public/dashboards/metro-details-dashboard.json b/grafana-public/dashboards/metro-details-dashboard.json index 398bbf3..3d7e7bc 100644 --- a/grafana-public/dashboards/metro-details-dashboard.json +++ b/grafana-public/dashboards/metro-details-dashboard.json @@ -299,8 +299,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0017403859668322157, - 0.0330673333698121 + -0.001827222697686703, + 0.03471723125604736 ], "type": "linear" } @@ -388,8 +388,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0016565652664183963, - 0.03147474006194953 + -0.0016854298777364955, + 0.03202316767699342 ], "type": "linear" } @@ -479,8 +479,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.004170842421741438, - 0.07924600601308732 + -0.004545096417104926, + 0.0863568319249936 ], "type": "linear" } @@ -593,8 +593,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.003892118951050179, - 0.07395026006995341 + -0.004095985075661991, + 0.07782371643757782 ], "type": "linear" } @@ -707,8 +707,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0020762162798916243, - 0.03944810931794086 + -0.0019349580131234672, + 0.03676420224934588 ], "type": "linear" } @@ -821,8 +821,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0041055645079002044, - 0.07800572565010386 + -0.007425127890998792, + 0.14107742992897704 ], "type": "linear" } @@ -935,8 +935,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.010046703595090694, - 0.19088736830672315 + -0.010116948862845436, + 0.19222202839406324 ], "type": "linear" } @@ -1049,8 +1049,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.002008464807632342, - 0.03816083134501449 + -0.002526631691022735, + 0.04800600212943195 ], "type": "linear" } @@ -1178,8 +1178,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.003578265030888367, - 0.06798703558687898 + -0.004373522458628842, + 0.083096926713948 ], "type": "linear" } @@ -1292,8 +1292,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.022880996405958583, - 0.4347389317132131 + -0.023082715244054666, + 0.43857158963703863 ], "type": "linear" } @@ -1406,8 +1406,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.003742125527299506, - 0.07110038501869062 + -0.003332044808452723, + 0.06330885136060174 ], "type": "linear" } @@ -1557,8 +1557,8 @@ { "current": { "selected": false, - "text": "2", - "value": "2" + "text": "5", + "value": "5" }, "description": "Number of ISPs to include - TODO rename the variable", "hide": 0, @@ -1573,12 +1573,12 @@ "value": "1" }, { - "selected": true, + "selected": false, "text": "2", "value": "2" }, { - "selected": false, + "selected": true, "text": "5", "value": "5" }, @@ -1702,6 +1702,6 @@ "timezone": "utc", "title": "Metro Details Dashboard", "uid": "20250114a", - "version": 33, + "version": 34, "weekStart": "" } diff --git a/grafana-public/dashboards/regional-calibration-dashboard.json b/grafana-public/dashboards/regional-calibration-dashboard.json index d017ee5..51395ec 100644 --- a/grafana-public/dashboards/regional-calibration-dashboard.json +++ b/grafana-public/dashboards/regional-calibration-dashboard.json @@ -47,7 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Regional Calibration Dashboard \n\n### MLab Internal version\nCAUTION this version changes frequently\n\nScroll for more info.\n\nScan all selected sites to find triplets: target Site, second Site and ClientISP;\nwhere both servers provide similar measures of the ClientISP.\nThese are indicated by small KSdistance (robust but it has weak intutive meaning) and spread.\nSpead is the ratio of the mean performances, and can be drirectly interperted as such.\nHowever spread by itself is subject to false pass,\nbecause two ISPs can have very different distrabution and the same mean performances.\n\nThis dashboard it prone to false results, for example if the radius is too large or you scan too many client ISPs\nit might find irrevant matches.\nIt doesn't include sufficient consistency checks,\nfor example confirming that the second site is an appropriate benchmark for the targetSite:\nthat its performance is comperable or above othe sites in the region.\n\nThere is also an underlying assumption that needs to be explored:\nIn regions where there is poor interconnection, how do you define calibration,\nwhen many Clients have poor connectivity to many site?\n\nTODO:\n- Resolve language around spread, ratio, inverse and change.\n- Add some metric of the high performance tail (e.g. the 95 percentile) to be sure that we are not calibrating truncated distrabutions. \n- Add links to the the proper regional details dashboards.\n- Tinker with the scatter plot tool tips. Can they be more useful?\n\nFor more information see the\n[slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).", + "content": "# Regional Calibration Dashboard \n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nScan all selected sites to find triplets: target Site, benchmark Site and ClientISP;\nwhere both MLab Sites provide similar measures of the ClientISP.\nThis is indicated by small KSdistance (robust but it has weak intutive meaning) and spread.\nSpead is the ratio of the mean performances, and can be drirectly interperted as such. \ne.g. A spread of 1.01 means the mean measurements are different by 1%.\nHowever spread by itself is subject to false pass results,\nbecause two ISPs can have very different distrabution and the same mean performances.\n\nThis dashboard it prone to false results other ways, for example if the radius is too large or you scan too many client ISPs\nit might find irrevant matches.\nIt doesn't include sufficient consistency checks,\nfor example confirming that the benchmark site is an appropriate for the targetSite and the region:\nthat its performance is comperable or above other sites in the region.\n\nThere is also an underlying assumption that needs to be explored:\nIn regions where there is poor interconnection, how do you define calibration,\nwhen many Clients have poor connectivity to many sites?\n\nTODO:\n- Resolve language around spread, ratio, inverse and change.\n- Add some metric of the high performance tail (e.g. the 95 percentile) to be sure that we are not calibrating truncated distrabutions. \n- Add logic to qualify benchmark sites.\n- Add links to the the proper regional details dashboards.\n- Tinker with the scatter plot tool tips. Can they be more useful?\n\nFor more information see the\n[slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).", "mode": "markdown" }, "pluginVersion": "11.1.3", @@ -607,7 +607,7 @@ }, { "current": { - "selected": false, + "selected": true, "text": "cached", "value": "cached" }, @@ -729,23 +729,35 @@ { "current": { "selected": false, - "text": "100", - "value": "100" + "text": "1", + "value": "1" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, + "includeAll": false, "label": "Radius (kM)", + "multi": false, "name": "radius", "options": [ { "selected": true, + "text": "1", + "value": "1" + }, + { + "selected": false, "text": "100", "value": "100" + }, + { + "selected": false, + "text": "500", + "value": "500" } ], - "query": "100", + "query": "1, 100, 500", "skipUrlSync": false, - "type": "textbox" + "type": "custom" }, { "current": { @@ -754,7 +766,7 @@ "value": "none" }, "description": "Select time granularity for some experimental queries. ", - "hide": 0, + "hide": 2, "includeAll": false, "multi": false, "name": "xAxis", @@ -826,7 +838,7 @@ ] }, "time": { - "from": "now-90d", + "from": "now-24h", "to": "now" }, "timepicker": { @@ -835,6 +847,6 @@ "timezone": "utc", "title": "MLab Regional Calibration Dashboard", "uid": "eeuzfimjclgqoa", - "version": 11, + "version": 12, "weekStart": "" } diff --git a/grafana-public/dashboards/regional-details-dshboard.json b/grafana-public/dashboards/regional-details-dashboard.json similarity index 90% rename from grafana-public/dashboards/regional-details-dshboard.json rename to grafana-public/dashboards/regional-details-dashboard.json index ec026e6..7c8c0fd 100644 --- a/grafana-public/dashboards/regional-details-dshboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -47,100 +47,12 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Regional Details Dashboard \n\n### MLab Internal version\nCAUTION this version changes frequently\n\nScroll for more info.\n\nThe servers (the region) are selected by distance from the Anchor metro.\n\nThe Client ISPs are selected by rank in the Anchor metro.\n\nData is shown for all selected severs cross all selected Client ISPs.\n\nMethod selects the backend; Please select cached.\n\nFor more information see the\n[slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).", + "content": "# Regional Details Dashboard\n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nThe Anchor Metro is used to preselect servers (within the selected radus) and preselect client ISPs (by rank in the anchor metro).\n\nData is shown for all selected Severs cross all selected Client ISPs.\n\nNote that the client data is preselected by rank independently in each metro.\nIf a client ISP's rank differs between metros, some of its data might not be shown.\nTo workaround this, select extra client rows, beyond the last clinetISP that you want to see.\n\nMethod selects the backend: Please use cached.\n", "mode": "markdown" }, "pluginVersion": "11.1.3", "type": "text" }, - { - "datasource": { - "type": "grafana-bigquery-datasource", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 134, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "11.1.3", - "targets": [ - { - "datasource": { - "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" - }, - "editorMode": "code", - "format": 1, - "location": "", - "project": "mlab-collaboration", - "rawQuery": true, - "rawSql": "SELECT \"region:regexp\" AS Name, \"${region:regexp}\" AS Value\n UNION ALL\nSELECT \"ClientISP\", \"${ClientISP}\"\n UNION ALL\nSELECT \"anchor\", \"$anchor\"\n UNION ALL\nSELECT \"anchor:regex\", \"${anchor:regex}\"", - "refId": "A", - "sql": { - "columns": [ - { - "parameters": [], - "type": "function" - } - ], - "groupBy": [ - { - "property": { - "type": "string" - }, - "type": "groupBy" - } - ], - "limit": 50 - } - } - ], - "title": "Diagnostic Panel", - "type": "table" - }, { "collapsed": false, "gridPos": { @@ -177,7 +89,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -449,7 +362,7 @@ "location": "", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, SPoutlier, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE ${verbose} OR level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", + "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, SPoutlier, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${table_field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE ${verbose} OR level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", "refId": "A", "sql": { "columns": [ @@ -535,7 +448,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.055555555555555566, + -0.05555555555555556, 1.0555555555555556 ], "type": "linear" @@ -649,7 +562,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.055555555555555566, + -0.05555555555555556, 1.0555555555555556 ], "type": "linear" @@ -763,7 +676,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.055555555555555566, + -0.05555555555555556, 1.0555555555555556 ], "type": "linear" @@ -868,8 +781,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -1.9199999999999995, - 3.62 + 5.299999999999999, + 7.4799999999999995 ], "showspikes": false, "type": "log" @@ -1009,64 +922,6 @@ "skipUrlSync": false, "type": "custom" }, - { - "current": { - "selected": false, - "text": "MeanThroughputMbps", - "value": "MeanThroughputMbps" - }, - "description": "Select the 4th data column. (Linear fields don't display correctly.) \nMethod must be set to experimental FIRST.", - "hide": 0, - "includeAll": false, - "multi": false, - "name": "field", - "options": [ - { - "selected": false, - "text": "MinRTT", - "value": "MinRTT" - }, - { - "selected": true, - "text": "MeanThroughputMbps", - "value": "MeanThroughputMbps" - }, - { - "selected": false, - "text": "uploadMeanThroughputMbps", - "value": "uploadMeanThroughputMbps" - }, - { - "selected": false, - "text": "LossRate", - "value": "LossRate" - }, - { - "selected": false, - "text": "linearMinRTT", - "value": "linearMinRTT" - }, - { - "selected": false, - "text": "linearMSS", - "value": "linearMSS" - }, - { - "selected": false, - "text": "RTO", - "value": "RTO" - }, - { - "selected": false, - "text": "fineMeanThroughputMbps", - "value": "fineMeanThroughputMbps" - } - ], - "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, fineMeanThroughputMbps", - "queryValue": "", - "skipUrlSync": false, - "type": "custom" - }, { "allValue": ".*", "current": { @@ -1092,7 +947,7 @@ "location": "", "project": "measurement-lab", "rawQuery": true, - "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `mm_preproduction.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", "refId": "tempvar", "sql": { "columns": [ @@ -1121,23 +976,35 @@ { "current": { "selected": false, - "text": "500", - "value": "500" + "text": "1", + "value": "1" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, + "includeAll": false, "label": "Radius (kM)", + "multi": false, "name": "radius", "options": [ { "selected": true, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "100", + "value": "100" + }, + { + "selected": false, "text": "500", "value": "500" } ], - "query": "500", + "query": "1, 100, 500", "skipUrlSync": false, - "type": "textbox" + "type": "custom" }, { "current": { @@ -1146,19 +1013,13 @@ "gru02 (0.0 BR) 262589 INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", "gru03 (0.0 BR) 6762 TELECOM ITALIA SPARKLE S p A ", "gru06 (0.0 BR) 396982 Google LLC", - "gru1916 (0.0 BR) 1916 (missing)", - "gig1916 (336.0 BR) 1916 (missing)", - "cwb10881 (360.0 BR) 10881 (missing)", - "cnf1916 (495.0 BR) 1916 (missing)" + "gru1916 (0.0 BR) 1916 (missing)" ], "value": [ "gru02", "gru03", "gru06", - "gru1916", - "gig1916", - "cwb10881", - "cnf1916" + "gru1916" ] }, "datasource": { @@ -1216,7 +1077,7 @@ "includeAll": false, "label": "Client Rows", "multi": false, - "name": "selectorISPcount", + "name": "ISPcount", "options": [ { "selected": false, @@ -1371,7 +1232,7 @@ "value": "none" }, "description": "Select time granularity for some experimental queries. ", - "hide": 0, + "hide": 2, "includeAll": false, "multi": false, "name": "xAxis", @@ -1398,48 +1259,72 @@ "type": "custom" }, { - "allValue": "400", + "description": "Shim", + "hide": 2, + "name": "binSize", + "query": "50", + "skipUrlSync": false, + "type": "constant" + }, + { "current": { "selected": false, - "text": "All", - "value": "$__all" + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" }, - "description": "Number of ISPs data to scan by name. Must be larger than the ISPCount applied to the ISP selector.", + "description": "Select metric displayed in the table.", "hide": 0, - "includeAll": true, - "label": "", + "includeAll": false, + "label": "Table Field", "multi": false, - "name": "ISPcount", + "name": "table_field", "options": [ + { + "selected": false, + "text": "MinRTT", + "value": "MinRTT" + }, { "selected": true, - "text": "All", - "value": "$__all" + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + }, + { + "selected": false, + "text": "linearMinRTT", + "value": "linearMinRTT" + }, + { + "selected": false, + "text": "linearMSS", + "value": "linearMSS" }, { "selected": false, - "text": "(10*2)", - "value": "(10*2)" + "text": "RTO", + "value": "RTO" }, { "selected": false, - "text": "(10*4)", - "value": "(10*4)" + "text": "fineMeanThroughputMbps", + "value": "fineMeanThroughputMbps" } ], - "query": "(${selectorISPcount}*2), (${selectorISPcount}*4)", + "query": "MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, linearMinRTT, linearMSS, RTO, fineMeanThroughputMbps", "queryValue": "", "skipUrlSync": false, "type": "custom" }, - { - "description": "Shim", - "hide": 2, - "name": "binSize", - "query": "50", - "skipUrlSync": false, - "type": "constant" - }, { "current": { "selected": false, @@ -1467,12 +1352,61 @@ "queryValue": "", "skipUrlSync": false, "type": "custom" + }, + { + "current": { + "selected": false, + "text": "none", + "value": "none" + }, + "description": "Select the 4th data column.\nMost choices are not supported when using cached data", + "hide": 0, + "includeAll": false, + "label": "Fourth column", + "multi": false, + "name": "field", + "options": [ + { + "selected": true, + "text": "none", + "value": "none" + }, + { + "selected": false, + "text": "MinRTT", + "value": "MinRTT" + }, + { + "selected": false, + "text": "MeanThroughputMbps", + "value": "MeanThroughputMbps" + }, + { + "selected": false, + "text": "uploadMeanThroughputMbps", + "value": "uploadMeanThroughputMbps" + }, + { + "selected": false, + "text": "LossRate", + "value": "LossRate" + }, + { + "selected": false, + "text": "RTO", + "value": "RTO" + } + ], + "query": "none, MinRTT, MeanThroughputMbps, uploadMeanThroughputMbps, LossRate, RTO", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" } ] }, "time": { - "from": "2025-06-04T00:00:00.000Z", - "to": "2025-06-10T00:00:00.000Z" + "from": "now-24h", + "to": "now" }, "timepicker": { "hidden": false @@ -1480,6 +1414,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 65, + "version": 69, "weekStart": "" } From a9d6df3dacbd803490fb8575e6093cccd9a4565b Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Sun, 31 Aug 2025 20:38:13 -0700 Subject: [PATCH 06/12] Test fix to regional details (toggle BQ source selector) --- grafana-public/dashboards/regional-details-dashboard.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index 7c8c0fd..4171873 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -866,7 +866,7 @@ "list": [ { "current": { - "selected": false, + "selected": true, "text": "Google BigQuery (mlab-collaboration)", "value": "P116E76923C5457A4" }, @@ -931,7 +931,7 @@ }, "datasource": { "type": "grafana-bigquery-datasource", - "uid": "${datasource}" + "uid": "P116E76923C5457A4" }, "definition": "", "description": "Used to select Client ISPs to be evaluated in region. ", @@ -1414,6 +1414,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 69, + "version": 70, "weekStart": "" } From 6bec1ca5b03936a35f88acb55fcd0f64b8994e6f Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Sun, 31 Aug 2025 21:25:41 -0700 Subject: [PATCH 07/12] debugging fixes to regional details and timeseries dashboards --- .../dashboards/exp-time-series.json | 24 ++++++++++++++----- .../regional-details-dashboard.json | 6 ++--- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/grafana-public/dashboards/exp-time-series.json b/grafana-public/dashboards/exp-time-series.json index e81eada..dfa4b8a 100644 --- a/grafana-public/dashboards/exp-time-series.json +++ b/grafana-public/dashboards/exp-time-series.json @@ -749,28 +749,40 @@ }, { "current": { - "selected": true, + "selected": false, "text": "500", "value": "500" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, + "includeAll": false, "label": "Radius (kM)", + "multi": false, "name": "radius", "options": [ + { + "selected": false, + "text": "1", + "value": "1" + }, + { + "selected": false, + "text": "100", + "value": "100" + }, { "selected": true, "text": "500", "value": "500" } ], - "query": "500", + "query": "1, 100, 500", "skipUrlSync": false, - "type": "textbox" + "type": "custom" }, { "current": { - "selected": true, + "selected": false, "text": [ "den02 (0.0 US) 3356 Level 3 Parent, LLC", "den04 (0.0 US) 6461 Zayo Bandwidth", @@ -882,7 +894,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": [ "7922 Comcast Cable Communications, LLC", "13335 Cloudflare, Inc " @@ -1044,6 +1056,6 @@ "timezone": "utc", "title": "EXP Time Series", "uid": "becs8jrn7r75sc", - "version": 29, + "version": 30, "weekStart": "" } diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index 4171873..f81c056 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -866,7 +866,7 @@ "list": [ { "current": { - "selected": true, + "selected": false, "text": "Google BigQuery (mlab-collaboration)", "value": "P116E76923C5457A4" }, @@ -1167,7 +1167,7 @@ "location": "", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nSELECT\n ISPname AS text,\n-- Uses ${datasource} Implicitly\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${anchor:regex}\", ${selectorISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", + "rawSql": "\nSELECT\n ISPname AS text,\n-- Uses ${datasource} Implicitly\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${anchor:regex}\", ${ISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", "refId": "tempvar", "sql": { "columns": [ @@ -1414,6 +1414,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 70, + "version": 71, "weekStart": "" } From 06976a18c2d2375d4be9e4cef608b0adeb66a19e Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Mon, 1 Sep 2025 14:09:35 -0700 Subject: [PATCH 08/12] added diagnostic panel to regional dashboard --- .../regional-details-dashboard.json | 128 +++++++++++++++--- 1 file changed, 109 insertions(+), 19 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index f81c056..2990d32 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -54,17 +54,107 @@ "type": "text" }, { - "collapsed": false, + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "custom.width", + "value": 135 + } + ] + } + ] + }, "gridPos": { "h": 1, - "w": 24, - "x": 0, - "y": 6 + "w": 1, + "x": 12, + "y": 0 }, - "id": 32, - "panels": [], - "title": "Metro Summary Statistics -- Aggregated by the entire metro, MLab Sites and Client ISPs", - "type": "row" + "id": 154, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "11.1.3", + "targets": [ + { + "datasource": { + "type": "grafana-bigquery-datasource", + "uid": "P116E76923C5457A4" + }, + "editorMode": "code", + "format": 1, + "location": "", + "project": "mlab-collaboration", + "rawQuery": true, + "rawSql": "SELECT \"{datasource}\" AS name, \"${datasource}\" AS VALUE\nUNION ALL SELECT \"{dataset}\", \"${dataset}\"\nUNION ALL SELECT \"{anchor}\", \"${anchor}\"\nUNION ALL SELECT \"{region:regex}\", \"${region:regex}\"\nUNION ALL SELECT \"{ClientISP:regex}\", \"${ClientISP:regex}\"\n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": ". . . . . Diagnostic Panel", + "type": "table" }, { "datasource": { @@ -334,7 +424,7 @@ "h": 9, "w": 24, "x": 0, - "y": 7 + "y": 6 }, "id": 20, "options": { @@ -392,7 +482,7 @@ "h": 1, "w": 24, "x": 0, - "y": 16 + "y": 15 }, "id": 34, "panels": [], @@ -411,7 +501,7 @@ "h": 13, "w": 6, "x": 0, - "y": 17 + "y": 16 }, "id": 81, "maxDataPoints": 80000, @@ -525,7 +615,7 @@ "h": 13, "w": 6, "x": 6, - "y": 17 + "y": 16 }, "id": 48, "maxDataPoints": 80000, @@ -639,7 +729,7 @@ "h": 13, "w": 6, "x": 12, - "y": 17 + "y": 16 }, "id": 43, "maxDataPoints": 80000, @@ -753,7 +843,7 @@ "h": 13, "w": 6, "x": 18, - "y": 17 + "y": 16 }, "id": 133, "maxDataPoints": 80000, @@ -866,7 +956,7 @@ "list": [ { "current": { - "selected": false, + "selected": true, "text": "Google BigQuery (mlab-collaboration)", "value": "P116E76923C5457A4" }, @@ -1068,7 +1158,7 @@ }, { "current": { - "selected": false, + "selected": true, "text": "10", "value": "10" }, @@ -1135,15 +1225,15 @@ "current": { "selected": true, "text": [ - "28573 CLARO S A ", "18881 TELEFÔNICA BRASIL S A", + "28573 CLARO S A ", "26599 TELEFÔNICA BRASIL S A", "26615 Tim Celular S A ", "27699 TELEFÔNICA BRASIL S A" ], "value": [ - "28573 CLARO S A ", "18881 TELEFÔNICA BRASIL S A", + "28573 CLARO S A ", "26599 TELEFÔNICA BRASIL S A", "26615 Tim Celular S A ", "27699 TELEFÔNICA BRASIL S A" @@ -1414,6 +1504,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 71, + "version": 74, "weekStart": "" } From bb0378760264db85953b61681c29a60495a1c198 Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Mon, 1 Sep 2025 15:50:27 -0700 Subject: [PATCH 09/12] Remove all explist references to datasource --- .../regional-details-dashboard.json | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index 2990d32..3725208 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -132,7 +132,7 @@ "location": "", "project": "mlab-collaboration", "rawQuery": true, - "rawSql": "SELECT \"{datasource}\" AS name, \"${datasource}\" AS VALUE\nUNION ALL SELECT \"{dataset}\", \"${dataset}\"\nUNION ALL SELECT \"{anchor}\", \"${anchor}\"\nUNION ALL SELECT \"{region:regex}\", \"${region:regex}\"\nUNION ALL SELECT \"{ClientISP:regex}\", \"${ClientISP:regex}\"\n", + "rawSql": "SELECT \"{dataset}\" AS name, \"${dataset}\" AS value\nUNION ALL SELECT \"{anchor}\", \"${anchor}\"\nUNION ALL SELECT \"{region:regex}\", \"${region:regex}\"\nUNION ALL SELECT \"{ClientISP:regex}\", \"${ClientISP:regex}\"\n# SELECT \"{datasou rce}\" \"${datasou rce}\" AS VALUE", "refId": "A", "sql": { "columns": [ @@ -538,7 +538,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555556, + -0.05555555555555555, 1.0555555555555556 ], "type": "linear" @@ -652,7 +652,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555556, + -0.05555555555555555, 1.0555555555555556 ], "type": "linear" @@ -766,7 +766,7 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555556, + -0.05555555555555555, 1.0555555555555556 ], "type": "linear" @@ -1016,8 +1016,8 @@ "allValue": ".*", "current": { "selected": false, - "text": "gru SA Sao Paulo, BR", - "value": "gru" + "text": "bom AS Mumbai, IN", + "value": "bom" }, "datasource": { "type": "grafana-bigquery-datasource", @@ -1037,7 +1037,7 @@ "location": "", "project": "measurement-lab", "rawQuery": true, - "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n -- Uses ${datasource} implicitly\n FROM `mm_preproduction.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", "refId": "tempvar", "sql": { "columns": [ @@ -1065,9 +1065,9 @@ }, { "current": { - "selected": false, - "text": "1", - "value": "1" + "selected": true, + "text": "500", + "value": "500" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, @@ -1077,7 +1077,7 @@ "name": "radius", "options": [ { - "selected": true, + "selected": false, "text": "1", "value": "1" }, @@ -1087,12 +1087,13 @@ "value": "100" }, { - "selected": false, + "selected": true, "text": "500", "value": "500" } ], "query": "1, 100, 500", + "queryValue": "", "skipUrlSync": false, "type": "custom" }, @@ -1100,16 +1101,18 @@ "current": { "selected": true, "text": [ - "gru02 (0.0 BR) 262589 INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", - "gru03 (0.0 BR) 6762 TELECOM ITALIA SPARKLE S p A ", - "gru06 (0.0 BR) 396982 Google LLC", - "gru1916 (0.0 BR) 1916 (missing)" + "bom02 (0.0 IN) 4755 TATA Communications formerly VSNL is Leading ISP", + "bom04 (0.0 IN) 55836 Reliance Jio Infocomm Limited", + "bom06 (0.0 IN) 396982 Google LLC", + "bom149251 (0.0 IN) 149251 (missing)", + "isk140204 (158.0 IN) 140204 (missing)" ], "value": [ - "gru02", - "gru03", - "gru06", - "gru1916" + "bom02", + "bom04", + "bom06", + "bom149251", + "isk140204" ] }, "datasource": { @@ -1130,7 +1133,7 @@ "location": "", "project": "mlab-collaboration", "rawQuery": true, - "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t %t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(CountryCode), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n -- Uses ${datasource} implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", + "rawSql": " SELECT\n # FORMAT ('TEXT=\"%t (%t) %t\" VALUE=%t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(ASName), site) AS LongText,\n site AS value,\n FORMAT ('%t (%t %t) %t', site, ANY_VALUE(ROUND(distance)), ANY_VALUE(CountryCode), ANY_VALUE(ASName)) AS text\n FROM (\n SELECT\n ST_DISTANCE(\n ( SELECT ANY_VALUE(ST_GEOGPOINT(Longitude, Latitude))\n FROM `${dataset}.cached_metadata`\n WHERE REGEXP_CONTAINS ( site, \"^(${anchor:regex})\" )),\n ST_GEOGPOINT(Longitude, Latitude)\n ) / 1000.0 AS distance,\n *\n -- Uses ${datasource} Implicitly\n FROM `mlab-collaboration.mm_preproduction.cached_metadata`\n ORDER BY distance, site\n)\nWHERE distance < ${radius}\nGROUP BY site\n", "refId": "tempvar", "sql": { "columns": [ @@ -1225,18 +1228,18 @@ "current": { "selected": true, "text": [ - "18881 TELEFÔNICA BRASIL S A", - "28573 CLARO S A ", - "26599 TELEFÔNICA BRASIL S A", - "26615 Tim Celular S A ", - "27699 TELEFÔNICA BRASIL S A" + "55836 Reliance Jio Infocomm Limited", + "45609 Bharti Airtel Ltd AS for GPRS Service", + "24560 Bharti Airtel Ltd , Telemedia Services", + "38266 Vodafone India Ltd ", + "134674 TATA SKY BROADBAND PRIVATE LIMITED" ], "value": [ - "18881 TELEFÔNICA BRASIL S A", - "28573 CLARO S A ", - "26599 TELEFÔNICA BRASIL S A", - "26615 Tim Celular S A ", - "27699 TELEFÔNICA BRASIL S A" + "55836 Reliance Jio Infocomm Limited", + "45609 Bharti Airtel Ltd AS for GPRS Service", + "24560 Bharti Airtel Ltd , Telemedia Services", + "38266 Vodafone India Ltd ", + "134674 TATA SKY BROADBAND PRIVATE LIMITED" ] }, "datasource": { @@ -1257,7 +1260,7 @@ "location": "", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nSELECT\n ISPname AS text,\n-- Uses ${datasource} Implicitly\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${anchor:regex}\", ${ISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", + "rawSql": "\nSELECT\n ISPname AS text,\nFROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${anchor:regex}\", ${ISPcount})\nGROUP BY ISPrank, ISPname\nORDER BY ISPrank\n", "refId": "tempvar", "sql": { "columns": [ @@ -1504,6 +1507,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 74, + "version": 75, "weekStart": "" } From cb2f094607b0609cba755b30aa573f96c569775b Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Wed, 17 Sep 2025 03:41:23 -0700 Subject: [PATCH 10/12] Fix datasource for the regional details dashboard --- .../regional-details-dashboard.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index 3725208..d59535d 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -56,7 +56,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "fieldConfig": { "defaults": { @@ -125,7 +125,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "editorMode": "code", "format": 1, @@ -956,7 +956,7 @@ "list": [ { "current": { - "selected": true, + "selected": false, "text": "Google BigQuery (mlab-collaboration)", "value": "P116E76923C5457A4" }, @@ -1021,7 +1021,7 @@ }, "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "definition": "", "description": "Used to select Client ISPs to be evaluated in region. ", @@ -1037,7 +1037,7 @@ "location": "", "project": "measurement-lab", "rawQuery": true, - "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n CONCAT(metro, ' ', ContinentCode, ' ', City, ', ', CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", + "rawSql": "# From: 2024-12-20 Prototype cached site picker \n\nSELECT\n FORMAT('%t %t %t, %t', metro, ContinentCode, City, CountryCode) AS text,\n metro AS value,\nFROM (\n SELECT\n REGEXP_EXTRACT(site, '^([a-z]{3})') AS metro,\n ANY_VALUE(ContinentCode) AS ContinentCode,\n ANY_VALUE(City) AS City,\n ANY_VALUE(CountryCode) AS CountryCode,\n FROM `${dataset}.cached_metadata`\n GROUP BY metro\n ORDER BY ContinentCode, CountryCode, metro\n)\n", "refId": "tempvar", "sql": { "columns": [ @@ -1065,7 +1065,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "500", "value": "500" }, @@ -1101,11 +1101,11 @@ "current": { "selected": true, "text": [ - "bom02 (0.0 IN) 4755 TATA Communications formerly VSNL is Leading ISP", - "bom04 (0.0 IN) 55836 Reliance Jio Infocomm Limited", - "bom06 (0.0 IN) 396982 Google LLC", - "bom149251 (0.0 IN) 149251 (missing)", - "isk140204 (158.0 IN) 140204 (missing)" + "bom02 (0.0 IN) 4755, TATA Communications formerly VSNL is Leading ISP", + "bom04 (0.0 IN) 55836, Reliance Jio Infocomm Limited", + "bom06 (0.0 IN) 396982, Google LLC", + "bom149251 (0.0 IN) 149251, (missing)", + "isk140204 (158.0 IN) 140204, (missing)" ], "value": [ "bom02", @@ -1117,7 +1117,7 @@ }, "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "definition": "", "description": "Manually select server sites within a specified radius of the anchor metro.", @@ -1161,7 +1161,7 @@ }, { "current": { - "selected": true, + "selected": false, "text": "10", "value": "10" }, @@ -1507,6 +1507,6 @@ "timezone": "utc", "title": "MLab Regional Details Dashboard", "uid": "dees4pr47gn40a", - "version": 75, + "version": 78, "weekStart": "" } From 0c44abba1ada321be040945b468ddd06c36b2a56 Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Wed, 17 Sep 2025 04:08:15 -0700 Subject: [PATCH 11/12] Fix datasource in the experimental time series plot --- .../dashboards/exp-time-series.json | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/grafana-public/dashboards/exp-time-series.json b/grafana-public/dashboards/exp-time-series.json index dfa4b8a..663ba97 100644 --- a/grafana-public/dashboards/exp-time-series.json +++ b/grafana-public/dashboards/exp-time-series.json @@ -56,7 +56,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "fieldConfig": { "defaults": { @@ -158,7 +158,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "editorMode": "code", "format": 1, @@ -192,7 +192,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "description": "Show servers and ISPs causing outliers.", "fieldConfig": { @@ -292,7 +292,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "editorMode": "code", "format": 1, @@ -326,7 +326,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "description": "These are aggregated across the entire prefetch date range.", "fieldConfig": { @@ -540,7 +540,7 @@ { "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "editorMode": "code", "format": 1, @@ -605,7 +605,7 @@ }, { "current": { - "selected": false, + "selected": true, "text": "experimental", "value": "experimental" }, @@ -750,8 +750,8 @@ { "current": { "selected": false, - "text": "500", - "value": "500" + "text": "1", + "value": "1" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, @@ -761,7 +761,7 @@ "name": "radius", "options": [ { - "selected": false, + "selected": true, "text": "1", "value": "1" }, @@ -771,7 +771,7 @@ "value": "100" }, { - "selected": true, + "selected": false, "text": "500", "value": "500" } @@ -782,11 +782,11 @@ }, { "current": { - "selected": false, + "selected": true, "text": [ - "den02 (0.0 US) 3356 Level 3 Parent, LLC", - "den04 (0.0 US) 6461 Zayo Bandwidth", - "den05 (0.0 US) 1299 Telia Company AB" + "den02 (0.0 US) 3356, Level 3 Parent, LLC", + "den04 (0.0 US) 6461, Zayo Bandwidth", + "den05 (0.0 US) 1299, Telia Company AB" ], "value": [ "den02", @@ -796,7 +796,7 @@ }, "datasource": { "type": "grafana-bigquery-datasource", - "uid": "P116E76923C5457A4" + "uid": "${datasource}" }, "definition": "", "description": "Manually select server sites within a specified radius of the anchor metro.", @@ -894,7 +894,7 @@ }, { "current": { - "selected": false, + "selected": true, "text": [ "7922 Comcast Cable Communications, LLC", "13335 Cloudflare, Inc " @@ -1041,8 +1041,8 @@ ] }, "time": { - "from": "now-10d", - "to": "now-3d" + "from": "2025-07-27T00:00:00.000Z", + "to": "2025-08-02T23:59:59.000Z" }, "timepicker": { "hidden": false, @@ -1056,6 +1056,6 @@ "timezone": "utc", "title": "EXP Time Series", "uid": "becs8jrn7r75sc", - "version": 30, + "version": 32, "weekStart": "" } From 97de494993a5fe99526026aaf6a6bcafb22bce2c Mon Sep 17 00:00:00 2001 From: Matt Mathis Date: Tue, 4 Nov 2025 10:01:31 -0600 Subject: [PATCH 12/12] Update public dashboards. still need calibration and timeseries --- .../dashboards/README-Introduction.json | 76 +++++++ .../dashboards/global-metro-bar-chart.json | 8 +- .../dashboards/metro-details-dashboard.json | 38 ++-- .../regional-details-dashboard.json | 197 ++++++++++++------ 4 files changed, 230 insertions(+), 89 deletions(-) create mode 100644 grafana-public/dashboards/README-Introduction.json diff --git a/grafana-public/dashboards/README-Introduction.json b/grafana-public/dashboards/README-Introduction.json new file mode 100644 index 0000000..3cf757b --- /dev/null +++ b/grafana-public/dashboards/README-Introduction.json @@ -0,0 +1,76 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Short synopsis of each of the differential measurement dashboards.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 543, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "xIXR1_LMz" + }, + "gridPos": { + "h": 19, + "w": 18, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "# README - Introduction to M-Lab differential measurements\nMatt Mathis, 2025-11-03\n\nThese dashboards are intended for public use: Please share.\n- See the [short slide deck](https://docs.google.com/presentation/d/1NtlXFFAkwF5HqHWcDcrbh3TrGUdpdHKa1AWJ404kLQ4/edit?usp=sharing)\nfor a quick introduction.\n\n- See the [full slide deck](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing)\nfor a detailed description of the methodology.\n\n- See the [case for deploying servers](https://docs.google.com/presentation/d/1LBmas8kQtiT9Gv48fBjH3Eqbj4DXIVMGdACnTqr9K78/edit?usp=sharing)\nto understand how ISPs can use M-Lab instrumentation to help them\nimprove their service to their customers, and thereby build a better Internet.\n\n## Global Metro Barchart [link](${detailURL}20250110a)\nDisplay Global interconnect quality (pain) metrics.\nEvaluate the interconnections between ISPs by measuring differences in performance to M-Lab servers\nfrom each of the N largest Client ISPs in the metro.\nIf the score is high (poor) it means that users attached to a some ISPs get different performances\nto the different M-Lab servers, indicating non-uniform connectivity between the ISPs.\nIn all cases high scores suggest peering problems,\nand low scores are probably good as long as M-Lab has sufficient coverage.\n\n## Metro Details Dashboard [link](${detailURL}20250114a)\nShow the detailed performance statistics between the top N client ISPs\nand all MLab sites in the selected metro.\nThis dashboard is slated to be replaced\nby the Regional Details Dashboad, below.\n\n## Regional Details Dashboard [link](${detailURL}20251103a)\nShow detailed performance statistics of the cross product of\nselected client ISPs and selected M-Lab site in the vicinity\nof a selected anchor metro.\nThis dashboard is feature rich, and expected to continue to evolve.", + "mode": "markdown" + }, + "pluginVersion": "11.1.3", + "type": "text" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "description": "Base path name within a relative URL", + "hide": 2, + "name": "detailURL", + "query": "/d/", + "skipUrlSync": false, + "type": "constant" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "hidden": true + }, + "timezone": "utc", + "title": "0 README - Introduction to differential measurements", + "uid": "ef30n862ylji8a", + "version": 11, + "weekStart": "" +} diff --git a/grafana-public/dashboards/global-metro-bar-chart.json b/grafana-public/dashboards/global-metro-bar-chart.json index 28ee022..b1d627c 100644 --- a/grafana-public/dashboards/global-metro-bar-chart.json +++ b/grafana-public/dashboards/global-metro-bar-chart.json @@ -47,7 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Global Metro Bar Chart \n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nEvaluate the interconnections between ISPs by measuring differences in performance to MLab servers\nfrom each of the N largest Client ISPs in the metro.\nIf the score is poor it means that users attached to a some ISPs get different performances\nto the different MLab servers,\nindicating non-uniform connectivity between the ISPs.\n\nThe metrics are: KSdistance (0 is ideal), the worst case vertical distance between the cdf distributions;\nand spread (1 is ideal), the worst case ratio of the geometric means.\nTo make it more visible, KSdistance is scaled 10x,\nsuch that 10 is the worst possible score, indicating non-overlapping distributions.\n\nThis data is precomputed for the date range shown, and can't be adjusted in this version of the dashboard.\n\nTo see the entire MLab fleet select verbose,\nwhich also shows singleton MLab sites that can't be analyzed by this technique.\nThese sites show 0 spread.\n\n\n", + "content": "# Global Metro Bar Chart \n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor documentation see the [README](/d/ef30n862ylji8a/) or scroll down for basic information. \n\nEvaluate the interconnections between ISPs by measuring differences in performance to MLab servers\nfrom each of the N largest Client ISPs in the metro.\nIf the score is poor it means that users attached to a some ISPs get different performances\nto the different MLab servers,\nindicating non-uniform connectivity between the ISPs.\n\nThe metrics are: KSdistance (0 is ideal), the worst case vertical distance between the cdf distributions;\nand spread (1 is ideal), the worst case ratio of the geometric means.\nTo make it more visible, KSdistance is scaled 10x,\nsuch that 10 is the worst possible score, indicating non-overlapping distributions.\n\nThis data is precomputed for the date range shown, and can't be adjusted in this version of the dashboard.\n\nTo see the entire MLab fleet select verbose,\nwhich also shows singleton MLab sites that can't be analyzed by this technique.\nThese sites show 0 spread.\n\n\n", "mode": "markdown" }, "pluginVersion": "11.1.3", @@ -429,8 +429,8 @@ { "current": { "selected": false, - "text": "0 2025-08-15 - 2025-08-21 Cached", - "value": "0 2025-08-15 - 2025-08-21 Cached" + "text": "0 2025-10-24 - 2025-10-27 Cached", + "value": "0 2025-10-24 - 2025-10-27 Cached" }, "datasource": { "type": "grafana-bigquery-datasource", @@ -488,6 +488,6 @@ "timezone": "utc", "title": "Global Metro Bar Chart", "uid": "20250110a", - "version": 70, + "version": 71, "weekStart": "" } diff --git a/grafana-public/dashboards/metro-details-dashboard.json b/grafana-public/dashboards/metro-details-dashboard.json index 3d7e7bc..a06dfd8 100644 --- a/grafana-public/dashboards/metro-details-dashboard.json +++ b/grafana-public/dashboards/metro-details-dashboard.json @@ -47,7 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Metro Details Dashboard \n\n### Warning: This is a pre-release of research software.\nIt is not running on production infrastructure and is subject to change or deletion without notification.\n\nFor more information scroll down or see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nShow the detailed performance statistics between the top N client ISPs and all MLab sites in the selected metro.\nThe first three rows are aggregates: metro wide, by server, or by Client ISP.\n\nThe rest of the dashboard shows the performance statics individually between each of the top N Client ISPs and all MLab servers.\n\nUnder ideal conditions each Client ISP will have identical performance to each MLab site.\n\nThis data is precomputed for the date ranges shown at the top of the ISP summary table.\n\n", + "content": "# Metro Details Dashboard \n\n### Warning: This is a pre-release of research software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor documentation see the [README](/d/ef30n862ylji8a/) or scroll down for basic information. \n\nThis dashboard is obsolete and is slated to be replaced by\nthe [Regional Details Dashboard](/d/20251103a) in a future release.\n\nShow the detailed performance statistics between the top N client ISPs and all MLab sites in the selected metro.\nThe first three rows are aggregates: metro wide, by server, or by Client ISP.\n\nThe rest of the dashboard shows the performance statics individually between each of the top N Client ISPs and all MLab servers.\n\nUnder ideal conditions each Client ISP will have identical performance to each MLab site.\n\nThis data is precomputed for the date ranges shown at the top of the ISP summary table.\n\n", "mode": "markdown" }, "pluginVersion": "11.1.3", @@ -299,8 +299,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.001827222697686703, - 0.03471723125604736 + -0.0039550861885633976, + 0.07514663758270455 ], "type": "linear" } @@ -388,8 +388,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0016854298777364955, - 0.03202316767699342 + -0.0015219181158154737, + 0.028916444200494 ], "type": "linear" } @@ -479,8 +479,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.004545096417104926, - 0.0863568319249936 + -0.006976609959164827, + 0.13255558922413171 ], "type": "linear" } @@ -593,8 +593,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.004095985075661991, - 0.07782371643757782 + -0.006092275156131325, + 0.11575322796649518 ], "type": "linear" } @@ -707,8 +707,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.0019349580131234672, - 0.03676420224934588 + -0.001982925211271668, + 0.03767557901416169 ], "type": "linear" } @@ -821,8 +821,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.007425127890998792, - 0.14107742992897704 + -0.006599498835050872, + 0.12539047786596658 ], "type": "linear" } @@ -935,8 +935,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.010116948862845436, - 0.19222202839406324 + -0.013597060599229391, + 0.25834415138535843 ], "type": "linear" } @@ -1049,8 +1049,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.002526631691022735, - 0.04800600212943195 + -0.0025004599291579537, + 0.047508738654001126 ], "type": "linear" } @@ -1507,7 +1507,7 @@ "allValue": ".*", "current": { "selected": false, - "text": "gru SA Sao Paulo, BR", + "text": "gru SA Campinas, BR", "value": "gru" }, "datasource": { @@ -1702,6 +1702,6 @@ "timezone": "utc", "title": "Metro Details Dashboard", "uid": "20250114a", - "version": 34, + "version": 35, "weekStart": "" } diff --git a/grafana-public/dashboards/regional-details-dashboard.json b/grafana-public/dashboards/regional-details-dashboard.json index d59535d..f53a247 100644 --- a/grafana-public/dashboards/regional-details-dashboard.json +++ b/grafana-public/dashboards/regional-details-dashboard.json @@ -21,11 +21,11 @@ } ] }, - "description": "Full matrix of Client ISPs and MLab Server comparisons, circa an anchor metro.", + "description": "Selectable matrix of Client ISPs and MLab Server comparisons, circa an anchor metro.", "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 522, + "id": 544, "links": [], "liveNow": false, "panels": [ @@ -47,7 +47,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Regional Details Dashboard\n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor more information scroll down and see the [slides](https://docs.google.com/presentation/d/1wpx45K30QD2ZIDuS5WsuRGrbcCrxs56cvuhydWRIRiw/edit?usp=sharing).\n\nThe Anchor Metro is used to preselect servers (within the selected radus) and preselect client ISPs (by rank in the anchor metro).\n\nData is shown for all selected Severs cross all selected Client ISPs.\n\nNote that the client data is preselected by rank independently in each metro.\nIf a client ISP's rank differs between metros, some of its data might not be shown.\nTo workaround this, select extra client rows, beyond the last clinetISP that you want to see.\n\nMethod selects the backend: Please use cached.\n", + "content": "# Regional Details Dashboard\n### Warning: This is a pre-release of experimental software.\nIt is not running on production infrastructure and is subject to changes or deletion without notification.\nFor documentation see the [README](/d/ef30n862ylji8a/) or scroll down for basic information. \n\nThe Anchor Metro is used to preselect servers (within the selected radus)\nand preselect client ISPs (by rank in the anchor metro).\n\nData is shown for all selected Severs cross all selected Client ISPs.\n\nNote that the client data is preselected by rank independently in each metro.\nIf a client ISP's rank differs between metros, some of its data might not be shown.\nTo workaround this, select extra client rows,\nbeyond the last clinetISP that you want to select.\n\nIf shown method selects the backend: Please use cached.\n\n", "mode": "markdown" }, "pluginVersion": "11.1.3", @@ -132,7 +132,7 @@ "location": "", "project": "mlab-collaboration", "rawQuery": true, - "rawSql": "SELECT \"{dataset}\" AS name, \"${dataset}\" AS value\nUNION ALL SELECT \"{anchor}\", \"${anchor}\"\nUNION ALL SELECT \"{region:regex}\", \"${region:regex}\"\nUNION ALL SELECT \"{ClientISP:regex}\", \"${ClientISP:regex}\"\n# SELECT \"{datasou rce}\" \"${datasou rce}\" AS VALUE", + "rawSql": "SELECT \"{dataset}\" AS name, \"${dataset}\" AS value\nUNION ALL SELECT \"{method}\", \"${method}\"\nUNION ALL SELECT \"{anchor}\", \"${anchor}\"\nUNION ALL SELECT \"{radius}\", \"${radius}\"\nUNION ALL SELECT \"{region:regex}\", \"${region:regex}\"\nUNION ALL SELECT \"{ISPcount}\", \"${ISPcount}\"\nUNION ALL SELECT \"{ClientISP:regex}\", \"${ClientISP:regex}\"\n-- Consider dates\n", "refId": "A", "sql": { "columns": [ @@ -417,6 +417,30 @@ "value": 196 } ] + }, + { + "matcher": { + "id": "byName", + "options": "KS_breadcrumb" + }, + "properties": [ + { + "id": "custom.width", + "value": 181 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "SP_Breadcrumb" + }, + "properties": [ + { + "id": "custom.width", + "value": 177 + } + ] } ] }, @@ -452,7 +476,7 @@ "location": "", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance, KSoutlier, Spread, SPoutlier, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${table_field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE ${verbose} OR level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", + "rawSql": "\nSELECT level, Metric, Sites, tests, pct, KSdistance,\n KSoutlier AS KS_breadcrumb, Spread, SPoutlier AS SP_Breadcrumb, ISPname\nFROM (\n SELECT * EXCEPT (ISPname),\n data AS metric,\n percent AS pct,\n IF (level like \"Regional Summary\",\n FORMAT (\"%t summary\", REGEXP_REPLACE(ISPname, '^0 ', \"\")),\n ISPname\n ) AS ISPname,\n -- FROM `${dataset}.cached_metro_report`(\"MinRTT\", \"${site:regex}\", ${ISPcount})\n FROM `${dataset}.regional_report` (\"${method}\",\"${xAxis}\", ${binSize}, \"${table_field}\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"^(${region:regex})\", \"^(${ClientISP:regex})\", ${ISPcount})\n WHERE ${verbose} OR level like \"Regional Summary\" OR level LIKE \"ISP%%\" \n)", "refId": "A", "sql": { "columns": [ @@ -507,7 +531,7 @@ "maxDataPoints": 80000, "options": { "config": { - "displayModeBar": false + "displayModeBar": true }, "data": [], "layout": { @@ -538,8 +562,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555555, - 1.0555555555555556 + -0.026115306133018455, + 0.4961908165273505 ], "type": "linear" } @@ -562,7 +586,7 @@ "orderBySort": "1", "project": "mlab-oti", "rawQuery": true, - "rawSql": "WITH\n\nISPdata AS (\n SELECT\n linBin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"linearMinRTT\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"linearMinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, linBin\n)\n\nSELECT linBin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY linBin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY linBin", + "rawSql": "WITH\n\nISPdata AS (\n SELECT\n bin,\n binIX,\n CAST(ROUND(binIX / 50.0 * ${binSize}) AS INT) AS thinedIX,\n SUM(hist) AS hist,\n siteName,\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, thinedIX, binIX, bin\n HAVING (binIX = thinedIX * 50 / ${binSize}) OR (\"$mode\" = \"cdf\")\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", "refId": "A", "select": [ [ @@ -621,7 +645,7 @@ "maxDataPoints": 80000, "options": { "config": { - "displayModeBar": false + "displayModeBar": true }, "data": [], "layout": { @@ -652,8 +676,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555555, - 1.0555555555555556 + -0.026115306133018455, + 0.4961908165273505 ], "type": "linear" } @@ -676,7 +700,7 @@ "orderBySort": "1", "project": "mlab-oti", "rawQuery": true, - "rawSql": "WITH\n\nISPdata AS (\n SELECT\n bin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"MinRTT\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n\"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, bin\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", + "rawSql": "WITH\n\nISPdata AS (\n SELECT\n bin,\n binIX,\n CAST(ROUND(binIX / 50.0 * ${binSize}) AS INT) AS thinedIX,\n SUM(hist) AS hist,\n siteName,\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MinRTT\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, thinedIX, binIX, bin\n HAVING (binIX = thinedIX * 50 / ${binSize}) OR (\"$mode\" = \"cdf\")\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", "refId": "A", "select": [ [ @@ -735,7 +759,7 @@ "maxDataPoints": 80000, "options": { "config": { - "displayModeBar": false + "displayModeBar": true }, "data": [], "layout": { @@ -766,8 +790,8 @@ "autorange": true, "gridcolor": "#333", "range": [ - -0.05555555555555555, - 1.0555555555555556 + -0.0023341868970811943, + 0.044349551044542676 ], "type": "linear" } @@ -790,7 +814,7 @@ "orderBySort": "1", "project": "mlab-oti", "rawQuery": true, - "rawSql": "\nWITH\n\nISPdata AS (\n SELECT\n bin,\n SUM(hist) AS hist,\n siteName,\n -- FROM `${dataset}.access_ndt7_cached_histograms`(\"MeanThroughputMbps\", \"${region:regex}\", ${rank})\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MeanThroughputMbps\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, bin\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", + "rawSql": "\nWITH\n\nISPdata AS (\n SELECT\n bin,\n binIX,\n CAST(ROUND(binIX / 50.0 * ${binSize}) AS INT) AS thinedIX,\n SUM(hist) AS hist,\n siteName,\n FROM `${dataset}.access_ndt7_isp_histograms` (\"${method}\", \"${xAxis}\", ${binSize}, \"MeanThroughputMbps\",\n DATE(REGEXP_EXTRACT(\"${__from:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n DATE(REGEXP_EXTRACT(\"${__to:date:iso}\", '[0-9]{4}-[0-9]{2}-[0-9]{2}')),\n \"${region:regex}\", ${ISPcount})\n WHERE REGEXP_CONTAINS ( ISPname, \"^(${ClientISP:regex})\" )\n GROUP BY siteName, thinedIX, binIX, bin\n HAVING (binIX = thinedIX * 50 / ${binSize}) OR (\"$mode\" = \"cdf\")\n)\n\nSELECT bin,\n CASE \"$mode\"\n WHEN \"pdf\" THEN hist / SUM(hist) OVER (partition by siteName)\n WHEN \"peak\" THEN hist / MAX(hist) OVER (partition by siteName)\n ELSE SUM(hist) OVER (PARTITION BY siteName ORDER BY bin ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) / SUM(hist) OVER (partition by siteName)\n END AS data,\n siteName,\n FROM ISPdata\n ORDER BY bin", "refId": "A", "select": [ [ @@ -960,7 +984,8 @@ "text": "Google BigQuery (mlab-collaboration)", "value": "P116E76923C5457A4" }, - "hide": 1, + "description": "Backend credentials", + "hide": 2, "includeAll": false, "multi": false, "name": "datasource", @@ -973,6 +998,7 @@ "type": "datasource" }, { + "description": "Path to BQ resources not inherited from credentials", "hide": 2, "name": "dataset", "query": "mlab-collaboration.mm_preproduction", @@ -986,7 +1012,7 @@ "value": "cached" }, "description": "Select processing stack version", - "hide": 0, + "hide": 2, "includeAll": false, "multi": false, "name": "method", @@ -1016,15 +1042,15 @@ "allValue": ".*", "current": { "selected": false, - "text": "bom AS Mumbai, IN", - "value": "bom" + "text": "gru SA Campinas, BR", + "value": "gru" }, "datasource": { "type": "grafana-bigquery-datasource", "uid": "${datasource}" }, "definition": "", - "description": "Used to select Client ISPs to be evaluated in region. ", + "description": "Used to select M-Lab servers and Client ISPs to be evaluated in the region. ", "hide": 0, "includeAll": false, "label": "Anchor metro", @@ -1066,8 +1092,8 @@ { "current": { "selected": false, - "text": "500", - "value": "500" + "text": "100", + "value": "100" }, "description": "Radius from the anchor metro for selecting servers", "hide": 0, @@ -1082,12 +1108,12 @@ "value": "1" }, { - "selected": false, + "selected": true, "text": "100", "value": "100" }, { - "selected": true, + "selected": false, "text": "500", "value": "500" } @@ -1101,18 +1127,14 @@ "current": { "selected": true, "text": [ - "bom02 (0.0 IN) 4755, TATA Communications formerly VSNL is Leading ISP", - "bom04 (0.0 IN) 55836, Reliance Jio Infocomm Limited", - "bom06 (0.0 IN) 396982, Google LLC", - "bom149251 (0.0 IN) 149251, (missing)", - "isk140204 (158.0 IN) 140204, (missing)" + "gru02 (0.0 BR) 262589, INTERNEXA BRASIL OPERADORA DE TELECOMUNICACOES S A", + "gru03 (0.0 BR) 6762, TELECOM ITALIA SPARKLE S p A ", + "gru06 (0.0 BR) 396982, Google LLC" ], "value": [ - "bom02", - "bom04", - "bom06", - "bom149251", - "isk140204" + "gru02", + "gru03", + "gru06" ] }, "datasource": { @@ -1120,7 +1142,7 @@ "uid": "${datasource}" }, "definition": "", - "description": "Manually select server sites within a specified radius of the anchor metro.", + "description": "Select M-Lab sites within the specified radius of the anchor metro.", "hide": 0, "includeAll": false, "label": "Servers", @@ -1165,7 +1187,7 @@ "text": "10", "value": "10" }, - "description": "Number of ISPs to include", + "description": "Number of Client ISPs to preprocess. It is best to include extras, beyond the Client ISP selectors.", "hide": 0, "includeAll": false, "label": "Client Rows", @@ -1228,18 +1250,20 @@ "current": { "selected": true, "text": [ - "55836 Reliance Jio Infocomm Limited", - "45609 Bharti Airtel Ltd AS for GPRS Service", - "24560 Bharti Airtel Ltd , Telemedia Services", - "38266 Vodafone India Ltd ", - "134674 TATA SKY BROADBAND PRIVATE LIMITED" + "18881 TELEFÔNICA BRASIL S A", + "28573 CLARO S A ", + "26599 TELEFÔNICA BRASIL S A", + "27699 TELEFÔNICA BRASIL S A", + "14593 Space Exploration Technologies Corporation", + "26615 Tim Celular S A " ], "value": [ - "55836 Reliance Jio Infocomm Limited", - "45609 Bharti Airtel Ltd AS for GPRS Service", - "24560 Bharti Airtel Ltd , Telemedia Services", - "38266 Vodafone India Ltd ", - "134674 TATA SKY BROADBAND PRIVATE LIMITED" + "18881 TELEFÔNICA BRASIL S A", + "28573 CLARO S A ", + "26599 TELEFÔNICA BRASIL S A", + "27699 TELEFÔNICA BRASIL S A", + "14593 Space Exploration Technologies Corporation", + "26615 Tim Celular S A " ] }, "datasource": { @@ -1247,7 +1271,7 @@ "uid": "${datasource}" }, "definition": "", - "description": "Choose high volume Client ISPs. ", + "description": "Select Client ISPs of interest. ", "hide": 0, "includeAll": false, "label": "Client ISPs", @@ -1289,16 +1313,17 @@ { "current": { "selected": false, - "text": "cdf", - "value": "cdf" + "text": "pdf", + "value": "pdf" }, + "description": "Select graph type.", "hide": 0, "includeAll": false, "multi": false, "name": "mode", "options": [ { - "selected": false, + "selected": true, "text": "pdf", "value": "pdf" }, @@ -1308,7 +1333,7 @@ "value": "peak" }, { - "selected": true, + "selected": false, "text": "cdf", "value": "cdf" } @@ -1318,6 +1343,54 @@ "skipUrlSync": false, "type": "custom" }, + { + "current": { + "selected": false, + "text": "50", + "value": "50" + }, + "description": "Re-scale the pdf X axes to the specified number of bins per decade, to smooth Y axis noise. The raw data is 50 bins per decade.", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "binSize", + "options": [ + { + "selected": true, + "text": "50", + "value": "50" + }, + { + "selected": false, + "text": "25", + "value": "25" + }, + { + "selected": false, + "text": "10", + "value": "10" + }, + { + "selected": false, + "text": "5", + "value": "5" + }, + { + "selected": false, + "text": "2", + "value": "2" + }, + { + "selected": false, + "text": "1", + "value": "1" + } + ], + "query": "50, 25, 10, 5, 2, 1", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, { "current": { "selected": false, @@ -1351,14 +1424,6 @@ "skipUrlSync": false, "type": "custom" }, - { - "description": "Shim", - "hide": 2, - "name": "binSize", - "query": "50", - "skipUrlSync": false, - "type": "constant" - }, { "current": { "selected": false, @@ -1424,7 +1489,7 @@ "text": "false", "value": "false" }, - "description": "Show more detail in the result table", + "description": "Show more detail in the result table.", "hide": 0, "includeAll": false, "multi": false, @@ -1502,11 +1567,11 @@ "to": "now" }, "timepicker": { - "hidden": false + "hidden": true }, "timezone": "utc", - "title": "MLab Regional Details Dashboard", - "uid": "dees4pr47gn40a", - "version": 78, + "title": "Public Regional Details Dashboard", + "uid": "20251103a", + "version": 4, "weekStart": "" }