{ "annotations": { "list": [{ "builtIn": 1, "datasource": "-- 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": "Azure Monitor - Container Insights metrics for Kubernetes clusters. Cluster utilization, namespace utilization, Node cpu & memory, Node disk usage & disk io, node network & kubelet docker operation metrics. Many more metrics that are queriable from the log analytics workspace used by Azure monitor for containers!", "editable": true, "fiscalYearStartMonth": 0, "gnetId": 10956, "graphTooltip": 0, "id": 129, "iteration": 1649988807444, "links": [{ "asDropdown": true, "icon": "external link", "includeVars": false, "keepTime": false, "tags": [], "targetBlank": true, "title": "Azure Monitor - Container Insights", "tooltip": "Click here to open Azure Monitor Ux for this cluster", "type": "link", "url": "https://portal.azure.com/#@microsoft.onmicrosoft.com/resource$clusterid/infrainsights" }], "liveNow": false, "panels": [{ "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 44, "panels": [], "repeat": "clusterid", "title": "Cluster - Overview & utilization", "type": "row" }, { "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "% Allocatable CPU used across all nodes in the cluster", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 1 }, "id": 4, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "mean" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "8.4.5", "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rlet allocatable = Perf | where ObjectName == \"K8SNode\" | where CounterName == \"cpuCapacityNanoCores\" \r\n| where $__timeFilter(TimeGenerated) \r\n| where InstanceName startswith '$clusterid'\n| summarize arg_max(TimeGenerated, * ) by Computer\r\n| summarize a=toreal(sum(CounterValue) /1000000)\r\n| project a, b=\"abc\";\r\n\r\nallocatable \r\n| join kind=inner (\r\n Perf | where ObjectName == \"K8SNode\" | where CounterName == \"cpuUsageNanoCores\" \r\n | where $__timeFilter(TimeGenerated) \r\n | where InstanceName startswith '$clusterid'\n | summarize arg_max(TimeGenerated, * ) by Computer\r\n | summarize x=toreal(sum(CounterValue) /1000000)\r\n | project x,y=\"abc\"\r\n) on $left.b == $right.y\r\n|project now(), (x/a) * 100", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "title": "Cluster CPU Utilization", "type": "gauge" }, { "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "% Allocatable memory (workingset) used across all nodes in the cluster", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 1 }, "id": 5, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "mean" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "8.4.5", "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\r\nlet allocatable = Perf | where ObjectName == \"K8SNode\" | where CounterName == \"memoryCapacityBytes\" \r\n| where $__timeFilter(TimeGenerated) \r\n| where InstanceName startswith '$clusterid'\n| summarize arg_max(TimeGenerated, * ) by Computer\r\n| summarize a=toreal(sum(CounterValue))\r\n| project a, b=\"abc\";\r\n\r\nallocatable \r\n| join kind=inner (\r\n Perf | where ObjectName == \"K8SNode\" | where CounterName == \"memoryWorkingSetBytes\" \r\n | where $__timeFilter(TimeGenerated) \r\n | where InstanceName startswith '$clusterid'\n | summarize arg_max(TimeGenerated, * ) by Computer\r\n | summarize x=toreal(sum(CounterValue))\r\n | project x,y=\"abc\"\r\n) on $left.b == $right.y\r\n|project now(), (x/a) * 100", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "title": "Cluster Memory Utilization", "type": "gauge" }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of nodes in the cluster grouped by status", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 0, "y": 9 }, "hiddenSeries": false, "id": 11, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.5", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\r\nKubeNodeInventory\r\n| where ClusterId == '$clusterid'\n| where $__timeFilter(TimeGenerated)\n| summarize count() by bin(TimeGenerated, $__interval), Computer, Status\r\n| summarize arg_max(TimeGenerated, *) by Computer, Status\r\n| summarize nodecount=count() by Status\r\n| project nodecount, Status , now()", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Node count by Status", "tooltip": { "shared": false, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "decimals": 0, "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Pod count grouped by Pod Status", "fieldConfig": { "defaults": { "links": [{ "title": "", "url": "" }] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 8, "y": 9 }, "hiddenSeries": false, "id": 12, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.5", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "KubePodInventory | where ClusterId == '$clusterid'\n| where $__timeFilter(TimeGenerated)\r\n| summarize count() by bin(TimeGenerated, $__interval), PodUid, PodStatus\r\n| summarize arg_max(TimeGenerated, *) by PodUid, PodStatus\r\n| summarize podCount = count() by PodStatus\r\n| project podCount, PodStatus , now() \r\n", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Pod count by status", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of controllers in the cluster by Controller Kind", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 16, "y": 9 }, "hiddenSeries": false, "id": 16, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.5", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\r\nKubePodInventory | where ClusterId == '$clusterid' | where $__timeFilter(TimeGenerated) \n| summarize count() by bin(TimeGenerated, $__interval), PodUid, ControllerKind\r\n| summarize arg_max(TimeGenerated, *) by PodUid, ControllerKind\r\n| summarize controllerCount = count() by ControllerKind\r\n| extend ControllerKind=iif(isempty(ControllerKind), \"None\", ControllerKind)\n| project ControllerKind, controllerCount , now() ", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Controller count by Controller Kind", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "% Used Disk grouped by Disk in each node where usage > 80%", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 18 }, "hiddenSeries": false, "id": 6, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.5", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\r\nInsightsMetrics\r\n| extend tags=todynamic(Tags) \r\n| where Name ==\"used_percent\"\r\n| where tags[\"container.azm.ms/clusterId\"] == '$clusterid'\r\n| where $__timeFilter(TimeGenerated) \r\n| extend hostName=tags.hostName\r\n| extend device=tags.device\r\n| extend disk=strcat(device, \"/\" , hostName) \r\n| summarize arg_max(TimeGenerated, *) by disk\r\n| where Val > 80.0\r\n| sort by Val desc\r\n| project Val, disk, now()", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Node disks with > 80% used space", "tooltip": { "shared": false, "sort": 2, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "percent", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 26 }, "id": 42, "panels": [{ "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of namespaces in the cluster", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "decimals": 0, "mappings": [{ "options": { "match": "null", "result": { "text": "N/A" } }, "type": "special" }], "thresholds": { "mode": "absolute", "steps": [{ "color": "green" }, { "color": "red", "value": 80 } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 8, "w": 3, "x": 0, "y": 2 }, "id": 7, "links": [], "maxDataPoints": 100, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "8.4.1", "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "KubePodInventory | where ClusterId == '$clusterid' \r| where $__timeFilter(TimeGenerated)\n| summarize count() by bin(TimeGenerated, $__interval), Namespace\r\n| summarize arg_max(TimeGenerated, *) by Namespace\r\n| summarize namespaceCount = count()\r\n| project namespaceCount,now() ", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "title": "Kubernetes Namespace count", "type": "stat" }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of pods per namespace", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 6, "x": 3, "y": 2 }, "hiddenSeries": false, "id": 10, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rKubePodInventory \n\r| where ClusterId == '$clusterid'\n| where $__timeFilter(TimeGenerated)\n| summarize count() by bin(TimeGenerated, $__interval), PodUid, Namespace\r\n| summarize arg_max(TimeGenerated, *) by PodUid, Namespace\r\n| summarize namespaceCount = count() by Namespace\r\n| sort by namespaceCount desc\n| project namespaceCount, Namespace, now() ", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Pod count by Kubernetes Namespace", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of controllers per namespace", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 7, "x": 9, "y": 2 }, "hiddenSeries": false, "id": 53, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rKubePodInventory \n\r| where ClusterId == '$clusterid'\n| where $__timeFilter(TimeGenerated)\n| summarize count() by bin(TimeGenerated, $__interval), PodUid, Namespace\r, ControllerKind\n| summarize arg_max(TimeGenerated, *) by PodUid, Namespace\r, ControllerKind\n| summarize controllerCountByNamespace = count() by Namespace\r, ControllerKind\n| sort by controllerCountByNamespace desc\n| project controllerCountByNamespace, Namespace, now() \n\n", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Controller count by Kubernetes Namespace", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Number of controllers per namespace per kind", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 2 }, "hiddenSeries": false, "id": 54, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rKubePodInventory \n\r| where ClusterId == '$clusterid'\n| where $__timeFilter(TimeGenerated)\n| summarize count() by bin(TimeGenerated, $__interval), PodUid, Namespace\r, ControllerKind\n| summarize arg_max(TimeGenerated, *) by PodUid, nsc = strcat(Namespace\r,\"/\", ControllerKind)\n| summarize controllerCountByNamespace = count() by nsc\n| sort by controllerCountByNamespace desc\n| project controllerCountByNamespace, nsc, now() \n\n", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Controller Kind by Kubernetes Namespace (namespace/controllerkind)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "decimals": 0, "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "CPU % utilized by each namespace", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 10 }, "hiddenSeries": false, "id": 17, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "let allocatable = Perf | where ObjectName == \"K8SNode\" | where CounterName == \"cpuCapacityNanoCores\" \r\n| where $__timeFilter(TimeGenerated) \r\n| where InstanceName startswith '$clusterid'\n| summarize arg_max(TimeGenerated, * ) by Computer\r\n| summarize a=toreal(sum(CounterValue))\r\n| project a, b=\"abc\";\r\n\r\nallocatable \r\n| join kind=inner (\r\n Perf | where ObjectName == \"K8SContainer\" | where CounterName == \"cpuUsageNanoCores\" \r\n | where $__timeFilter(TimeGenerated) \r\n | where InstanceName startswith '$clusterid'\n | extend cnameArr = split(InstanceName, \"/\")\r\n | extend h=array_length(cnameArr)-1\r\n | extend l=array_length(cnameArr)-2\r\n | extend cname = strcat(cnameArr[l], \"/\", cnameArr[h])\r\n | extend x= CounterValue \r\n | summarize arg_max(TimeGenerated, * ) by cname // | summarize sum(x)\r\n \r\n //| summarize x=toreal(sum(CounterValue))\r\n | project x,y=\"abc\", cname, TimeGenerated\r\n | join kind=inner ( KubePodInventory\r\n | where $__timeFilter(TimeGenerated) \r\n | where ClusterId == '$clusterid'\n | summarize arg_max(TimeGenerated, *) by ContainerName\r\n | project ContainerName, Namespace\r\n ) on $left.cname == $right.ContainerName//)\r\n) on $left.b == $right.y \r\n//| summarize v=arg_max(TimeGenerated,*) by cname,a, Namespace\r\n| summarize xyz= toreal(sum(x)) by a, Namespace\r\n| order by xyz desc\r\n|project now(), (xyz/a) * 100, Namespace \r\n", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Cluster CPU Utilization % by Kubernetes Namespace", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "format": "percent", "logBase": 1, "show": true }, { "decimals": -3, "format": "percent", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": true, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Memory usage (working set) by namespace", "fieldConfig": { "defaults": { "links": [{ "title": "", "url": "" }] }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 10 }, "hiddenSeries": false, "id": 18, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "let allocatable = Perf | where ObjectName == \"K8SNode\" | where CounterName == \"memoryCapacityBytes\" \r\n| where $__timeFilter(TimeGenerated) \r\n| where InstanceName startswith '$clusterid'\n| summarize arg_max(TimeGenerated, * ) by Computer\r\n| summarize a=toreal(sum(CounterValue))\r\n| project a, b=\"abc\";\r\n\r\nallocatable \r\n| join kind=inner (\r\n Perf | where ObjectName == \"K8SContainer\" | where CounterName == \"memoryWorkingSetBytes\" \r\n | where $__timeFilter(TimeGenerated) \r\n | where InstanceName startswith '$clusterid'\n | extend cnameArr = split(InstanceName, \"/\")\r\n | extend h=array_length(cnameArr)-1\r\n | extend l=array_length(cnameArr)-2\r\n | extend cname = strcat(cnameArr[l], \"/\", cnameArr[h])\r\n | extend x= CounterValue \r\n | summarize arg_max(TimeGenerated, * ) by cname // | summarize sum(x)\r\n \r\n //| summarize x=toreal(sum(CounterValue))\r\n | project x,y=\"abc\", cname, TimeGenerated\r\n | join kind=inner ( KubePodInventory\r\n | where $__timeFilter(TimeGenerated) \r\n | where ClusterId == '$clusterid'\n | summarize arg_max(TimeGenerated, *) by ContainerName\r\n | project ContainerName, Namespace\r\n ) on $left.cname == $right.ContainerName//)\r\n) on $left.b == $right.y \r\n//| summarize v=arg_max(TimeGenerated,*) by cname,a, Namespace\r\n| summarize xyz= toreal(sum(x)) by a, Namespace\r\n| order by xyz desc\r\n|project now(), (xyz/a) * 100, Namespace ", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "Cluster Memory Utilization % by Kubernetes Namespace", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "mode": "series", "show": false, "values": [ "total" ] }, "yaxes": [{ "format": "percent", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "repeat": "clusterid", "title": "Cluster - Namespaces", "type": "row" }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 27 }, "id": 40, "panels": [{ "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 10, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 3 }, "hiddenSeries": false, "id": 20, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "let nodeCpuCapacity=Perf | where CounterName == \"cpuCapacityNanoCores\" | where ObjectName == \"K8SNode\" | where InstanceName startswith '$clusterid' | where $__timeFilter(TimeGenerated)| summarize arg_max(TimeGenerated, *) by Computer| project Computer , cpuCapacity=CounterValue; \n\nlet nodeCpuUsage=Perf | where CounterName == \"cpuUsageNanoCores\"| where ObjectName == \"K8SNode\"| where InstanceName startswith '$clusterid'| where $__timeFilter(TimeGenerated) | summarize ptileCpuUsage=percentile(CounterValue, $ptile) by Computer, bin(TimeGenerated, $__interval);\n\nnodeCpuUsage|join kind=inner (nodeCpuCapacity) on $left.Computer == $right.Computer| extend ptileCpuUsagepercent=(ptileCpuUsage/cpuCapacity) * 100| order by TimeGenerated asc| project TimeGenerated, Computer, ptileCpuUsagepercent", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "$ptile-th Percentile % CPU usage by node", "tooltip": { "shared": true, "sort": 1, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "percent", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 1, "fillGradient": 10, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 3 }, "hiddenSeries": false, "id": 26, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "let nodeMemoryCapacity=Perf| where CounterName == \"memoryCapacityBytes\"| where ObjectName == \"K8SNode\" | where InstanceName startswith '$clusterid'| where $__timeFilter(TimeGenerated)| summarize arg_max(TimeGenerated, *) by Computer| project Computer , memoryCapacity=CounterValue;\n\nlet nodeMemoryUsage= Perf | where CounterName == \"memoryRssBytes\"| where ObjectName == \"K8SNode\"| where InstanceName startswith '$clusterid'| where $__timeFilter(TimeGenerated) | summarize ptileMemoryUsage=percentile(CounterValue, $ptile) by Computer, bin(TimeGenerated, $__interval);\n\nnodeMemoryUsage|join kind=inner (nodeMemoryCapacity) on $left.Computer == $right.Computer| extend ptileMemoryUsagepercent=(ptileMemoryUsage/memoryCapacity) * 100| order by TimeGenerated asc| project TimeGenerated, Computer, ptileMemoryUsagepercent", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "$ptile-th Percentile Memory (rss) usage by node", "tooltip": { "shared": true, "sort": 1, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "decimals": 0, "format": "percent", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": false } ], "yaxis": { "align": false } } ], "repeat": "clusterid", "title": "Node - CPU & Memory", "type": "row" }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 28 }, "id": 38, "panels": [{ "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "$ptile-th percentile, % Used Disk grouped by Disk in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 4 }, "hiddenSeries": false, "id": 28, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| extend tags=todynamic(Tags) \r\n| where Name ==\"used_percent\"\r\n| where tags[\"container.azm.ms/clusterId\"] == '$clusterid'\n| where $__timeFilter(TimeGenerated) \n| extend hostName=tags.hostName\r\n| extend device=tags.device\r\n| extend disk=strcat(device, \"/\" , hostName) \r\n| summarize ptileDiskUsagePercentagebyNodeDisk = percentile(Val,$ptile) by bin(TimeGenerated, $__interval), disk\r\n| order by TimeGenerated asc\n| project TimeGenerated, disk, ptileDiskUsagePercentagebyNodeDisk", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "% Used Disk ($ptile-th percentile) by Disk/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "percent", "logBase": 1, "show": true }, { "format": "percent", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "$ptile-th percentile iops in progress grouped by Disk in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 4 }, "hiddenSeries": false, "id": 30, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| extend tags=todynamic(Tags) \r\n| where Name ==\"iops_in_progress\"\r\n| where tags[\"container.azm.ms/clusterId\"] == '$clusterid'\r\n| where $__timeFilter(TimeGenerated) \n| extend hostName=tags.hostName\r\n| extend device=tags.name\n| extend disk=strcat(device, \"/\" , hostName) \r\n| summarize ptileDiskIopsInProgressbyNodeDisk = percentile(Val,$ptile) by bin(TimeGenerated, $__interval), disk\r\n| order by TimeGenerated asc\n| project TimeGenerated, disk, ptileDiskIopsInProgressbyNodeDisk", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "yaxis": "left" }], "timeRegions": [], "title": "iops in progress ($ptile-th percentile) by Disk/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Reads/sec ($ptile-th percentile) grouped by Disk in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 11 }, "hiddenSeries": false, "id": 32, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/diskio'\r\n| where Name == 'reads'\r\n| where $__timeFilter(TimeGenerated) \n| extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), Device = tostring(Tags.name)\r, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])\n| where clusterId == '$clusterid'\n| extend NodeDisk = strcat(Device, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeDisk, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeDisk asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeDisk) != NodeDisk, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeDisk) != NodeDisk, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeDisk, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Disk reads/sec ($ptile-th percentile) by disk/node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Write bytes/sec ($ptile-th percentile) grouped by Disk in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 11 }, "hiddenSeries": false, "id": 34, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/diskio'\r\n| where Name == 'write_bytes'\r\n| where $__timeFilter(TimeGenerated) \n| extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), Device = tostring(Tags.name)\r, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])\n| where clusterId == '$clusterid'\n| extend NodeDisk = strcat(Device, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeDisk, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeDisk asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeDisk) != NodeDisk, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeDisk) != NodeDisk, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeDisk, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Disk write bytes/sec ($ptile-th percentile) by disk/node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "Bps", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "title": "Node - Disk Usage & IO", "type": "row" }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 29 }, "id": 36, "panels": [{ "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Sent bytes/sec ($ptile-th percentile) grouped by network interface in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 11, "x": 0, "y": 5 }, "hiddenSeries": false, "id": 46, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/net'\r\n| where Name == 'bytes_sent'\r\n| where $__timeFilter(TimeGenerated) \n| extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), Interface = tostring(Tags.interface)\r, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])\n| where clusterId == '$clusterid'\n| extend NodeInterface = strcat(Interface, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeInterface, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeInterface asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeInterface) != NodeInterface, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeInterface) != NodeInterface, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeInterface, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Network sent bytes/sec ($ptile-th percentile) by interface/node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "Bps", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Received bytes/sec ($ptile-th percentile) grouped by network interface in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 13, "x": 11, "y": 5 }, "hiddenSeries": false, "id": 48, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/net'\r\n| where Name == 'bytes_recv'\r\n| where $__timeFilter(TimeGenerated) \n| extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), Interface = tostring(Tags.interface)\r, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])\n| where clusterId == '$clusterid'\n| extend NodeInterface = strcat(Interface, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeInterface, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeInterface asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeInterface) != NodeInterface, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeInterface) != NodeInterface, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeInterface, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Network received bytes/sec ($ptile-th percentile) by interface/node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "Bps", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Network send errors ($ptile-th percentile) grouped by interface in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 6, "w": 11, "x": 0, "y": 12 }, "hiddenSeries": false, "id": 50, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| extend tags=todynamic(Tags) \r\n| where Name ==\"err_out\"\r\n| where tags[\"container.azm.ms/clusterId\"] == '$clusterid'\n| where $__timeFilter(TimeGenerated) \n| extend hostName=tags.hostName\n| extend interface=tags.interface\n| extend nodeInterface=strcat(interface, \"/\" , hostName) \r\n| summarize ptileErrorsOutByNodeInterface = percentile(Val,$ptile) by bin(TimeGenerated, $__interval), nodeInterface\n| order by TimeGenerated asc\n| project TimeGenerated, nodeInterface, ptileErrorsOutByNodeInterface", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Network send errors ($ptile-th percentle) by Interface/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Network receive errors ($ptile-th percentile) grouped by interface in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 7, "w": 13, "x": 11, "y": 12 }, "hiddenSeries": false, "id": 52, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "\rInsightsMetrics\r\n| extend tags=todynamic(Tags) \r\n| where Name ==\"err_in\"\r\n| where tags[\"container.azm.ms/clusterId\"] == '$clusterid'\n| where $__timeFilter(TimeGenerated) \n| extend hostName=tags.hostName\n| extend interface=tags.interface\n| extend nodeInterface=strcat(interface, \"/\" , hostName) \r\n| summarize ptileErrorsInByNodeInterface = percentile(Val,$ptile) by bin(TimeGenerated, $__interval), nodeInterface\n| order by TimeGenerated asc\n| project TimeGenerated, nodeInterface, ptileErrorsInByNodeInterface", "resource": "$ws", "resultFormat": "time_series" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [{ "colorMode": "critical", "fill": true, "line": true, "op": "gt", "value": 80, "yaxis": "left" }], "timeRegions": [], "title": "Network receive errors ($ptile-th percentle) by Interface/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "repeat": "clusterid", "title": "Node - Network", "type": "row" }, { "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 30 }, "id": 22, "panels": [{ "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Docker Operations/sec ($ptile-th percentile) grouped by operation in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 11, "w": 12, "x": 0, "y": 6 }, "hiddenSeries": false, "id": 55, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "InsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/prometheus'\r\n| where Name == 'kubelet_docker_operations'\r\n| where $__timeFilter(TimeGenerated) | extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), optype = tostring(Tags.operation_type)\r\n, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])| where clusterId == '$clusterid'| extend NodeOp = strcat(optype, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeOp, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeOp asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeOp) != NodeOp, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeOp) != NodeOp, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeOp, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }], "thresholds": [], "timeRegions": [], "title": "Kubelet Docker Ops/Sec ($ptile-th percentile) by operation/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "description": "Docker Operation errors/sec ($ptile-th percentile) grouped by operation in each node", "fieldConfig": { "defaults": { "links": [] }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 11, "w": 12, "x": 12, "y": 6 }, "hiddenSeries": false, "id": 56, "legend": { "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "alertThreshold": true }, "percentage": false, "pluginVersion": "8.4.1", "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [{ "appInsights": { "groupBy": "none", "metricName": "select", "rawQuery": false, "rawQueryString": "", "spliton": "", "timeGrainType": "auto", "xaxis": "timestamp", "yaxis": "" }, "azureLogAnalytics": { "query": "InsightsMetrics\r\n| where Origin == 'container.azm.ms/telegraf'\r\n| where Namespace == 'container.azm.ms/prometheus'\r\n| where Name == 'kubelet_docker_operations_errors'\r\n| where $__timeFilter(TimeGenerated) | extend Tags = todynamic(Tags)\r\n| extend HostName = tostring(Tags.hostName), optype = tostring(Tags.operation_type)\r\n, clusterId = tostring(Tags[\"container.azm.ms/clusterId\"])| where clusterId == '$clusterid'| extend NodeOp = strcat(optype, \"/\", HostName)\r\n| summarize Val=percentile(Val,$ptile) by NodeOp, TimeGenerated=bin(TimeGenerated,$__interval)\r\n| order by NodeOp asc, TimeGenerated asc\r\n| serialize\r\n| extend PrevVal = iif(prev(NodeOp) != NodeOp, 0.0, prev(Val)), PrevTimeGenerated = iif(prev(NodeOp) != NodeOp, datetime(null), prev(TimeGenerated))\r\n| where isnotnull(PrevTimeGenerated) and PrevTimeGenerated != TimeGenerated\r\n| extend Rate = iif(PrevVal > Val, Val / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1), iif(PrevVal == Val, 0.0, (Val - PrevVal) / (datetime_diff('Second', TimeGenerated, PrevTimeGenerated) * 1)))\r\n| where isnotnull(Rate)\r\n| project TimeGenerated, NodeOp, Rate\r\n|render timechart", "resource": "$ws", "resultFormat": "table" }, "azureMonitor": { "dimensionFilter": "*", "metricDefinition": "select", "metricName": "select", "metricNamespace": "select", "resourceGroup": "select", "resourceName": "select", "timeGrain": "auto" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "queryType": "Azure Log Analytics", "refId": "A" }], "thresholds": [], "timeRegions": [], "title": "Kubelet Docker operation errors/Sec ($ptile-th percentile) by operation/Node", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "transparent": true, "type": "graph", "xaxis": { "mode": "time", "show": true, "values": [] }, "yaxes": [{ "format": "short", "logBase": 1, "show": true }, { "format": "short", "logBase": 1, "show": true } ], "yaxis": { "align": false } } ], "repeat": "clusterid", "title": "Node - Kubelet Docker Operations", "type": "row" } ], "schemaVersion": 35, "style": "dark", "tags": [], "templating": { "list": [{ "current": { "selected": false, "text": "Azure Monitor", "value": "Azure Monitor" }, "hide": 0, "includeAll": false, "label": "Datasource", "multi": false, "name": "ds", "options": [], "query": "grafana-azure-monitor-datasource", "queryValue": "", "refresh": 1, "regex": "", "skipUrlSync": false, "type": "datasource" }, { "current": { "selected": false, "text": "Visual Studio Enterprise – MPN", "value": "3bc639b9-228f-40a6-b5d1-055cc84bb656" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "definition": "", "hide": 0, "includeAll": false, "label": "Subscriptions", "multi": false, "name": "sub", "options": [], "query": { "grafanaTemplateVariableFn": { "kind": "SubscriptionsQuery", "rawQuery": "Subscriptions()" }, "queryType": "Grafana Template Variable Function", "refId": "A", "subscription": "" }, "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" }, { "current": { "selected": false, "text": "", "value": "" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "definition": "", "hide": 0, "includeAll": false, "label": "Worskpaces", "multi": false, "name": "ws", "options": [], "query": { "grafanaTemplateVariableFn": { "kind": "WorkspacesQuery", "rawQuery": "Workspaces($sub)", "subscription": "$sub" }, "queryType": "Grafana Template Variable Function", "refId": "A", "subscription": "" }, "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" }, { "current": { "selected": false, "text": "", "value": "" }, "datasource": { "type": "grafana-azure-monitor-datasource", "uid": "${ds}" }, "definition": "", "hide": 0, "includeAll": false, "label": "Cluster", "multi": false, "name": "clusterid", "options": [], "query": { "azureLogAnalytics": { "query": "KubePodInventory | summarize n=count() by ClusterId | project ClusterId", "resource": "$ws" }, "queryType": "Azure Log Analytics", "refId": "A", "subscription": "" }, "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" }, { "current": { "tags": [], "text": "99", "value": "99" }, "hide": 0, "includeAll": false, "label": "Percentile (applicable for percentile charts)", "multi": false, "name": "ptile", "options": [{ "selected": false, "text": "50", "value": "50" }, { "selected": false, "text": "75", "value": "75" }, { "selected": false, "text": "80", "value": "80" }, { "selected": false, "text": "85", "value": "85" }, { "selected": false, "text": "90", "value": "90" }, { "selected": false, "text": "95", "value": "95" }, { "selected": false, "text": "96", "value": "96" }, { "selected": false, "text": "97", "value": "97" }, { "selected": false, "text": "98", "value": "98" }, { "selected": true, "text": "99", "value": "99" }, { "selected": false, "text": "99.9", "value": "99.9" } ], "query": "50,75,80,85,90,95,96,97,98,99,99.9", "skipUrlSync": false, "type": "custom" } ] }, "time": { "from": "now-6h", "to": "now" }, "timepicker": { "hidden": false, "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ] }, "timezone": "", "title": "Azure Monitor for Containers - Metrics", "uid": "", "version": 2, "weekStart": "" }