{ "apiVersion": "dashboard.grafana.app/v2", "kind": "Dashboard", "metadata": { "name": "windows-exporter-hyper-v-cluster" }, "spec": { "annotations": [ { "kind": "AnnotationQuery", "spec": { "builtIn": true, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "legacyOptions": { "type": "dashboard" }, "name": "Annotations & Alerts", "query": { "datasource": { "name": "-- Grafana --" }, "group": "grafana", "kind": "DataQuery", "spec": {}, "version": "v0" } } }, { "kind": "AnnotationQuery", "spec": { "enable": true, "hide": false, "iconColor": "orange", "legacyOptions": { "expr": "windows_system_boot_time_timestamp{job=~\"$job\", instance=\"$instance\"} * 1000 > $__from < $__to", "step": "1m", "tagKeys": "instance", "textFormat": "", "titleFormat": "Reboot", "useValueForTime": "on" }, "name": "Reboots", "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": {}, "version": "v0" } } } ], "cursorSync": "Crosshair", "description": "Hosts, virtual machines, virtual hard disks and storage of a Hyper-V failover cluster.", "editable": true, "elements": { "panel-290": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=\"$instance\"}) / max(windows_memory_physical_total_bytes{job=~\"$job\", instance=\"$instance\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Memory assigned to all VMs as a share of the host's physical memory. Needs the memory collector.", "id": 290, "links": [], "title": "VM memory / host RAM", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-291": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1)) > 0.01) or vector(0)", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual disks with an average latency per I/O above 0.01 s and at least one I/O per second.", "id": 291, "links": [], "title": "Slow virtual disks", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 5 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-292": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=\"$instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (vm) (windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=\"$instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "1 - max by (vm) (windows_hyperv_dynamic_memory_vm_guest_available_bytes{job=~\"$job\", instance=\"$instance\"}) / max by (vm) (windows_hyperv_dynamic_memory_vm_guest_visible_physical_memory_bytes{job=~\"$job\", instance=\"$instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (vm) (windows_hyperv_dynamic_memory_vm_pressure_current_ratio{job=~\"$job\", instance=\"$instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) (rate(windows_hyperv_hypervisor_virtual_processor_run_time_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])) / max by (vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=\"$instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "E" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) ((rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) + rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "F" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) (rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1)) / (sum by (vm) (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1)) > 0)", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "G" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "vm", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true, "Time 5": true, "Time 6": true, "Time 7": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "Value #E": 5, "Value #F": 6, "Value #G": 7, "vm": 0 }, "renameByName": { "Value #A": "vCPUs", "Value #B": "Assigned memory", "Value #C": "RAM in use", "Value #D": "Committed vs. RAM", "Value #E": "CPU", "Value #F": "Disk IOPS", "Value #G": "Disk latency", "vm": "VM" } } } } ] } }, "description": "VMs running on this host. CPU usage is busy time on the host's physical processors relative to the VM's own virtual processors, not the utilization Task Manager shows inside the VM; committed vs. RAM is the Hyper-V memory demand (guest commit charge) as a share of the assigned memory.", "id": 292, "links": [], "title": "Virtual machines", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "Assigned memory" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byRegexp", "options": "^(RAM in use|CPU)$" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "custom.cellOptions", "value": { "type": "color-text" } }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] } } ] }, { "matcher": { "id": "byName", "options": "Committed vs. RAM" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "custom.cellOptions", "value": { "type": "color-text" } }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 1.5 } ] } } ] }, { "matcher": { "id": "byName", "options": "Disk IOPS" }, "properties": [ { "id": "unit", "value": "iops" } ] }, { "matcher": { "id": "byName", "options": "Disk latency" }, "properties": [ { "id": "unit", "value": "s" }, { "id": "custom.cellOptions", "value": { "type": "color-text" } }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.01 } ] } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "VM" } ] } }, "version": "" } } }, "panel-293": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "topk(10, sum by (vm) (rate(windows_hyperv_hypervisor_virtual_processor_run_time_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])) / max by (vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=\"$instance\"}))", "instant": false, "legendFormat": "{{vm}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "The ten VMs with the highest CPU usage at each point in time, so the graph can show more than ten VMs over the time range relative to their own virtual processors (run time per second; 100% means every virtual processor ran all the time). Near 100% a VM runs at its limit and needs more virtual processors, even when the host has CPU left. This is busy time on the host's physical processors as Hyper-V sees it, not the utilization Task Manager shows inside the VM: when a virtual processor waits for a physical processor, the guest counts that time as busy, the host doesn't.", "id": 293, "links": [], "title": "Busiest VMs", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-294": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (device, disk, vm) (label_replace(topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (device, disk, vm) (label_replace(avg_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (device, disk, vm) (label_replace(max_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (device, disk, vm) (label_replace(avg_over_time((rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) + rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "device", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 2, "Value #B": 3, "Value #C": 4, "Value #D": 5, "disk": 0, "vm": 1 }, "renameByName": { "Value #A": "Time above threshold", "Value #B": "Average latency", "Value #C": "Maximum latency", "Value #D": "IOPS", "disk": "Disk", "vm": "VM" } } } } ] } }, "description": "Virtual disks that were above 0.01 s average latency per I/O in the time range, worst first. Time above threshold is counted in 5-minute steps, so permanently slow disks rank above short spikes. Disks with less than one I/O per second are ignored.", "id": 294, "links": [], "title": "Slowest virtual disks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "device" }, "properties": [ { "id": "custom.hidden", "value": true } ] }, { "matcher": { "id": "byName", "options": "Time above threshold" }, "properties": [ { "id": "unit", "value": "s" }, { "id": "custom.cellOptions", "value": { "mode": "basic", "type": "color-background" } }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 900 }, { "color": "red", "value": 3600 } ] } } ] }, { "matcher": { "id": "byRegexp", "options": "^(Average|Maximum) latency$" }, "properties": [ { "id": "unit", "value": "s" } ] }, { "matcher": { "id": "byName", "options": "IOPS" }, "properties": [ { "id": "unit", "value": "iops" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": true, "displayName": "Time above threshold" } ] } }, "version": "" } } }, "panel-295": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (instance, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Maximum size of all virtual hard disks of the VMs on this host.", "id": 295, "links": [], "title": "VHD size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-296": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (instance, path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=\"$instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the virtual hard disk files of the VMs on this host take on storage. For a VM with checkpoints, only the current .avhdx counts, not its parent disks.", "id": 296, "links": [], "title": "VHD file size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-297": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(clamp_min(max by (instance, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=\"$instance\", type=\"dynamic\"}) - max by (instance, path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=\"$instance\", type=\"dynamic\"}), 0))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the dynamic (thin provisioned) disks of the VMs on this host would still take if every one grew to its full size.", "id": 297, "links": [], "title": "VHD growth if thick", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-298": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) (label_replace(rate(windows_hyperv_virtual_network_adapter_outgoing_dropped_packets_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=\"$instance\"}) + 1))", "instant": false, "legendFormat": "{{vm}} outgoing", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) (label_replace(rate(windows_hyperv_virtual_network_adapter_incoming_dropped_packets_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=\"$instance\"}) + 1))", "instant": false, "legendFormat": "{{vm}} incoming", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Packets dropped per second by the network adapters of each VM; incoming drops are drawn below the axis. Adapters are matched to VMs by the VM GUID in their name.", "id": 298, "links": [], "title": "Dropped packets per VM", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "pps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* incoming$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-300": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (instance) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": true, "legendFormat": "{{instance}}", "range": false }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Host that runs the VM now. During a live migration, both hosts are shown.", "id": 300, "links": [], "title": "Host", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "name", "wideLayout": true } }, "version": "" } } }, "panel-301": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual processors assigned to the VM.", "id": 301, "links": [], "title": "Virtual processors", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-302": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Physical memory the host currently assigns to the VM, for static and dynamic memory.", "id": 302, "links": [], "title": "Assigned memory", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-303": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "1 - max(windows_hyperv_dynamic_memory_vm_guest_available_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) / max(windows_hyperv_dynamic_memory_vm_guest_visible_physical_memory_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Memory the guest uses: visible memory minus the memory the guest reports as available. Empty when the guest doesn't report available memory (no integration services).", "id": 303, "links": [], "title": "RAM in use", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-304": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_pressure_current_ratio{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Hyper-V memory demand as a share of the assigned memory. The demand follows the guest's commit charge, not the RAM in use. Above 100% the guest has committed more memory than it has RAM: the rest is only reserved or paged out. Check paging inside the guest before adding RAM. Applies to static and dynamic memory.", "id": 304, "links": [], "title": "Committed vs. RAM", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 1.5 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-305": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(rate(windows_hyperv_hypervisor_virtual_processor_run_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}[$__rate_interval])) / max(windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Run time per second of all virtual processors, as a share of the VM's virtual processors: 100% means every virtual processor ran all the time. Near 100% the VM runs at its own limit. This is busy time on the host's physical processors as Hyper-V sees it, not the utilization Task Manager shows inside the VM: when a virtual processor waits for a physical processor, the guest counts that time as busy, the host doesn't.", "id": 305, "links": [], "title": "CPU usage", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.8 }, { "color": "red", "value": 0.95 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-306": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (state) (rate(windows_hyperv_hypervisor_virtual_processor_mode_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}[$__rate_interval])) / scalar(max(windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}))", "instant": false, "legendFormat": "{{state}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Run time per second of the VM's virtual processors, split into running guest code, the hypervisor working for the VM, and remote (on another NUMA node); 100% means every virtual processor ran all the time. This is busy time on the host's physical processors as Hyper-V sees it, not the utilization Task Manager shows inside the VM: when a virtual processor waits for a physical processor, the guest counts that time as busy, the host doesn't.", "id": 306, "links": [], "title": "CPU usage by state", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-307": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (core) (rate(windows_hyperv_hypervisor_virtual_processor_run_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}[$__rate_interval]))", "instant": false, "legendFormat": "vCPU {{core}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Share of time each virtual processor spent running: run time per second, so 100% means it ran all the time. One busy virtual processor while the others idle points to a single-threaded workload. This is busy time on the host's physical processors as Hyper-V sees it, not the utilization Task Manager shows inside the VM: when a virtual processor waits for a physical processor, the guest counts that time as busy, the host doesn't.", "id": 307, "links": [], "title": "CPU usage per virtual processor", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-308": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_guest_visible_physical_memory_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) - max(windows_hyperv_dynamic_memory_vm_guest_available_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "in use", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "assigned", "range": true }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_guest_visible_physical_memory_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "visible", "range": true }, "version": "v0" }, "refId": "C" } } ], "queryOptions": {}, "transformations": [] } }, "description": "In use: memory the guest occupies. Assigned: physical memory from the host. Visible: memory the guest sees (with dynamic memory up to its maximum).", "id": 308, "links": [], "title": "RAM in use and assigned", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-309": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_hyperv_dynamic_memory_vm_pressure_current_ratio{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "instant": false, "legendFormat": "committed / RAM", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Hyper-V memory demand (commit charge of the guest) as a share of the assigned memory. Above 100% the guest has committed more than its RAM; that is only a problem when it pages a lot. With dynamic memory, Hyper-V adds memory to keep this near its buffer.", "id": 309, "links": [], "title": "Committed vs. RAM", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 1.5 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-310": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(rate(windows_hyperv_dynamic_memory_vm_added_total{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}[$__rate_interval]))", "instant": false, "legendFormat": "added", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(rate(windows_hyperv_dynamic_memory_vm_removed_bytes_total{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}[$__rate_interval]))", "instant": false, "legendFormat": "removed", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Memory Hyper-V added to (up) and removed from (down) the VM. Always zero for static memory.", "id": 310, "links": [], "title": "Dynamic memory changes", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "Bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "removed" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-311": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Maximum size of all virtual hard disks of the VM, as the guest sees them. For a VM with checkpoints, the current checkpoint disk counts.", "id": 311, "links": [], "title": "Disk size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-312": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the virtual hard disk files take on storage. Thin provisioned (dynamic) disks grow up to their size.", "id": 312, "links": [], "title": "Disk file size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-313": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(clamp_min(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", type=\"dynamic\"}) - max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}), 0))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the dynamic (thin provisioned) disks would still take if every one grew to its full size.", "id": 313, "links": [], "title": "Growth if thick", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-314": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})) / sum(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "File size of all disks as a share of their size.", "id": 314, "links": [], "title": "Disk fill", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-315": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path, type) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) / max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "clamp_min(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", type=\"dynamic\"}) - max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}), 0)", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "path", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 2, "Value #B": 3, "Value #C": 4, "Value #D": 5, "path": 0, "type": 1 }, "renameByName": { "Value #A": "Size", "Value #B": "File size", "Value #C": "Fill", "Value #D": "Growth if thick", "path": "Path", "type": "Type" } } } } ] } }, "description": "Every virtual hard disk of the VM. Type is fixed (thick), dynamic (thin), differencing (checkpoint or child disk) or unknown. For a checkpoint, the file size only counts the current .avhdx, not its parent disks.", "id": 315, "links": [], "title": "Virtual hard disks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(Size|File size|Growth if thick)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Fill" }, "properties": [ { "id": "unit", "value": "percentunit" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Path" } ] } }, "version": "" } } }, "panel-316": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (path) (rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{disk}} write", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (path) (rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{disk}} read", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Read and write operations per second of each disk; reads are drawn below the axis. Disks of a VM that isn't running have no I/O.", "id": 316, "links": [], "title": "Disk IOPS", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "iops" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* read$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-317": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (path) (rate(windows_hyperv_virtual_storage_device_written_bytes_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{disk}} write", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (path) (rate(windows_hyperv_virtual_storage_device_read_bytes_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{disk}} read", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Bytes written and read per second of each disk; reads are drawn below the axis.", "id": 317, "links": [], "title": "Disk throughput", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "Bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* read$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-318": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (path) (rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)) / (sum by (path) (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\", device!=\"\"})) + 1)) > 0), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{disk}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Average latency per I/O of each disk: total I/O latency divided by completed I/O transfers. The dashed line is the slow-disk threshold.", "id": 318, "links": [], "title": "Disk latency", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.01 } ] }, "unit": "s" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-319": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (adapter) (label_replace(rate(windows_hyperv_virtual_network_adapter_sent_bytes_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) + 1)) * 8, \"nic\", \"$1\", \"adapter\", \"[^_]*_(.*)_[0-9A-Fa-f]{8}-.*\")", "instant": false, "legendFormat": "{{nic}} sent", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (adapter) (label_replace(rate(windows_hyperv_virtual_network_adapter_received_bytes_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) + 1)) * 8, \"nic\", \"$1\", \"adapter\", \"[^_]*_(.*)_[0-9A-Fa-f]{8}-.*\")", "instant": false, "legendFormat": "{{nic}} received", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Traffic of each network adapter of the VM; received traffic is drawn below the axis. Adapters are matched by the VM GUID in their name.", "id": 319, "links": [], "title": "Network throughput", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* received$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-320": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (adapter) (label_replace(rate(windows_hyperv_virtual_network_adapter_outgoing_dropped_packets_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) + 1)), \"nic\", \"$1\", \"adapter\", \"[^_]*_(.*)_[0-9A-Fa-f]{8}-.*\")", "instant": false, "legendFormat": "{{nic}} outgoing", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(sum by (adapter) (label_replace(rate(windows_hyperv_virtual_network_adapter_incoming_dropped_packets_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]), \"vm_id\", \"$1\", \"adapter\", \".*_([0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})--.*\") * on (instance, vm_id) group_left (vm) (0 * max by (instance, vm_id, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\", vm=\"$vm\"}) + 1)), \"nic\", \"$1\", \"adapter\", \"[^_]*_(.*)_[0-9A-Fa-f]{8}-.*\")", "instant": false, "legendFormat": "{{nic}} incoming", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Packets dropped per second by each network adapter of the VM; incoming drops are drawn below the axis.", "id": 320, "links": [], "title": "Network dropped packets", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "pps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* incoming$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-330": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"}) == 0) or (0 * count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Cluster nodes in state Up. Requires the mscluster collector, which is not enabled by default.", "id": 330, "links": [], "title": "Nodes up", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-331": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 0) or (0 * count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Cluster nodes that are down, paused or joining. A paused node runs no new roles, for example during maintenance.", "id": 331, "links": [], "title": "Nodes not up", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 2 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-332": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"}) >= 2 < 4) or (0 * count(max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Resource groups (cluster roles, for example VMs) that failed or are only partially online.", "id": 332, "links": [], "title": "Groups failed", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-333": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"}) == 1) or (0 * count(max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Resource groups that are offline, for example stopped VMs. Offline is often intended.", "id": 333, "links": [], "title": "Groups offline", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-334": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (resource, type, resource_group) (windows_mscluster_resource_state{job=~\"$job\", instance=~\"$cluster_instance\"}) == 4) or (0 * count(max by (resource, type, resource_group) (windows_mscluster_resource_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Cluster resources in state Failed.", "id": 334, "links": [], "title": "Resources failed", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-335": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (network) (windows_mscluster_network_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 3) or (0 * count(max by (network) (windows_mscluster_network_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Cluster networks that are unavailable, down or partitioned. A partitioned network has lost connectivity between some nodes.", "id": 335, "links": [], "title": "Networks not up", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-336": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max(windows_mscluster_cluster_quorum_type_value{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Quorum type of the cluster: node majority, file share witness or disk (storage) witness.", "id": 336, "links": [], "title": "Quorum", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "mappings": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "1": { "color": "text", "index": 1, "text": "Node majority" }, "2": { "color": "text", "index": 2, "text": "File share witness" }, "3": { "color": "text", "index": 3, "text": "Disk witness" }, "4": { "color": "text", "index": 4, "text": "None" } }, "type": "value" } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-337": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (node) (windows_mscluster_node_node_drain_status{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (node) (windows_mscluster_node_dynamic_weight{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (node) (max by (resource_group, node) (windows_mscluster_resourcegroup_owner_node{job=~\"$job\", instance=~\"$cluster_instance\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (node) (windows_mscluster_node_build_number{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "E" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "node", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true, "Time 5": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "Value #E": 5, "node": 0 }, "renameByName": { "Value #A": "State", "Value #B": "Drain", "Value #C": "Vote", "Value #D": "Resource groups", "Value #E": "Build", "node": "Node" } } } } ] } }, "description": "State, drain status, current vote, owned resource groups and build of each cluster node. Dynamic quorum removes the vote of some nodes to keep quorum when nodes fail.", "id": 337, "links": [], "title": "Nodes", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "State" }, "properties": [ { "id": "mappings", "value": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "0": { "color": "green", "index": 1, "text": "Up" }, "1": { "color": "red", "index": 2, "text": "Down" }, "2": { "color": "orange", "index": 3, "text": "Paused" }, "3": { "color": "blue", "index": 4, "text": "Joining" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] }, { "matcher": { "id": "byName", "options": "Drain" }, "properties": [ { "id": "mappings", "value": [ { "options": { "0": { "color": "text", "index": 0, "text": "Not initiated" }, "1": { "color": "blue", "index": 1, "text": "In progress" }, "2": { "color": "text", "index": 2, "text": "Completed" }, "3": { "color": "red", "index": 3, "text": "Failed" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Node" } ] } }, "version": "" } } }, "panel-338": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "{{node}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "State of each cluster node over time.", "id": 338, "links": [], "title": "Node state", "vizConfig": { "group": "state-timeline", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "fillOpacity": 90, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineWidth": 0, "spanNulls": false }, "mappings": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "0": { "color": "green", "index": 1, "text": "Up" }, "1": { "color": "red", "index": 2, "text": "Down" }, "2": { "color": "orange", "index": 3, "text": "Paused" }, "3": { "color": "blue", "index": 4, "text": "Joining" } }, "type": "value" } ], "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "options": { "alignValue": "left", "legend": { "displayMode": "list", "placement": "bottom", "showLegend": false }, "mergeValues": false, "rowHeight": 1, "showValue": "never", "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } } }, "version": "" } } }, "panel-339": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (node) (max by (resource_group, node) (windows_mscluster_resourcegroup_owner_node{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "{{node}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Resource groups each node owns. Steps show failovers and live migrations; a node without groups runs no roles.", "id": 339, "links": [], "title": "Resource groups per node", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-340": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 0", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (resource_group, node) (windows_mscluster_resourcegroup_owner_node{job=~\"$job\", instance=~\"$cluster_instance\"} == 1) and on (resource_group) (max by (resource_group) (windows_mscluster_resourcegroup_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 0)", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "resource_group", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Value #B": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "node": 2, "resource_group": 0 }, "renameByName": { "Value #A": "State", "node": "Node", "resource_group": "Resource group" } } } } ] } }, "description": "Resource groups that are not online and the node that owns them. Offline groups of stopped VMs are listed too.", "id": 340, "links": [], "title": "Resource groups not online", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "State" }, "properties": [ { "id": "mappings", "value": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "0": { "color": "green", "index": 1, "text": "Online" }, "1": { "color": "text", "index": 2, "text": "Offline" }, "2": { "color": "red", "index": 3, "text": "Failed" }, "3": { "color": "orange", "index": 4, "text": "Partial online" }, "4": { "color": "blue", "index": 5, "text": "Pending" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Resource group" } ] } }, "version": "" } } }, "panel-341": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (resource, type, resource_group) (windows_mscluster_resource_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 2", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (resource, node) (windows_mscluster_resource_owner_node{job=~\"$job\", instance=~\"$cluster_instance\"} == 1) and on (resource) (max by (resource, type, resource_group) (windows_mscluster_resource_state{job=~\"$job\", instance=~\"$cluster_instance\"}) != 2)", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "resource", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Value #B": true }, "includeByName": {}, "indexByName": { "Value #A": 3, "node": 4, "resource": 0, "resource_group": 2, "type": 1 }, "renameByName": { "Value #A": "State", "node": "Node", "resource": "Resource", "resource_group": "Resource group", "type": "Type" } } } } ] } }, "description": "Cluster resources that are not online, with their type, resource group and owner node.", "id": 341, "links": [], "title": "Resources not online", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "State" }, "properties": [ { "id": "mappings", "value": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "0": { "color": "text", "index": 1, "text": "Inherited" }, "1": { "color": "blue", "index": 2, "text": "Initializing" }, "128": { "color": "blue", "index": 6, "text": "Pending" }, "129": { "color": "blue", "index": 7, "text": "Online pending" }, "130": { "color": "blue", "index": 8, "text": "Offline pending" }, "2": { "color": "green", "index": 3, "text": "Online" }, "3": { "color": "text", "index": 4, "text": "Offline" }, "4": { "color": "red", "index": 5, "text": "Failed" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Resource" } ] } }, "version": "" } } }, "panel-342": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (network) (windows_mscluster_network_state{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (network) (windows_mscluster_network_role{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (network) (windows_mscluster_network_metric{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "network", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "network": 0 }, "renameByName": { "Value #A": "State", "Value #B": "Role", "Value #C": "Metric", "network": "Network" } } } } ] } }, "description": "State, role and metric of each cluster network. The cluster prefers networks with a lower metric for cluster traffic.", "id": 342, "links": [], "title": "Networks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "State" }, "properties": [ { "id": "mappings", "value": [ { "options": { "-1": { "color": "text", "index": 0, "text": "Unknown" }, "0": { "color": "red", "index": 1, "text": "Unavailable" }, "1": { "color": "red", "index": 2, "text": "Down" }, "2": { "color": "orange", "index": 3, "text": "Partitioned" }, "3": { "color": "green", "index": 4, "text": "Up" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] }, { "matcher": { "id": "byName", "options": "Role" }, "properties": [ { "id": "mappings", "value": [ { "options": { "0": { "color": "text", "index": 0, "text": "None" }, "1": { "color": "text", "index": 1, "text": "Cluster" }, "2": { "color": "text", "index": 2, "text": "Client" }, "3": { "color": "text", "index": 3, "text": "Cluster and client" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Network" } ] } }, "version": "" } } }, "panel-360": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"}) == 0) or (0 * count(max by (node) (windows_mscluster_node_state{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Cluster nodes in state Up, of all nodes. Requires the mscluster collector.", "id": 360, "links": [], "title": "Nodes up", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-361": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(count by (instance) (max by (instance, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual machines running on the hosts of the cluster. Needs the hyperv collector, which is not enabled by default.", "id": 361, "links": [], "title": "Running VMs", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-362": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(windows_hyperv_virtual_machines{job=~\"$job\", instance=~\"$cluster_instance\", state=\"critical\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual machines reporting critical health on any host of the cluster.", "id": 362, "links": [], "title": "VMs in critical health", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-363": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(windows_hyperv_assigned_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}) / sum(windows_hyperv_host_logical_processors{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual processors assigned to VMs per logical processor, over all hosts of the cluster.", "id": 363, "links": [], "title": "vCPU per logical CPU", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "decimals": 2, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-364": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(sum by (instance) (windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})) / sum(max by (instance) (windows_memory_physical_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Memory assigned to all VMs as a share of the physical memory of all hosts. Needs the memory collector.", "id": 364, "links": [], "title": "VM memory / host RAM", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-365": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(sum by (instance) (windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})) / (sum(max by (instance) (windows_memory_physical_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})) - max(max by (instance) (windows_memory_physical_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Memory assigned to all VMs as a share of the physical memory left when the host with the most memory fails. Above 100%, not all VMs can restart after a host failure.", "id": 365, "links": [], "title": "VM memory without largest host", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.9 }, { "color": "red", "value": 1 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-366": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(rate(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state!=\"idle\"}[$__rate_interval])) / count(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state=\"idle\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Share of all logical processors of the cluster running guest code or the hypervisor.", "id": 366, "links": [], "title": "Host CPU usage", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.7 }, { "color": "red", "value": 0.9 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-367": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1)) > 0.01) or vector(0)", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual disks of the cluster with an average latency per I/O above 0.01 s and at least one I/O per second.", "id": 367, "links": [], "title": "Slow virtual disks", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 5 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-368": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count by (instance) (max by (instance, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (instance) (windows_hyperv_assigned_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (instance) (windows_hyperv_host_logical_processors{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (rate(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state!=\"idle\"}[$__rate_interval])) / count by (instance) (windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state=\"idle\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (instance) (windows_memory_physical_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "instance", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "instance": 0 }, "renameByName": { "Value #A": "Running VMs", "Value #B": "vCPU per logical CPU", "Value #C": "CPU usage", "Value #D": "VM memory / RAM", "instance": "Host" } } } } ] } }, "description": "Running VMs, virtual processors per logical processor, CPU usage and the share of the host's memory assigned to VMs, per host of the cluster.", "id": 368, "links": [], "title": "Hosts", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "vCPU per logical CPU" }, "properties": [ { "id": "decimals", "value": 2 } ] }, { "matcher": { "id": "byRegexp", "options": "^(CPU usage|VM memory / RAM)$" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "min", "value": 0 }, { "id": "max", "value": 1 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] } }, { "id": "color", "value": { "mode": "thresholds" } }, { "id": "custom.cellOptions", "value": { "mode": "basic", "type": "gauge", "valueDisplayMode": "text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Host" } ] } }, "version": "" } } }, "panel-369": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (rate(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state!=\"idle\"}[$__rate_interval])) / count by (instance) (windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\", state=\"idle\"})", "instant": false, "legendFormat": "{{instance}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Share of the logical processors of each host running guest code or the hypervisor.", "id": 369, "links": [], "title": "Host CPU usage", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-370": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count by (instance) (max by (instance, vm) (windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "{{instance}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Virtual machines running on each host. Steps show live migrations and failovers.", "id": 370, "links": [], "title": "Running VMs per host", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-371": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (instance) (windows_memory_physical_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "{{instance}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Memory assigned to VMs as a share of each host's physical memory.", "id": 371, "links": [], "title": "VM memory per host", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.85 }, { "color": "red", "value": 0.95 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-372": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]))", "instant": false, "legendFormat": "{{instance}} write", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (instance) (rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]))", "instant": false, "legendFormat": "{{instance}} read", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Read and write operations per second of all virtual disks on each host; reads are drawn below the axis.", "id": 372, "links": [], "title": "Virtual disk IOPS", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "iops" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* read$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-380": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual hard disks attached to the VMs of the cluster. Needs the hyperv collector with its virtual_hard_disk sub-collector.", "id": 380, "links": [], "title": "Virtual hard disks", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-381": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Maximum size of all virtual hard disks, as the guests see them.", "id": 381, "links": [], "title": "Size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-382": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the virtual hard disk files take on storage.", "id": 382, "links": [], "title": "File size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-383": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(clamp_min(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", type=\"dynamic\"}) - max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}), 0))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Space the dynamic (thin provisioned) disks would still take if every one grew to its full size. Keep this much free on the Cluster Shared Volumes, or watch it.", "id": 383, "links": [], "title": "Growth if thick", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-384": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", type=\"differencing\"})) or (0 * count(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Disks of checkpoints and child disks. Old checkpoints grow and slow down I/O; merge them when they are no longer needed.", "id": 384, "links": [], "title": "Differencing disks", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-385": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1)) > 0.01) or vector(0)", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual disks with an average latency per I/O above 0.01 s and at least one I/O per second.", "id": 385, "links": [], "title": "Slow virtual disks", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red", "value": 5 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-386": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count by (type) (max by (path, type) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (type) (max by (path, type) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (type) (max by (path, type) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "type", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "type": 0 }, "renameByName": { "Value #A": "Disks", "Value #B": "Size", "Value #C": "File size", "type": "Type" } } } } ] } }, "description": "Disks, size and file size per provisioning type: fixed (thick), dynamic (thin) and differencing (checkpoint or child disk).", "id": 386, "links": [], "title": "Capacity by type", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(Size|File size)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Type" } ] } }, "version": "" } } }, "panel-387": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (type) (max by (path, type) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "{{type}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Space the virtual hard disk files take on storage, per provisioning type. Dynamic and differencing disks grow with the data the guests write.", "id": 387, "links": [], "title": "File size by type", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-388": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path, vm, type, instance) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "clamp_min(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", type=\"dynamic\"}) - max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}), 0)", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "path", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 4, "Value #B": 5, "Value #C": 6, "Value #D": 7, "instance": 3, "path": 1, "type": 2, "vm": 0 }, "renameByName": { "Value #A": "Size", "Value #B": "File size", "Value #C": "Fill", "Value #D": "Growth if thick", "instance": "Host", "path": "Path", "type": "Type", "vm": "VM" } } } } ] } }, "description": "Every virtual hard disk of the cluster with its VM, host and type. For a checkpoint, the file size only counts the current .avhdx, not its parent disks.", "id": 388, "links": [], "title": "Virtual hard disks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(Size|File size|Growth if thick)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Fill" }, "properties": [ { "id": "unit", "value": "percentunit" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "VM" } ] } }, "version": "" } } }, "panel-389": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_join(max by (device, disk, vm, instance) (label_replace(topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")), \"key\", \"/\", \"instance\", \"device\")", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (key) (label_join(max by (device, disk, vm, instance) (label_replace(avg_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")), \"key\", \"/\", \"instance\", \"device\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (key) (label_join(max by (device, disk, vm, instance) (label_replace(max_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")), \"key\", \"/\", \"instance\", \"device\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (key) (label_join(max by (device, disk, vm, instance) (label_replace(avg_over_time(((rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) + rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval])))[$__range:5m]) and on (instance, device) topk(10, count_over_time((rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1) > 0.01)[$__range:5m]) * 300) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")), \"key\", \"/\", \"instance\", \"device\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "key", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 3, "Value #B": 4, "Value #C": 5, "Value #D": 6, "disk": 0, "instance": 2, "vm": 1 }, "renameByName": { "Value #A": "Time above threshold", "Value #B": "Average latency", "Value #C": "Maximum latency", "Value #D": "IOPS", "disk": "Disk", "instance": "Host", "vm": "VM" } } } } ] } }, "description": "Virtual disks of the cluster that were above 0.01 s average latency per I/O in the time range, worst first. Time above threshold is counted in 5-minute steps, so permanently slow disks rank above short spikes. Disks with less than one I/O per second are ignored.", "id": 389, "links": [], "title": "Slowest virtual disks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(key|device)$" }, "properties": [ { "id": "custom.hidden", "value": true } ] }, { "matcher": { "id": "byName", "options": "Time above threshold" }, "properties": [ { "id": "unit", "value": "s" }, { "id": "custom.cellOptions", "value": { "mode": "basic", "type": "color-background" } }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 900 }, { "color": "red", "value": 3600 } ] } } ] }, { "matcher": { "id": "byRegexp", "options": "^(Average|Maximum) latency$" }, "properties": [ { "id": "unit", "value": "s" } ] }, { "matcher": { "id": "byName", "options": "IOPS" }, "properties": [ { "id": "unit", "value": "iops" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": true, "displayName": "Time above threshold" } ] } }, "version": "" } } }, "panel-390": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(topk(10, sum by (vm, path) ((rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) + rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval])) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1))), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{vm}} {{disk}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "The ten virtual disks with the most read and write operations per second.", "id": 390, "links": [], "title": "Busiest virtual disks", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "iops" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-391": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "label_replace(topk(10, max by (vm, path) (rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) / (rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=~\"$cluster_instance\"}[$__rate_interval]) > 1) * on (instance, device) group_left (vm, path) (0 * topk by (instance, device) (1, max by (instance, device, vm, path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", device!=\"\"})) + 1))), \"disk\", \"$1\", \"path\", \".*[\\\\\\\\/]([^\\\\\\\\/]+)$\")", "instant": false, "legendFormat": "{{vm}} {{disk}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "The ten virtual disks with the highest average latency per I/O and at least one I/O per second. The dashed line is the slow-disk threshold.", "id": 391, "links": [], "title": "Highest disk latency", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.01 } ] }, "unit": "s" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-400": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (shared_volume) (windows_mscluster_shared_volumes_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Size of all Cluster Shared Volumes. Requires the mscluster collector.", "id": 400, "links": [], "title": "CSV size", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-401": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (shared_volume) (windows_mscluster_shared_volumes_free_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Free space on all Cluster Shared Volumes. On thin provisioned Storage Spaces virtual disks, the volumes can be larger than their pool; then the pool usage is the limit.", "id": 401, "links": [], "title": "CSV free", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-402": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(max by (shared_volume) (windows_mscluster_shared_volumes_free_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})) - sum(clamp_min(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\", type=\"dynamic\"}) - max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\"}), 0))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Free space left on all Cluster Shared Volumes if every dynamic (thin provisioned) virtual hard disk on them grew to its full size. Below zero, the volumes are overcommitted by thin provisioned disks.", "id": 402, "links": [], "title": "CSV free if thick", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "green", "value": 0 } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-403": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count((max by (pool) (windows_storage_spaces_pool_health_status{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"})) != 0) or (0 * count(max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Storage pools whose health status is not Healthy, excluding the primordial pool. Requires the storage_spaces collector.", "id": 403, "links": [], "title": "Pools not OK", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-404": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count(max by (virtual_disk) (windows_storage_spaces_virtual_disk_health_status{job=~\"$job\", instance=~\"$cluster_instance\"}) != 0) or (0 * count(max by (virtual_disk) (windows_storage_spaces_virtual_disk_info{job=~\"$job\", instance=~\"$cluster_instance\"})))", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Storage Spaces virtual disks whose health status is not Healthy.", "id": 404, "links": [], "title": "Virtual disks not OK", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-405": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (shared_volume) (windows_mscluster_shared_volumes_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (shared_volume) (windows_mscluster_shared_volumes_free_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "1 - max by (shared_volume) (windows_mscluster_shared_volumes_free_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (shared_volume) (windows_mscluster_shared_volumes_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "shared_volume", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "shared_volume": 0 }, "renameByName": { "Value #A": "Size", "Value #B": "Free", "Value #C": "Used", "shared_volume": "Volume" } } } } ] } }, "description": "Size, free space and used share of each Cluster Shared Volume. Requires the mscluster collector.", "id": 405, "links": [], "title": "Cluster Shared Volumes", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(Size|Free)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Used" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "min", "value": 0 }, { "id": "max", "value": 1 }, { "id": "decimals", "value": 1 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.8 }, { "color": "red", "value": 0.9 } ] } }, { "id": "color", "value": { "mode": "thresholds" } }, { "id": "custom.cellOptions", "value": { "mode": "basic", "type": "gauge", "valueDisplayMode": "text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Volume" } ] } }, "version": "" } } }, "panel-406": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "1 - max by (shared_volume) (windows_mscluster_shared_volumes_free_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) / max by (shared_volume) (windows_mscluster_shared_volumes_total_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "{{shared_volume}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Used share of each Cluster Shared Volume. Thin provisioned virtual hard disks keep growing into the free space.", "id": 406, "links": [], "title": "Cluster Shared Volume usage", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.8 }, { "color": "red", "value": 0.9 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-407": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "count by (folder) (label_replace(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\"}), \"folder\", \"$1\", \"path\", \"(?i).:\\\\\\\\ClusterStorage\\\\\\\\([^\\\\\\\\]+)\\\\\\\\.*\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (folder) (label_replace(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\"}), \"folder\", \"$1\", \"path\", \"(?i).:\\\\\\\\ClusterStorage\\\\\\\\([^\\\\\\\\]+)\\\\\\\\.*\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (folder) (label_replace(max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\"}), \"folder\", \"$1\", \"path\", \"(?i).:\\\\\\\\ClusterStorage\\\\\\\\([^\\\\\\\\]+)\\\\\\\\.*\"))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (folder) (clamp_min(label_replace(max by (path) (windows_hyperv_virtual_hard_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\", type=\"dynamic\"}), \"folder\", \"$1\", \"path\", \"(?i).:\\\\\\\\ClusterStorage\\\\\\\\([^\\\\\\\\]+)\\\\\\\\.*\") - on (path, folder) label_replace(max by (path) (windows_hyperv_virtual_hard_disk_file_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\", path=~\"(?i).:\\\\\\\\ClusterStorage\\\\\\\\.*\"}), \"folder\", \"$1\", \"path\", \"(?i).:\\\\\\\\ClusterStorage\\\\\\\\([^\\\\\\\\]+)\\\\\\\\.*\"), 0))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "folder", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "folder": 0 }, "renameByName": { "Value #A": "Disks", "Value #B": "Size", "Value #C": "File size", "Value #D": "Growth if thick", "folder": "Folder" } } } } ] } }, "description": "Virtual hard disks by the folder below C:\\ClusterStorage that holds them, usually the mount point of one Cluster Shared Volume. Growth if thick is the space the dynamic disks would still take if they grew to their full size.", "id": 407, "links": [], "title": "Virtual hard disks per CSV folder", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(Size|File size|Growth if thick)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Folder" } ] } }, "version": "" } } }, "panel-408": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "(max by (pool) (windows_storage_spaces_pool_health_status{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "(max by (pool) (windows_storage_spaces_pool_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "(max by (pool) (windows_storage_spaces_pool_allocated_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "(max by (pool) (windows_storage_spaces_pool_allocated_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"})) / (max by (pool) (windows_storage_spaces_pool_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"}))", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "pool", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "pool": 0 }, "renameByName": { "Value #A": "Health", "Value #B": "Size", "Value #C": "Allocated", "Value #D": "Used", "pool": "Pool" } } } } ] } }, "description": "Health, size, allocated capacity and used share of each storage pool, excluding the primordial pool of unpooled disks.", "id": 408, "links": [], "title": "Storage pools", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "Health" }, "properties": [ { "id": "mappings", "value": [ { "options": { "0": { "color": "green", "index": 0, "text": "Healthy" }, "1": { "color": "orange", "index": 1, "text": "Warning" }, "2": { "color": "red", "index": 2, "text": "Unhealthy" }, "5": { "color": "text", "index": 3, "text": "Unknown" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] }, { "matcher": { "id": "byRegexp", "options": "^(Size|Allocated)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Used" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "min", "value": 0 }, { "id": "max", "value": 1 }, { "id": "decimals", "value": 1 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.8 }, { "color": "red", "value": 0.9 } ] } }, { "id": "color", "value": { "mode": "thresholds" } }, { "id": "custom.cellOptions", "value": { "mode": "basic", "type": "gauge", "valueDisplayMode": "text" } } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Pool" } ] } }, "version": "" } } }, "panel-409": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_health_status{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "B" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_allocated_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "C" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_footprint_on_pool_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "D" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_storage_efficiency_ratio{job=~\"$job\", instance=~\"$cluster_instance\"})", "format": "table", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "E" } } ], "queryOptions": {}, "transformations": [ { "group": "joinByField", "kind": "Transformation", "spec": { "options": { "byField": "virtual_disk", "mode": "outer" } } }, { "group": "organize", "kind": "Transformation", "spec": { "options": { "excludeByName": { "Time": true, "Time 1": true, "Time 2": true, "Time 3": true, "Time 4": true, "Time 5": true }, "includeByName": {}, "indexByName": { "Value #A": 1, "Value #B": 2, "Value #C": 3, "Value #D": 4, "Value #E": 5, "virtual_disk": 0 }, "renameByName": { "Value #A": "Health", "Value #B": "Size", "Value #C": "Allocated", "Value #D": "Footprint", "Value #E": "Efficiency", "virtual_disk": "Virtual disk" } } } } ] } }, "description": "Health, size, allocated capacity, pool footprint and storage efficiency (allocated size per pool footprint) of each virtual disk. Mirrors and parity lower the efficiency.", "id": 409, "links": [], "title": "Storage Spaces virtual disks", "vizConfig": { "group": "table", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "filterable": false, "inspect": false, "minWidth": 60 }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "short" }, "overrides": [ { "matcher": { "id": "byName", "options": "Health" }, "properties": [ { "id": "mappings", "value": [ { "options": { "0": { "color": "green", "index": 0, "text": "Healthy" }, "1": { "color": "orange", "index": 1, "text": "Warning" }, "2": { "color": "red", "index": 2, "text": "Unhealthy" }, "5": { "color": "text", "index": 3, "text": "Unknown" } }, "type": "value" } ] }, { "id": "custom.cellOptions", "value": { "type": "color-text" } } ] }, { "matcher": { "id": "byRegexp", "options": "^(Size|Allocated|Footprint)$" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Efficiency" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "decimals", "value": 1 } ] } ] }, "options": { "cellHeight": "sm", "enablePagination": false, "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": false, "displayName": "Virtual disk" } ] } }, "version": "" } } }, "panel-410": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "(max by (pool) (windows_storage_spaces_pool_allocated_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"})) / (max by (pool) (windows_storage_spaces_pool_size_bytes{job=~\"$job\", instance=~\"$cluster_instance\"}) * on (pool) group_left () max by (pool) (windows_storage_spaces_pool_info{job=~\"$job\", instance=~\"$cluster_instance\", primordial=\"false\"}))", "instant": false, "legendFormat": "{{pool}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Allocated share of each storage pool, excluding the primordial pool. A full pool cannot extend thin provisioned virtual disks, which then fail writes.", "id": 410, "links": [], "title": "Pool usage", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 0.8 }, { "color": "red", "value": 0.9 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-411": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "max by (virtual_disk) (windows_storage_spaces_virtual_disk_footprint_on_pool_bytes{job=~\"$job\", instance=~\"$cluster_instance\"})", "instant": false, "legendFormat": "{{virtual_disk}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Pool capacity each Storage Spaces virtual disk consumes, including resiliency copies.", "id": 411, "links": [], "title": "Virtual disk footprint", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-63": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(windows_hyperv_virtual_machines{job=~\"$job\", instance=\"$instance\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Needs the hyperv collector, which is not enabled by default.", "id": 63, "links": [], "title": "Virtual machines", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-64": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum(windows_hyperv_virtual_machines{job=~\"$job\", instance=\"$instance\", state=\"critical\"})", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Number of Hyper-V virtual machines reporting critical health. Inspect the affected VM and Hyper-V event logs; this requires the optional hyperv collector.", "id": 64, "links": [], "title": "VMs in critical health", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-65": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_wmi_health{job=~\"$job\", instance=\"$instance\"}", "instant": true, "legendFormat": "__auto", "range": false }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Whether the Hyper-V WMI namespace answers. When it stops answering, Hyper-V Manager and Failover Cluster Manager usually cannot manage the host.", "id": 65, "links": [], "title": "Hyper-V WMI", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [ { "options": { "0": { "index": 0, "text": "not responding" }, "1": { "index": 1, "text": "ok" } }, "type": "value" } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-66": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_host_logical_processors{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Number of host logical processors reported by Hyper-V. Use this as capacity context for host and virtual processor load; this requires the optional hyperv collector.", "id": 66, "links": [], "title": "Logical processors", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-67": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_assigned_vm_processors{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual processors assigned to all VMs.", "id": 67, "links": [], "title": "Virtual processors", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-68": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_assigned_vm_processors{job=~\"$job\", instance=\"$instance\"} / windows_hyperv_host_logical_processors{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "__auto", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": { "maxDataPoints": 100 }, "transformations": [] } }, "description": "Virtual processors assigned to VMs per logical processor of the host.", "id": 68, "links": [], "title": "vCPU per logical CPU", "vizConfig": { "group": "stat", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "fixedColor": "text", "mode": "fixed" }, "decimals": 2, "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "short" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "auto", "wideLayout": true } }, "version": "" } } }, "panel-69": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (state) (rate(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=\"$instance\", state!=\"idle\"}[$__rate_interval])) / scalar(count(windows_hyperv_hypervisor_logical_processor_time_seconds_total{job=~\"$job\", instance=\"$instance\", state=\"idle\"}))", "instant": false, "legendFormat": "{{state}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Share of all logical processors spent running guest code (VMs and the root partition) and in the hypervisor. With Hyper-V enabled, the CPU tab only sees the root partition.", "id": 69, "links": [], "title": "Host CPU time by state", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "max": 1, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-70": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "sum by (vm) (rate(windows_hyperv_hypervisor_virtual_processor_run_time_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])) / scalar(max(windows_hyperv_host_logical_processors{job=~\"$job\", instance=\"$instance\"}))", "instant": false, "legendFormat": "{{vm}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Virtual processor run time of each VM as a share of all logical processors of the host.", "id": 70, "links": [], "title": "CPU usage per VM", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true, "sortBy": "Mean", "sortDesc": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-72": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_dynamic_memory_vm_physical_bytes{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "{{vm}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Physical memory currently assigned to each VM with dynamic memory.", "id": 72, "links": [], "title": "Memory assigned to VMs", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 40, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "normal" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true, "sortBy": "Mean", "sortDesc": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-73": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_dynamic_memory_vm_pressure_current_ratio{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "{{vm}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Hyper-V memory demand of each VM as a share of its assigned memory. The demand follows the guest's commit charge, not the RAM in use, and is reported for static and dynamic memory. Above 100% the guest has committed more than its RAM: the rest is only reserved or paged out. Check paging inside the guest before adding RAM.", "id": 73, "links": [], "title": "VM memory pressure", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 1 } ] }, "unit": "percentunit" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-74": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "windows_hyperv_dynamic_memory_balancer_available_memory_bytes{job=~\"$job\", instance=\"$instance\"}", "instant": false, "legendFormat": "{{balancer}}", "range": true }, "version": "v0" }, "refId": "A" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Memory the dynamic memory balancer can still hand out to VMs.", "id": 74, "links": [], "title": "Memory available for VMs", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-76": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_written_bytes_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{device}} write", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_read_bytes_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{device}} read", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Reads are drawn below the axis.", "id": 76, "links": [], "title": "Virtual disk throughput", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "Bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* read$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-77": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_operations_written_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{device}} write", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_operations_read_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{device}} read", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Reads are drawn below the axis.", "id": 77, "links": [], "title": "Virtual disk IOPS", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "iops" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* read$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-78": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) / rate(windows_hyperv_virtual_storage_device_throughput_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{device}} latency", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_storage_device_errors_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) > 0", "instant": false, "legendFormat": "{{device}} errors", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Average I/O latency of each virtual disk: the total I/O latency divided by the number of completed I/O transfers. Errors use the right axis.", "id": 78, "links": [], "title": "Virtual disk latency and errors", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "s" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* errors" }, "properties": [ { "id": "unit", "value": "ops" }, { "id": "custom.axisPlacement", "value": "right" }, { "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-80": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_vswitch_bytes_sent_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * 8", "instant": false, "legendFormat": "{{vswitch}} sent", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_vswitch_bytes_received_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * 8", "instant": false, "legendFormat": "{{vswitch}} received", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Received traffic is drawn below the axis.", "id": 80, "links": [], "title": "Virtual switch throughput", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* received$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-81": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_vswitch_dropped_packets_incoming_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{vswitch}} incoming", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_vswitch_dropped_packets_outcoming_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval])", "instant": false, "legendFormat": "{{vswitch}} outgoing", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Incoming and outgoing packets dropped per second by each Hyper-V virtual switch. Correlate sustained drops with network load, resource pressure and switch policies; this requires the optional hyperv collector.", "id": 81, "links": [], "title": "Virtual switch dropped packets", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "pps" }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } }, "panel-82": { "kind": "Panel", "spec": { "data": { "kind": "QueryGroup", "spec": { "queries": [ { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_network_adapter_sent_bytes_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * 8", "instant": false, "legendFormat": "{{adapter}} sent", "range": true }, "version": "v0" }, "refId": "A" } }, { "kind": "PanelQuery", "spec": { "hidden": false, "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "editorMode": "code", "expr": "rate(windows_hyperv_virtual_network_adapter_received_bytes_total{job=~\"$job\", instance=\"$instance\"}[$__rate_interval]) * 8", "instant": false, "legendFormat": "{{adapter}} received", "range": true }, "version": "v0" }, "refId": "B" } } ], "queryOptions": {}, "transformations": [] } }, "description": "Received traffic is drawn below the axis.", "id": 82, "links": [], "title": "VM network adapter throughput", "vizConfig": { "group": "timeseries", "kind": "VizConfig", "spec": { "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "opacity", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 4, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "unit": "bps" }, "overrides": [ { "matcher": { "id": "byRegexp", "options": ".* received$" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } } }, "version": "" } } } }, "layout": { "kind": "TabsLayout", "spec": { "tabs": [ { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-360" }, "height": 4, "width": 3, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-361" }, "height": 4, "width": 3, "x": 3, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-362" }, "height": 4, "width": 3, "x": 6, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-363" }, "height": 4, "width": 3, "x": 9, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-364" }, "height": 4, "width": 3, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-365" }, "height": 4, "width": 3, "x": 15, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-366" }, "height": 4, "width": 3, "x": 18, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-367" }, "height": 4, "width": 3, "x": 21, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-368" }, "height": 8, "width": 24, "x": 0, "y": 0 } } ] } }, "title": "Hosts" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-369" }, "height": 8, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-370" }, "height": 8, "width": 12, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-371" }, "height": 8, "width": 12, "x": 0, "y": 8 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-372" }, "height": 8, "width": 12, "x": 12, "y": 8 } } ] } }, "title": "Load" } } ] } }, "title": "Overview" } }, { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-330" }, "height": 4, "width": 4, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-331" }, "height": 4, "width": 4, "x": 4, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-332" }, "height": 4, "width": 4, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-333" }, "height": 4, "width": 3, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-334" }, "height": 4, "width": 3, "x": 15, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-335" }, "height": 4, "width": 3, "x": 18, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-336" }, "height": 4, "width": 3, "x": 21, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-337" }, "height": 7, "width": 24, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-338" }, "height": 8, "width": 12, "x": 0, "y": 7 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-339" }, "height": 8, "width": 12, "x": 12, "y": 7 } } ] } }, "title": "Nodes" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-340" }, "height": 9, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-341" }, "height": 9, "width": 12, "x": 12, "y": 0 } } ] } }, "title": "Resource groups and resources" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-342" }, "height": 6, "width": 24, "x": 0, "y": 0 } } ] } }, "title": "Networks" } } ] } }, "title": "Cluster" } }, { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-63" }, "height": 4, "width": 3, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-64" }, "height": 4, "width": 3, "x": 3, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-65" }, "height": 4, "width": 3, "x": 6, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-66" }, "height": 4, "width": 3, "x": 9, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-67" }, "height": 4, "width": 3, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-68" }, "height": 4, "width": 3, "x": 15, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-290" }, "height": 4, "width": 3, "x": 18, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-291" }, "height": 4, "width": 3, "x": 21, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-292" }, "height": 10, "width": 24, "x": 0, "y": 0 } } ] } }, "title": "Virtual machines" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-69" }, "height": 8, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-70" }, "height": 8, "width": 12, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-293" }, "height": 8, "width": 24, "x": 0, "y": 8 } } ] } }, "title": "CPU" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-72" }, "height": 8, "width": 8, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-73" }, "height": 8, "width": 8, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-74" }, "height": 8, "width": 8, "x": 16, "y": 0 } } ] } }, "title": "Memory" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-76" }, "height": 8, "width": 8, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-77" }, "height": 8, "width": 8, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-78" }, "height": 8, "width": 8, "x": 16, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-294" }, "height": 9, "width": 24, "x": 0, "y": 8 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-295" }, "height": 4, "width": 8, "x": 0, "y": 17 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-296" }, "height": 4, "width": 8, "x": 8, "y": 17 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-297" }, "height": 4, "width": 8, "x": 16, "y": 17 } } ] } }, "title": "Storage" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-80" }, "height": 8, "width": 8, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-81" }, "height": 8, "width": 8, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-82" }, "height": 8, "width": 8, "x": 16, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-298" }, "height": 8, "width": 24, "x": 0, "y": 8 } } ] } }, "title": "Network" } } ] } }, "title": "Host" } }, { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-300" }, "height": 4, "width": 4, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-301" }, "height": 4, "width": 4, "x": 4, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-302" }, "height": 4, "width": 4, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-303" }, "height": 4, "width": 4, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-304" }, "height": 4, "width": 4, "x": 16, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-305" }, "height": 4, "width": 4, "x": 20, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-306" }, "height": 8, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-307" }, "height": 8, "width": 12, "x": 12, "y": 0 } } ] } }, "title": "CPU" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-308" }, "height": 8, "width": 8, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-309" }, "height": 8, "width": 8, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-310" }, "height": 8, "width": 8, "x": 16, "y": 0 } } ] } }, "title": "Memory" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-311" }, "height": 4, "width": 6, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-312" }, "height": 4, "width": 6, "x": 6, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-313" }, "height": 4, "width": 6, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-314" }, "height": 4, "width": 6, "x": 18, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-315" }, "height": 7, "width": 24, "x": 0, "y": 4 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-316" }, "height": 8, "width": 12, "x": 0, "y": 11 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-317" }, "height": 8, "width": 12, "x": 12, "y": 11 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-318" }, "height": 8, "width": 24, "x": 0, "y": 19 } } ] } }, "title": "Disks" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-319" }, "height": 8, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-320" }, "height": 8, "width": 12, "x": 12, "y": 0 } } ] } }, "title": "Network" } } ] } }, "title": "VM" } }, { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-380" }, "height": 4, "width": 4, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-381" }, "height": 4, "width": 4, "x": 4, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-382" }, "height": 4, "width": 4, "x": 8, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-383" }, "height": 4, "width": 4, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-384" }, "height": 4, "width": 4, "x": 16, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-385" }, "height": 4, "width": 4, "x": 20, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-386" }, "height": 7, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-387" }, "height": 7, "width": 12, "x": 12, "y": 0 } } ] } }, "title": "Capacity" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-388" }, "height": 10, "width": 24, "x": 0, "y": 0 } } ] } }, "title": "Virtual hard disks" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-389" }, "height": 9, "width": 24, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-390" }, "height": 8, "width": 12, "x": 0, "y": 9 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-391" }, "height": 8, "width": 12, "x": 12, "y": 9 } } ] } }, "title": "Performance" } } ] } }, "title": "VM disks" } }, { "kind": "TabsLayoutTab", "spec": { "layout": { "kind": "RowsLayout", "spec": { "rows": [ { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-400" }, "height": 4, "width": 5, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-401" }, "height": 4, "width": 5, "x": 5, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-402" }, "height": 4, "width": 5, "x": 10, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-403" }, "height": 4, "width": 5, "x": 15, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-404" }, "height": 4, "width": 4, "x": 20, "y": 0 } } ] } }, "title": "Summary" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-405" }, "height": 8, "width": 12, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-406" }, "height": 8, "width": 12, "x": 12, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-407" }, "height": 8, "width": 24, "x": 0, "y": 8 } } ] } }, "title": "Cluster Shared Volumes" } }, { "kind": "RowsLayoutRow", "spec": { "collapse": false, "layout": { "kind": "GridLayout", "spec": { "items": [ { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-408" }, "height": 5, "width": 24, "x": 0, "y": 0 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-409" }, "height": 8, "width": 24, "x": 0, "y": 5 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-410" }, "height": 8, "width": 12, "x": 0, "y": 13 } }, { "kind": "GridLayoutItem", "spec": { "element": { "kind": "ElementReference", "name": "panel-411" }, "height": 8, "width": 12, "x": 12, "y": 13 } } ] } }, "title": "Storage Spaces Direct" } } ] } }, "title": "Storage" } } ] } }, "links": [ { "asDropdown": true, "icon": "external link", "includeVars": true, "keepTime": true, "tags": [ "prometheus", "windows", "windows_exporter" ], "targetBlank": false, "title": "Windows Exporter", "tooltip": "Dashboards for windows_exporter", "type": "dashboards", "url": "" }, { "asDropdown": false, "icon": "doc", "includeVars": false, "keepTime": false, "tags": [], "targetBlank": true, "title": "windows_exporter", "tooltip": "", "type": "link", "url": "https://github.com/prometheus-community/windows_exporter" } ], "liveNow": false, "preload": false, "tags": [ "prometheus", "windows", "windows_exporter" ], "timeSettings": { "autoRefresh": "1m", "autoRefreshIntervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "fiscalYearStartMonth": 0, "from": "now-3h", "hideTimepicker": false, "to": "now" }, "title": "Windows Exporter / Hyper-V Cluster", "variables": [ { "kind": "DatasourceVariable", "spec": { "allowCustomValue": true, "current": { "text": "", "value": "" }, "hide": "dontHide", "includeAll": false, "label": "Data source", "multi": false, "name": "datasource", "options": [], "pluginId": "prometheus", "refresh": "onDashboardLoad", "regex": "", "skipUrlSync": false } }, { "kind": "QueryVariable", "spec": { "allowCustomValue": true, "current": { "text": [ "All" ], "value": [ "$__all" ] }, "definition": "label_values(windows_os_hostname, job)", "hide": "dontHide", "includeAll": true, "label": "Job", "multi": true, "name": "job", "options": [], "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "qryType": 1, "query": "label_values(windows_os_hostname, job)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "version": "v0" }, "refresh": "onTimeRangeChanged", "regex": "", "skipUrlSync": false, "sort": "alphabeticalAsc" } }, { "kind": "QueryVariable", "spec": { "allowCustomValue": true, "current": { "text": "", "value": "" }, "definition": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\"}, cluster)", "hide": "dontHide", "includeAll": false, "label": "Cluster", "multi": false, "name": "cluster", "options": [], "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "qryType": 1, "query": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\"}, cluster)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "version": "v0" }, "refresh": "onTimeRangeChanged", "regex": "", "skipUrlSync": false, "sort": "alphabeticalAsc" } }, { "kind": "QueryVariable", "spec": { "allowCustomValue": true, "current": { "text": [ "All" ], "value": [ "$__all" ] }, "definition": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\", cluster=\"$cluster\"}, instance)", "hide": "hideVariable", "includeAll": true, "label": "Cluster hosts", "multi": true, "name": "cluster_instance", "options": [], "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "qryType": 1, "query": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\", cluster=\"$cluster\"}, instance)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "version": "v0" }, "refresh": "onTimeRangeChanged", "regex": "", "skipUrlSync": false, "sort": "alphabeticalAsc" } }, { "kind": "QueryVariable", "spec": { "allowCustomValue": true, "current": { "text": "", "value": "" }, "definition": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\", cluster=\"$cluster\"}, instance)", "hide": "dontHide", "includeAll": false, "label": "Host", "multi": false, "name": "instance", "options": [], "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "qryType": 1, "query": "label_values(windows_mscluster_cluster_quorum_type_value{job=~\"$job\", cluster=\"$cluster\"}, instance)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "version": "v0" }, "refresh": "onTimeRangeChanged", "regex": "", "skipUrlSync": false, "sort": "alphabeticalAsc" } }, { "kind": "QueryVariable", "spec": { "allowCustomValue": true, "current": { "text": "", "value": "" }, "definition": "label_values(windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}, vm)", "hide": "dontHide", "includeAll": false, "label": "VM", "multi": false, "name": "vm", "options": [], "query": { "datasource": { "name": "${datasource}" }, "group": "prometheus", "kind": "DataQuery", "spec": { "qryType": 1, "query": "label_values(windows_hyperv_vm_processors{job=~\"$job\", instance=~\"$cluster_instance\"}, vm)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "version": "v0" }, "refresh": "onTimeRangeChanged", "regex": "", "skipUrlSync": false, "sort": "alphabeticalAsc" } } ] } }