From e4db28262df4bbc1e78945ad84937136856969f1 Mon Sep 17 00:00:00 2001 From: Shirly Radco Date: Tue, 10 Sep 2024 18:10:22 +0300 Subject: [PATCH] Add VMs inventory and health dashboards In this PR we introduce 4 dashboard related to Virtual Machines: 1. Service Level dashboards - Virtual Machines by Time in Status 2. Inventory dashboards - Virtual Machines Inventory 3. Executive dashboards - Single Cluster View 4. Executive dashboards - Single Virtual Machine View And update the "ACM - OpenShift Virtualization Overview" name to "Executive dashboards - Clusters Overview" and enriched it with additional details. Also moved all dashboards under the "ACM / OpenShift Virtualization" folder. Signed-off-by: Shirly Radco --- .../base/config/metrics_allowlist.yaml | 14 + ...acm-openshift-virtualization-overview.yaml | 2880 +++++++++++++---- ...ft-virtualization-single-cluster-view.yaml | 2553 +++++++++++++++ ...enshift-virtualization-single-vm-view.yaml | 1773 ++++++++++ ...cm-virtual-machines-by-time-in-status.yaml | 425 +++ .../dash-acm-virtual-machines-inventory.yaml | 322 ++ .../manifests/base/grafana/kustomization.yaml | 4 + 7 files changed, 7320 insertions(+), 651 deletions(-) create mode 100644 operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-cluster-view.yaml create mode 100644 operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-vm-view.yaml create mode 100644 operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-by-time-in-status.yaml create mode 100644 operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-inventory.yaml diff --git a/operators/multiclusterobservability/manifests/base/config/metrics_allowlist.yaml b/operators/multiclusterobservability/manifests/base/config/metrics_allowlist.yaml index 6724b1a785..235efe1c04 100644 --- a/operators/multiclusterobservability/manifests/base/config/metrics_allowlist.yaml +++ b/operators/multiclusterobservability/manifests/base/config/metrics_allowlist.yaml @@ -143,6 +143,20 @@ data: - cnv:vmi_status_running:count - kubevirt_hyperconverged_operator_health_status - kubevirt_hco_system_health_status + - kubevirt_vmi_info + - kubevirt_vm_running_status_last_transition_timestamp_seconds + - kubevirt_vm_non_running_status_last_transition_timestamp_seconds + - kubevirt_vm_error_status_last_transition_timestamp_seconds + - kubevirt_vm_starting_status_last_transition_timestamp_seconds + - kubevirt_vm_migrating_status_last_transition_timestamp_seconds + - kubevirt_vmi_memory_available_bytes + - kubevirt_vmi_phase_count + - kubevirt_vmi_cpu_usage_seconds_total + - kubevirt_vmi_network_receive_bytes_total + - kubevirt_vmi_network_transmit_bytes_total + - kubevirt_vmi_storage_iops_read_total + - kubevirt_vmi_storage_iops_write_total + matches: - __name__="workqueue_queue_duration_seconds_bucket",job="apiserver" - __name__="workqueue_adds_total",job="apiserver" diff --git a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-overview.yaml b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-overview.yaml index 68c9691de3..b9769db462 100644 --- a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-overview.yaml +++ b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-overview.yaml @@ -1,6 +1,6 @@ apiVersion: v1 data: - acm-openshift-virtualization-overview.json: |- + acm-openshift-virtualization-clusters-overview.json: |- { "annotations": { "list": [ @@ -21,17 +21,15 @@ data: } ] }, - "description": "This dashboard shows details related to the OpenShift Virtualization operator and Virtual machines", + "description": "This dashboard provides insights into the health of the OpenShift Virtualization operator and displays key metrics for virtual machines at the cluster level across multiple clusters. It helps monitor and assess the status of virtualization resources, ensuring smooth operation and quick identification of issues.", "editable": true, "gnetId": null, "graphTooltip": 0, - "id": 29, - "uid": "OmpD1ZoSk", - "iteration": 1709210609633, + "id": 45, + "iteration": 1726559616661, "links": [], "panels": [ { - "collapsed": false, "datasource": null, "gridPos": { "h": 1, @@ -39,18 +37,17 @@ data: "x": 0, "y": 0 }, - "id": 29, - "panels": [], - "title": "OpenShift Virtualization Operator Health", + "id": 68, + "title": "General Information", "type": "row" }, { "datasource": null, - "description": "Total number of clusters that have alerts that are firing with the operator_health_impact level: critical.", + "description": "Total Clusters with OpenShift Virtualization", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "mode": "fixed" }, "links": [], "mappings": [], @@ -58,7 +55,7 @@ data: "mode": "absolute", "steps": [ { - "color": "red", + "color": "transparent", "value": null } ] @@ -67,12 +64,12 @@ data: "overrides": [] }, "gridPos": { - "h": 3, - "w": 6, + "h": 7, + "w": 3, "x": 0, "y": 1 }, - "id": 16, + "id": 22, "options": { "colorMode": "background", "graphMode": "area", @@ -92,47 +89,52 @@ data: "targets": [ { "exemplar": true, - "expr": "count(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"} == 2) or vector(0)", - "instant": false, + "expr": "count (\nlabel_replace(sum by (name, openshiftVersion) (acm_managed_cluster_labels{name=~\"$cluster\"}), \"cluster\", \"$1\", \"name\", \"(.*)\") + \non(cluster) group_left()(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)\n)", "interval": "", "legendFormat": "", "refId": "A" } ], - "title": "Clusters in Critical Health", + "title": "Total Clusters", "type": "stat" }, { "datasource": null, - "description": "Total number of clusters that have alerts that are firing with the operator_health_impact level: warning.", + "description": "Total number of nodes available to host virtual machines", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, - "links": [], "mappings": [], + "min": 0, + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "orange", + "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] - } + }, + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 3, - "w": 6, - "x": 6, + "h": 7, + "w": 3, + "x": 3, "y": 1 }, - "id": 17, + "id": 34, "options": { - "colorMode": "background", + "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -150,30 +152,31 @@ data: "targets": [ { "exemplar": true, - "expr": "count(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"} == 1) or vector(0)", + "expr": "sum(count by (cluster) (count(kube_node_status_allocatable{resource=~\".*kubevirt.*\", cluster!~\"local-cluster\"}) by (cluster,node)))", "interval": "", "legendFormat": "", "refId": "A" } ], - "title": "Clusters in Warning Health", + "title": "Total Nodes", "type": "stat" }, { "datasource": null, - "description": "Total Clusters with OpenShift Virtualization", + "description": "Total number of Virtual Machines", "fieldConfig": { "defaults": { "color": { - "mode": "fixed" + "mode": "thresholds" }, - "links": [], "mappings": [], + "min": 0, + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "transparent", + "color": "green", "value": null } ] @@ -182,14 +185,14 @@ data: "overrides": [] }, "gridPos": { - "h": 3, - "w": 6, - "x": 12, + "h": 7, + "w": 3, + "x": 6, "y": 1 }, - "id": 22, + "id": 36, "options": { - "colorMode": "background", + "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -207,38 +210,30 @@ data: "targets": [ { "exemplar": true, - "expr": "count (count by (cluster) (csv_succeeded{name=~\".*hyperconverged.*\",cluster=~\"$cluster\"}))", + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}) by (name))", + "instant": false, "interval": "", "legendFormat": "", "refId": "A" } ], - "title": "Total Clusters with OpenShift Virtualization", + "title": "Total VMs", "type": "stat" }, { "datasource": null, - "description": "", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, - "custom": { - "align": "auto", - "displayMode": "auto" - }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", + "color": "text", "value": null - }, - { - "color": "red", - "value": 80 } ] } @@ -247,194 +242,75 @@ data: { "matcher": { "id": "byName", - "options": "% of Total Clusters" + "options": "Stopped" }, "properties": [ { - "id": "unit", - "value": "percentunit" + "id": "color", + "value": { + "fixedColor": "#0e5bd0", + "mode": "fixed" + } } ] - } - ] - }, - "gridPos": { - "h": 10, - "w": 6, - "x": 18, - "y": 1 - }, - "id": 24, - "options": { - "showHeader": true, - "sortBy": [ + }, { - "desc": true, - "displayName": "version" - } - ] - }, - "pluginVersion": "8.5.20", - "targets": [ - { - "exemplar": true, - "expr": "count by (version)( count by (cluster, version) (\n csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}\n and on (cluster) (\n max by (cluster) (csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"})\n )))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "{{version}}", - "refId": "A" - }, - { - "exemplar": true, - "expr": "count by (version)( count by (cluster, version) (\n csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}\n and on (cluster) (\n max by (cluster) (csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"})\n )))/\n(count by (version) (\n csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}\n and on (cluster) (\n max by (cluster) (csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"})\n )))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" - } - ], - "title": "Clusters with OpenShift Virtualization by Version", - "transformations": [ - { - "id": "seriesToColumns", - "options": { - "byField": "version" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time 1": true, - "Time 2": true + "matcher": { + "id": "byName", + "options": "Starting" }, - "indexByName": {}, - "renameByName": { - "Time 2": "", - "Value #A": "Number of Cluster", - "Value #B": "% of Total Clusters" - } - } - } - ], - "type": "table" - }, - { - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "displayMode": "auto" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ + "properties": [ { - "color": "transparent", - "value": null + "id": "color", + "value": { + "fixedColor": "#7ea9ea", + "mode": "fixed" + } } ] - } - }, - "overrides": [ + }, { "matcher": { "id": "byName", - "options": "Cluster" + "options": "Migrating" }, "properties": [ { - "id": "links", - "value": [ - { - "title": "", - "url": "d/OmpD1ZoSk/openshift-virtualization-overview?${__url_time_range}&orgId=1&var-alert=All&${severity:queryparam}&refresh=5m&${health_impact:queryparam}&var-cluster=${__data.fields.Cluster}" - } - ] + "id": "color", + "value": { + "fixedColor": "semi-dark-blue", + "mode": "fixed" + } } ] }, { "matcher": { "id": "byName", - "options": "Operator Health" + "options": "Error" }, "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": "Critical" - } - }, - "type": "value" - } - ] - }, - { - "id": "custom.displayMode", - "value": "color-background-solid" + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } } ] }, { "matcher": { "id": "byName", - "options": "Operator Conditions Health" + "options": "Running" }, "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": "Error" - } - }, - "type": "value" - } - ] - }, - { - "id": "custom.displayMode", - "value": "color-text" + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } } ] } @@ -442,127 +318,141 @@ data: }, "gridPos": { "h": 7, - "w": 18, - "x": 0, - "y": 4 + "w": 9, + "x": 9, + "y": 1 }, - "id": 6, + "id": 66, "options": { - "frameIndex": 0, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Value" - } - ] + "displayMode": "gradient", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} }, "pluginVersion": "8.5.20", "targets": [ { "exemplar": true, - "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))", - "format": "table", - "hide": false, + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "Running", "refId": "A" }, { "exemplar": true, - "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=\"critical\"}) or \n (sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)))", - "format": "table", + "expr": "sum(count(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", "hide": false, "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "Stopped", "refId": "B" }, { "exemplar": true, - "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=\"warning\"}) or (sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)))", - "format": "table", + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", "hide": false, "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "Error", "refId": "C" }, { "exemplar": true, - "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(cnv:vmi_status_running:count{cluster=~\"$cluster\"})) or ((sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0)", - "format": "table", + "expr": "sum(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", "hide": false, "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "Starting", "refId": "D" }, { "exemplar": true, - "expr": "sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster) * 0 \n+ on (cluster) group_left(version) (\n count by (cluster, version) (\n csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}\n and on (cluster) (\n max by (cluster) (csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"})\n )\n )\n)", - "format": "table", + "expr": "sum(count(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", "hide": false, "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "Migrating", "refId": "E" + } + ], + "title": "Virtual Machines by Status", + "type": "bargauge" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 42, + "options": { + "showHeader": true + }, + "pluginVersion": "8.5.20", + "targets": [ { "exemplar": true, - "expr": "sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"})*0 $operator_health\nor on(cluster) (kubevirt_hco_system_health_status{cluster=~\"$cluster\"})", + "expr": "count by (cluster)(time() - (label_replace(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0 ,\"status\",\"starting\",\"\",\"\")) < 604800)", "format": "table", "hide": false, "instant": true, "interval": "", "legendFormat": "", - "refId": "F" + "refId": "A" } ], - "title": "OpenShift Virtualization Health by Cluster", + "title": "Number of VMs started in the last 7 days", "transformations": [ - { - "id": "seriesToColumns", - "options": { - "byField": "cluster" - } - }, { "id": "organize", "options": { "excludeByName": { - "Time": true, - "Time 1": true, - "Time 2": true, - "Time 3": true, - "Time 4": true, - "Time 5": true, - "Time 6": true, - "Value #E": true - }, - "indexByName": { - "Time": 8, - "Value #A": 7, - "Value #B": 3, - "Value #C": 4, - "Value #D": 2, - "Value #E": 5, - "Value #F": 6, - "cluster": 0, - "version": 1 + "Time": true }, + "indexByName": {}, "renameByName": { - "Time 2": "", - "Value": "", - "Value #A": "Operator Health", - "Value #B": "Alerts with Critical Impact", - "Value #C": "Alerts with Warning Impact", - "Value #D": "Number of Running Virtual Machines", - "Value #E": "", - "Value #F": "Operator Conditions Health", - "cluster": "Cluster", - "version": "Version" + "Value": "Total VMs Created" } } } @@ -571,233 +461,20 @@ data: }, { "datasource": null, - "description": "", + "description": "Total number of clusters that have alerts that are firing with the operator_health_impact level: critical.", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, - "custom": { - "align": "auto", - "displayMode": "auto" - }, + "links": [], "mappings": [], "thresholds": { "mode": "absolute", "steps": [ - { - "color": "green", - "value": null - }, { "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Alert Name" - }, - "properties": [ - { - "id": "custom.width", - "value": 272 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Namespace" - }, - "properties": [ - { - "id": "custom.width", - "value": null - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Alert Impact on Operator Health" - }, - "properties": [ - { - "id": "custom.width", - "value": null - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Cluster" - }, - "properties": [ - { - "id": "custom.width", - "value": 219 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Component" - }, - "properties": [ - { - "id": "custom.width", - "value": 349 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Alert Severity" - }, - "properties": [ - { - "id": "custom.width", - "value": 328 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Number of Alerts" - }, - "properties": [ - { - "id": "custom.width", - "value": 296 - } - ] - } - ] - }, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 11 - }, - "id": 8, - "options": { - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Alert Impact on Operator Health" - } - ] - }, - "pluginVersion": "8.5.20", - "targets": [ - { - "exemplar": true, - "expr": "sum by (cluster,alertname,kubernetes_operator_component, operator_health_impact, severity) (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=~\"$health_impact\",operator_health_impact!=\"none\", severity=~\"$severity\"})\n+ on (cluster) group_left()(sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health)*0)", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Alerts Impact on OpenShift Virtualization Health", - "transformations": [ - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": false, - "__name__": true, - "alertstate": true, - "clusterID": true, - "endpoint": true, - "instance": true, - "job": true, - "kubernetes_operator_part_of": true, - "name": true, - "node": true, - "operator_health_impact": false, - "pod": true, - "receive": true, - "service": true, - "tenant_id": true - }, - "indexByName": { - "Time": 0, - "Value": 10, - "alertname": 2, - "cluster": 1, - "container": 7, - "cron_name": 8, - "kubernetes_operator_component": 5, - "namespace": 6, - "ns": 9, - "operator_health_impact": 3, - "severity": 4 - }, - "renameByName": { - "Value": "Number of Alerts", - "alertname": "Alert Name", - "alertstate": "", - "cluster": "Cluster", - "container": "Container", - "endpoint": "", - "kubernetes_operator_component": "Component", - "kubernetes_operator_part_of": "", - "name": "", - "namespace": "Namespace", - "node": "", - "operator_health_impact": "Alert Impact on Operator Health", - "severity": "Alert Severity", - "version": "Version" - } - } - } - ], - "type": "table" - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 18 - }, - "id": 19, - "panels": [], - "title": "Total Alerts by Severity", - "type": "row" - }, - { - "datasource": null, - "description": "Total number of alerts that are firing with the severity level: critical.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null + "value": null } ] } @@ -805,12 +482,12 @@ data: "overrides": [] }, "gridPos": { - "h": 3, - "w": 6, + "h": 7, + "w": 3, "x": 0, - "y": 19 + "y": 8 }, - "id": 12, + "id": 16, "options": { "colorMode": "background", "graphMode": "area", @@ -830,18 +507,19 @@ data: "targets": [ { "exemplar": true, - "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"critical\"}) or vector(0)", + "expr": "count(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"} == 2) or vector(0)", + "instant": false, "interval": "", "legendFormat": "", "refId": "A" } ], - "title": "Critical Severity Alerts", + "title": "Clusters in Critical Health", "type": "stat" }, { "datasource": null, - "description": "Total number of alerts that are firing with the severity level: warning.", + "description": "Total number of clusters that have alerts that are firing with the operator_health_impact level: warning.", "fieldConfig": { "defaults": { "color": { @@ -862,69 +540,12 @@ data: "overrides": [] }, "gridPos": { - "h": 3, - "w": 6, - "x": 6, - "y": 19 - }, - "id": 14, - "options": { - "colorMode": "background", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.5.20", - "targets": [ - { - "exemplar": true, - "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"warning\"}) or vector(0)", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Warning Severity Alerts", - "type": "stat" - }, - { - "datasource": null, - "description": "Total number of alerts that are firing with the severity level: warning.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 12, - "y": 19 + "h": 7, + "w": 3, + "x": 3, + "y": 8 }, - "id": 15, + "id": 17, "options": { "colorMode": "background", "graphMode": "area", @@ -944,13 +565,13 @@ data: "targets": [ { "exemplar": true, - "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"info\"}) or vector(0)", + "expr": "count(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"} == 1) or vector(0)", "interval": "", "legendFormat": "", "refId": "A" } ], - "title": "Info Severity Alerts", + "title": "Clusters in Warning Health", "type": "stat" }, { @@ -984,155 +605,2111 @@ data: { "matcher": { "id": "byName", - "options": "Alert Name" - }, - "properties": [ - { - "id": "custom.width", - "value": 279 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Namespace" + "options": "% of Total Clusters" }, "properties": [ { - "id": "custom.width", - "value": null - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Alert Impact on Operator Health" - }, - "properties": [ + "id": "unit", + "value": "percentunit" + }, { "id": "custom.width", - "value": 232 + "value": 136 } ] }, { "matcher": { "id": "byName", - "options": "Cluster" + "options": "# of Clusters" }, "properties": [ { "id": "custom.width", - "value": 214 + "value": 104 } ] }, { "matcher": { "id": "byName", - "options": "Alert Severity" + "options": "OpenShift Version" }, "properties": [ { "id": "custom.width", - "value": 342 + "value": 130 } ] } ] }, "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 22 + "h": 7, + "w": 9, + "x": 6, + "y": 8 }, - "id": 26, + "id": 24, "options": { "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Number of Alerts" - } - ] + "sortBy": [] }, "pluginVersion": "8.5.20", "targets": [ { "exemplar": true, - "expr": "sum by (cluster,alertname,kubernetes_operator_component, operator_health_impact, severity) (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=~\"$health_impact\",severity=~\"$severity\"})\n+ on (cluster) group_left()(sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health)*0)", + "expr": "count by (version)(count by (cluster, version) (csv_succeeded{name=~\".*hyperconverged.*\",cluster=~\"$cluster\"}<0)) or (count by (version,phase, reason)(count by (cluster, version,phase, reason) (csv_abnormal{name=~\".*hyperconverged.*\",cluster=~\"$cluster\"}>0)))", "format": "table", + "hide": false, "instant": true, "interval": "", - "legendFormat": "", + "legendFormat": "{{version}}", "refId": "A" + }, + { + "exemplar": true, + "expr": "count by (version)(\n count by (cluster, version) (csv_succeeded{name=~\".*hyperconverged.*\",cluster=~\"$cluster\"})\n)/\n(count by (version) (csv_succeeded{name=~\".*hyperconverged.*\"}))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" } ], - "title": " ", + "title": "Clusters by Operator Version", "transformations": [ + { + "id": "seriesToColumns", + "options": { + "byField": "version" + } + }, { "id": "organize", "options": { "excludeByName": { "Time": true, - "Value": false, - "__name__": true, - "alertstate": true, - "clusterID": true, - "endpoint": true, - "instance": true, - "job": true, - "kubernetes_operator_part_of": true, - "name": true, - "node": true, - "operator_health_impact": false, - "pod": true, - "receive": true, - "service": true, - "tenant_id": true + "Time 1": true, + "Time 2": true }, "indexByName": { "Time": 0, - "Value": 10, - "alertname": 2, - "cluster": 1, - "container": 7, - "cron_name": 8, - "kubernetes_operator_component": 5, - "namespace": 6, - "ns": 9, - "operator_health_impact": 3, - "severity": 4 + "Value": 4, + "phase": 2, + "reason": 3, + "version": 1 }, "renameByName": { - "Value": "Number of Alerts", - "alertname": "Alert Name", - "alertstate": "", - "cluster": "Cluster", - "container": "Container", - "endpoint": "", - "kubernetes_operator_component": "Component", - "kubernetes_operator_part_of": "", - "name": "", - "namespace": "Namespace", - "node": "", - "operator_health_impact": "Alert Impact on Operator Health", - "severity": "Alert Severity", - "version": "Version" + "Time 1": "", + "Time 2": "", + "Value #A": "# of Clusters", + "Value #B": "% of Total Clusters", + "openshiftVersion": "OpenShift Version", + "phase": "Phase", + "reason": "Reason", + "version": "OpenShift Virtualization Operator Version" } } } ], "type": "table" - } - ], - "refresh": "5m", - "schemaVersion": 30, - "style": "dark", - "tags": [], + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "% of Total Clusters" + }, + "properties": [ + { + "id": "unit", + "value": "percentunit" + }, + { + "id": "custom.width", + "value": 136 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "# of Clusters" + }, + "properties": [ + { + "id": "custom.width", + "value": 104 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 9, + "x": 15, + "y": 8 + }, + "id": 30, + "options": { + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "count by (openshiftVersion)(\nlabel_replace(sum by (name, openshiftVersion) (acm_managed_cluster_labels{name=~\"$cluster\"}), \"cluster\", \"$1\", \"name\", \"(.*)\") + \non(cluster) group_left()(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)\n)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{openshiftVersion}}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "count by (openshiftVersion)(count by (cluster, openshiftVersion)(\nlabel_replace(sum by (name, openshiftVersion) (acm_managed_cluster_labels{name=~\"$cluster\"}), \"cluster\", \"$1\", \"name\", \"(.*)\") + \non(cluster) group_left()(kubevirt_hyperconverged_operator_health_status*0)\n)) \n/ (count by (openshiftVersion)(\nlabel_replace(sum by (name, openshiftVersion) (acm_managed_cluster_labels{name=~\"$cluster\"}), \"cluster\", \"$1\", \"name\", \"(.*)\") + \non(cluster) group_left()(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)\n))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Clusters by OpenShift Version", + "transformations": [ + { + "id": "seriesToColumns", + "options": { + "byField": "openshiftVersion" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true + }, + "indexByName": {}, + "renameByName": { + "Time 1": "", + "Time 2": "", + "Value #A": "# of Clusters", + "Value #B": "% of Total Clusters", + "openshiftVersion": "OpenShift Version" + } + } + } + ], + "type": "table" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 15 + }, + "id": 29, + "panels": [ + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Operator 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": "Critical" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-background-solid" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Operator Conditions 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": "Error" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 6, + "options": { + "frameIndex": 0, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Value" + } + ] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "exemplar": true, + "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=\"critical\"}) or \n (sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "exemplar": true, + "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=\"warning\"}) or (sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}*0)))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "C" + }, + { + "exemplar": true, + "expr": "(sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0 + on (cluster) group_left() (sum by (cluster)(cnv:vmi_status_running:count{cluster=~\"$cluster\"})) or ((sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster))*0)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "D" + }, + { + "exemplar": true, + "expr": "sum(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health) by (cluster) * 0 \n+ on (cluster) group_left(openshiftVersion) (\n label_replace(sum by (name, openshiftVersion) (acm_managed_cluster_labels), \"cluster\", \"$1\", \"name\", \"(.*)\")\n )", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "E" + }, + { + "exemplar": true, + "expr": "sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"})*0 $operator_health\nor on(cluster) (kubevirt_hco_system_health_status{cluster=~\"$cluster\"} offset 1m)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "F" + } + ], + "title": "Operator Health by Cluster", + "transformations": [ + { + "id": "seriesToColumns", + "options": { + "byField": "cluster" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true, + "Value #E": true, + "Value #F": false, + "__name__": true, + "clusterID": true, + "clusterType": true, + "endpoint": true, + "instance": true, + "job": true, + "namespace": true, + "openshiftVersion": true, + "pod": true, + "receive": true, + "service": true, + "tenant_id": true + }, + "indexByName": { + "Time 1": 8, + "Time 2": 9, + "Time 3": 10, + "Time 4": 11, + "Time 5": 12, + "Time 6": 13, + "Value #A": 0, + "Value #B": 4, + "Value #C": 5, + "Value #D": 6, + "Value #E": 7, + "Value #F": 2, + "cluster": 1, + "openshiftVersion": 3 + }, + "renameByName": { + "Time 2": "", + "Value": "", + "Value #A": "Operator Health", + "Value #B": "Alerts with Critical Impact", + "Value #C": "Alerts with Warning Impact", + "Value #D": "Number of Running VMs", + "Value #E": "", + "Value #F": "Operator Conditions Health", + "cluster": "Cluster", + "openshiftVersion": "Version", + "version": "Version" + } + } + } + ], + "type": "table" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Alert Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 272 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Namespace" + }, + "properties": [ + { + "id": "custom.width", + "value": null + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Alert Impact on Operator Health" + }, + "properties": [ + { + "id": "custom.width", + "value": null + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Cluster" + }, + "properties": [ + { + "id": "custom.width", + "value": 219 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Component" + }, + "properties": [ + { + "id": "custom.width", + "value": 349 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Alert Severity" + }, + "properties": [ + { + "id": "custom.width", + "value": 328 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Number of Alerts" + }, + "properties": [ + { + "id": "custom.width", + "value": 296 + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 8, + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Alert Impact on Operator Health" + } + ] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster,alertname,kubernetes_operator_component, operator_health_impact, severity) (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=~\"$health_impact\",operator_health_impact!=\"none\", severity=~\"$severity\"})\n+ on (cluster) group_left()(sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health)*0)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Alerts Impact on Operator Health", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": false, + "__name__": true, + "alertstate": true, + "clusterID": true, + "endpoint": true, + "instance": true, + "job": true, + "kubernetes_operator_part_of": true, + "name": true, + "node": true, + "operator_health_impact": false, + "pod": true, + "receive": true, + "service": true, + "tenant_id": true + }, + "indexByName": { + "Time": 0, + "Value": 10, + "alertname": 2, + "cluster": 1, + "container": 7, + "cron_name": 8, + "kubernetes_operator_component": 5, + "namespace": 6, + "ns": 9, + "operator_health_impact": 3, + "severity": 4 + }, + "renameByName": { + "Value": "Number of Alerts", + "alertname": "Alert Name", + "alertstate": "", + "cluster": "Cluster", + "container": "Container", + "endpoint": "", + "kubernetes_operator_component": "Component", + "kubernetes_operator_part_of": "", + "name": "", + "namespace": "Namespace", + "node": "", + "operator_health_impact": "Alert Impact on Operator Health", + "severity": "Alert Severity", + "version": "Version" + } + } + } + ], + "type": "table" + } + ], + "title": "Operator Health", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 70, + "panels": [ + { + "datasource": null, + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 11, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 17 + }, + "id": 44, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20, count by (cluster) (kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0))", + "instant": false, + "interval": "", + "legendFormat": "{{cluster}} ", + "refId": "A" + } + ], + "title": "Running VMs by Cluster", + "type": "timeseries" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "unit": "short" + }, + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "Total", + "rhel8", + "unknown" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 17 + }, + "id": 50, + "options": { + "legend": { + "displayMode": "table", + "placement": "right", + "values": [ + "value", + "percent" + ] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=~\"$cluster\", guest_os_name!=\"\", phase=\"running\"}, \"os\", \"$1\", \"guest_os_name\", \"(.*)\")) or\non(cluster) sum(kubevirt_vmi_phase_count{cluster=~\"$cluster\", phase=~\"running\", os!=\"\"}) by (cluster, os))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=~\"$cluster\", guest_os_name=\"\", phase=\"running\", os=\"\"}, \"os\", \"unknown\", \"guest_os_name\", \"\")) or\non(cluster) sum(label_replace(kubevirt_vmi_phase_count{cluster=~\"$cluster\", phase=~\"running\", os=\"\"}, \"os\", \"unknown\", \"os\", \"\")) by (cluster, os))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Running VMs by OS", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value #A": false, + "Value #B": false + }, + "indexByName": {}, + "renameByName": { + "Value #A": "Value", + "Value #B": "Value" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": "Value", + "operator": "+", + "reducer": "sum", + "right": "" + }, + "mode": "reduceRow", + "reduce": { + "include": [ + "Value" + ], + "reducer": "sum" + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Value": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "piechart" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 2, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "starting" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "non-running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "migrating" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "error" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "stopped" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 24 + }, + "id": 46, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "starting", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "running", + "refId": "D" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "migrating", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "error", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "stopped", + "refId": "E" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Virtual Machines by Status", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Time", + "starting", + "running", + "migrating", + "error", + "stopped" + ] + } + } + } + ], + "type": "timeseries" + }, + { + "datasource": null, + "description": "Top 20 Nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 24 + }, + "id": 48, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "topk(20, sum(kubevirt_vmi_phase_count{cluster=~\"$cluster\",namespace=~\".*\", phase=~\"running\"}) by (cluster,phase,node))", + "instant": false, + "interval": "", + "legendFormat": "{{cluster}} | {{node}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Running VMs by Node", + "type": "timeseries" + } + ], + "title": "Additional Virtual Machines Details", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 17 + }, + "id": 19, + "panels": [ + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: critical.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 24 + }, + "id": 12, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"critical\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Critical Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "orange", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 6, + "y": 24 + }, + "id": 14, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"warning\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Warning Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 12, + "y": 24 + }, + "id": 15, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"info\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Info Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Alert Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 279 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Namespace" + }, + "properties": [ + { + "id": "custom.width", + "value": null + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Alert Impact on Operator Health" + }, + "properties": [ + { + "id": "custom.width", + "value": 232 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Cluster" + }, + "properties": [ + { + "id": "custom.width", + "value": 214 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Alert Severity" + }, + "properties": [ + { + "id": "custom.width", + "value": 342 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 26, + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Number of Alerts" + } + ] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster,alertname,kubernetes_operator_component, operator_health_impact, severity) (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",operator_health_impact=~\"$health_impact\",severity=~\"$severity\"})\n+ on (cluster) group_left()(sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"}$operator_health)*0)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": " ", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": false, + "__name__": true, + "alertstate": true, + "clusterID": true, + "endpoint": true, + "instance": true, + "job": true, + "kubernetes_operator_part_of": true, + "name": true, + "node": true, + "operator_health_impact": false, + "pod": true, + "receive": true, + "service": true, + "tenant_id": true + }, + "indexByName": { + "Time": 0, + "Value": 10, + "alertname": 2, + "cluster": 1, + "container": 7, + "cron_name": 8, + "kubernetes_operator_component": 5, + "namespace": 6, + "ns": 9, + "operator_health_impact": 3, + "severity": 4 + }, + "renameByName": { + "Value": "Number of Alerts", + "alertname": "Alert Name", + "alertstate": "", + "cluster": "Cluster", + "container": "Container", + "endpoint": "", + "kubernetes_operator_component": "Component", + "kubernetes_operator_part_of": "", + "name": "", + "namespace": "Namespace", + "node": "", + "operator_health_impact": "Alert Impact on Operator Health", + "severity": "Alert Severity", + "version": "Version" + } + } + } + ], + "type": "table" + } + ], + "title": "Alerts by Severity", + "type": "row" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 60, + "panels": [ + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 34 + }, + "id": 52, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20, sum(rate(kubevirt_vmi_cpu_usage_seconds_total{cluster=~\"$cluster\",namespace=~\".*\"}[1h])) by (cluster))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{cluster}}", + "refId": "C" + } + ], + "title": "CPU Usage by Cluster", + "type": "timeseries" + }, + { + "datasource": null, + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 34 + }, + "id": 54, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20, sum by (cluster)(kubevirt_vmi_memory_available_bytes{cluster=~\"$cluster\"} - kubevirt_vmi_memory_unused_bytes{cluster=~\"$cluster\"} -kubevirt_vmi_memory_cached_bytes{cluster=~\"$cluster\"}))", + "hide": false, + "interval": "", + "legendFormat": "{{cluster}}", + "refId": "C" + } + ], + "title": "Memory Usage by Cluster", + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 41 + }, + "id": 56, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": false, + "expr": "topk(20,sum(rate(kubevirt_vmi_network_receive_bytes_total{cluster=~\"$cluster\"}[1h])) by (cluster))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{cluster}} - Receive", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by Cluster - Recieve", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 41 + }, + "id": 71, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum(rate(kubevirt_vmi_network_transmit_bytes_total{cluster=~\"$cluster\"}[1h])) by (cluster))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{cluster}} - Transmit", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by Cluster - Transmit", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 Clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 48 + }, + "id": 58, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20, sum by (cluster) (rate(kubevirt_vmi_storage_iops_read_total{cluster=~\"$cluster\"}[1h]) + rate(kubevirt_vmi_storage_iops_write_total{cluster=~\"$cluster\"}[1h])))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{cluster}}", + "refId": "B" + } + ], + "title": "Storage IOPs by Cluster", + "type": "timeseries" + } + ], + "title": "Resources Utilization", + "type": "row" + } + ], + "refresh": "", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "OpenShift", + "Virtualization", + "ACM", + "KubeVirt" + ], "templating": { "list": [ { @@ -1147,7 +2724,7 @@ data: ] }, "datasource": null, - "definition": "label_values(csv_succeeded{name=~\".*hyperconverged.*\"}, cluster)", + "definition": "label_values(kubevirt_hyperconverged_operator_health_status, cluster)", "description": null, "error": null, "hide": 0, @@ -1157,7 +2734,7 @@ data: "name": "cluster", "options": [], "query": { - "query": "label_values(csv_succeeded{name=~\".*hyperconverged.*\"}, cluster)", + "query": "label_values(kubevirt_hyperconverged_operator_health_status, cluster)", "refId": "StandardVariableQuery" }, "refresh": 2, @@ -1281,12 +2858,13 @@ data: }, "timepicker": {}, "timezone": "", - "title": "ACM - OpenShift Virtualization Overview", + "title": "Executive dashboards - Clusters Overview", + "uid": "CCJbTLeSk", "version": 1 } kind: ConfigMap metadata: - name: grafana-dashboard-acm-openshift-virtualization-overview + name: grafana-dashboard-acm-openshift-virtualization-clusters-overview namespace: open-cluster-management-observability - labels: - general-folder: 'true' + annotations: + observability.open-cluster-management.io/dashboard-folder: "ACM / OpenShift Virtualization" diff --git a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-cluster-view.yaml b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-cluster-view.yaml new file mode 100644 index 0000000000..04216f113e --- /dev/null +++ b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-cluster-view.yaml @@ -0,0 +1,2553 @@ +apiVersion: v1 +data: + acm-openshift-virtualization-single-cluster-view.json: |- + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "This dashboard provides comprehensive insights into the cluster with OpenShift Virtualization installed. It offers detailed information about the virtual machines (VMs), associated resources, and any active alerts, enabling efficient monitoring and management of virtualization within the cluster.", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 44, + "iteration": 1726559629513, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 6, + "panels": [], + "title": "General Information", + "type": "row" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 8, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^cluster$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "kubevirt_hyperconverged_operator_health_status{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Cluster Name", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 14, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^openshiftVersion$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "count(acm_managed_cluster_labels{name=~\"$cluster\"}) by (openshiftVersion)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Openshift Version", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "Total node count in OpenShift Virtualization clusters", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 60, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(count by (cluster) (count(kube_node_status_allocatable{resource=~\".*kubevirt.*\", cluster=~\"$cluster\"}) by (cluster,node)))", + "hide": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Nodes", + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 64, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}) by (name))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total VMs", + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Stopped" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#0e5bd0", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Starting" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#7ea9ea", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Migrating" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Error" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 1 + }, + "id": 87, + "options": { + "displayMode": "gradient", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "Running", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Stopped", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Error", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Starting", + "refId": "D" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}>0) by (name)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Migrating", + "refId": "E" + } + ], + "title": "Virtual Machines by Status", + "type": "bargauge" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 0, + "y": 3 + }, + "id": 10, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^cloud$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "count(acm_managed_cluster_labels{name=~\"$cluster\"}) by (cloud)", + "format": "table", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Provider", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 3, + "y": 3 + }, + "id": 16, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^version$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "csv_succeeded{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}", + "format": "table", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Openshift Virt Version", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "Inspect the Operator Conditions and the Alerts tab for additional details", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + }, + "1": { + "color": "yellow", + "index": 1, + "text": "Warning" + }, + "2": { + "color": "red", + "index": 2, + "text": "Critical" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 0, + "y": 5 + }, + "id": 12, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster)(kubevirt_hyperconverged_operator_health_status{cluster=~\"$cluster\"})", + "format": "time_series", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operator Status", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "Status of HCO conditions", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + }, + "1": { + "color": "yellow", + "index": 1, + "text": "Warning" + }, + "2": { + "color": "red", + "index": 2, + "text": "Critical" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 3, + "y": 5 + }, + "id": 90, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster) (kubevirt_hco_system_health_status{cluster=~\"$cluster\"})", + "format": "time_series", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operator Conditions", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 85, + "options": { + "legend": { + "displayMode": "table", + "placement": "right", + "values": [ + "value", + "percent" + ] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": true + }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=~\"$cluster\", guest_os_name!=\"\", phase=\"running\"}, \"os\", \"$1\", \"guest_os_name\", \"(.*)\")) or\non(cluster) sum(kubevirt_vmi_phase_count{cluster=~\"$cluster\", phase=~\"running\", os!=\"\"}) by (cluster, os))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=~\"$cluster\", guest_os_name=\"\", phase=\"running\", os=\"\"}, \"os\", \"unknown\", \"guest_os_name\", \"\")) or\non(cluster) sum(label_replace(kubevirt_vmi_phase_count{cluster=~\"$cluster\", phase=~\"running\", os=\"\"}, \"os\", \"unknown\", \"os\", \"\")) by (cluster, os))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Running VMs by OS", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value #A": false, + "Value #B": false + }, + "indexByName": {}, + "renameByName": { + "Value #A": "Value", + "Value #B": "Value" + } + } + }, + { + "id": "calculateField", + "options": { + "binary": { + "left": "Value", + "operator": "+", + "reducer": "sum", + "right": "" + }, + "mode": "reduceRow", + "reduce": { + "include": [ + "Value" + ], + "reducer": "sum" + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Value": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "piechart" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "text", + "mode": "fixed" + }, + "custom": { + "align": "auto", + "displayMode": "color-text" + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 81, + "options": { + "showHeader": true + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "bottomk(5, sum by (name, namespace) (sort(time() - kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}) / 1 ))", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "title": "Recent VMs started", + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "desc": false, + "field": "Value" + } + ] + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "Value": "Uptime ", + "name": "VM Name", + "namespace": "Namespace" + } + } + } + ], + "type": "table" + }, + { + "datasource": null, + "description": "Top 20 nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "rosa-hcp | ip-10-0-0-15.ec2.internal" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 69, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "topk(20, sum(kubevirt_vmi_phase_count{cluster=~\"$cluster\",namespace=~\".*\", phase=~\"running\"}) by (cluster,phase,node))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "VMs Running by Node", + "type": "timeseries" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "starting" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "non-running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "migrating" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "error" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "stopped" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 83, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "starting", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "running", + "refId": "D" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "migrating", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "error", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"} > 0)) or vector(0)", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "stopped", + "refId": "E" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "VMs by Status", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "Time", + "starting", + "running", + "migrating", + "error", + "stopped" + ] + } + } + } + ], + "type": "timeseries" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 36, + "panels": [ + { + "datasource": null, + "description": "Top 20 nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 73, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum(label_replace(instance:node_cpu_utilisation:rate1m{cluster=~\"$cluster\"}, \"node\", \"$1\", \"instance\", \"(.*)\")) by (node, cluster)\n+ on(node, cluster) group_left()\n0*sum(kubevirt_vmi_cpu_usage_seconds_total{cluster=~\"$cluster\"}) by (node, cluster))", + "hide": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "B" + } + ], + "title": "CPU Usage by Nodes", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 VMs", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 23 + }, + "id": 42, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum by (name) (rate(kubevirt_vmi_cpu_usage_seconds_total{cluster=~\"$cluster\",namespace=~\".*\"}[1h])))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "title": "CPU Usage by VM", + "type": "timeseries" + }, + { + "datasource": null, + "description": "Top 20 nodes with virtualization workloads", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 30 + }, + "id": 40, + "options": { + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum(label_replace(instance:node_memory_utilisation:ratio{cluster=~\"$cluster\"}, \"node\", \"$1\", \"instance\", \"(.*)\")) by (node, cluster)\n+ on(node, cluster) group_left()\n0*sum(kubevirt_vmi_memory_used_bytes{cluster=~\"$cluster\"}) by (node, cluster))", + "hide": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "B" + } + ], + "title": "Memory Usage by Nodes", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 VMs ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 30 + }, + "id": 44, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum by (name) (\nkubevirt_vmi_memory_available_bytes{cluster=~\"$cluster\",namespace=~\".*\"} - kubevirt_vmi_memory_unused_bytes{cluster=~\"$cluster\",namespace=~\".*\"} -kubevirt_vmi_memory_cached_bytes{cluster=~\"$cluster\",namespace=~\".*\"}))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "title": "Memory Usage by VM", + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 37 + }, + "id": 89, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": false, + "expr": "topk(20,sum(label_replace(rate(instance:node_network_receive_bytes_excluding_lo:rate1m{cluster=\"$cluster\"}[1h]), \"node\", \"$1\", \"instance\", \"(.*)\")) by (node, cluster)\n+ on(node, cluster) group_left()\n0*sum(kubevirt_vmi_network_receive_packets_total{cluster=\"$cluster\"}) by (node, cluster))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "C" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by Nodes - Receive", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 VMs", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 37 + }, + "id": 76, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": false, + "expr": "topk(20,sum(rate(kubevirt_vmi_network_receive_bytes_total{cluster=~\"$cluster\"}[1h])) by (name))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by VM - Receive", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 43 + }, + "id": 75, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum(label_replace(instance:node_network_transmit_bytes_excluding_lo:rate1m{cluster=\"$cluster\"}, \"node\", \"$1\", \"instance\", \"(.*)\")) by (node, cluster)\n+ on(node, cluster) group_left()\n0*sum(kubevirt_vmi_network_transmit_packets_total{cluster=\"$cluster\"}) by (node, cluster))", + "hide": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "D" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by Nodes - Transmit", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 VMs", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 43 + }, + "id": 88, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum(rate(kubevirt_vmi_network_transmit_bytes_total{cluster=~\"$cluster\"}[1h])) by (name))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage by VM - Transmit", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 nodes", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 49 + }, + "id": 78, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum by (node) (rate(kubevirt_vmi_storage_iops_read_total{cluster=~\"$cluster\"}[1h]) + rate(kubevirt_vmi_storage_iops_write_total{cluster=~\"$cluster\"}[1h])))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{node}}", + "refId": "B" + } + ], + "title": "Storage IOPs by Node", + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "Top 20 VMs", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 49 + }, + "id": 79, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "topk(20,sum by (name) (rate(kubevirt_vmi_storage_iops_read_total{cluster=~\"$cluster\"}[1h]) + rate(kubevirt_vmi_storage_iops_write_total{cluster=~\"$cluster\"}[1h])))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "title": "Storage IOPs by VM", + "type": "timeseries" + } + ], + "title": "Resources", + "type": "row" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 46, + "panels": [], + "title": "Alerts", + "type": "row" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: critical.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 0, + "y": 24 + }, + "id": 50, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"critical\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Critical Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "orange", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 8, + "y": 24 + }, + "id": 52, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"warning\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Warning Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 16, + "y": 24 + }, + "id": 54, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum (ALERTS{kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\",cluster=~\"$cluster\",severity=\"info\"}) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Info Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Severity" + }, + "properties": [ + { + "id": "custom.width", + "value": 150 + }, + { + "id": "mappings", + "value": [ + { + "options": { + "critical": { + "color": "red", + "index": 1, + "text": "Critical" + }, + "warning": { + "color": "yellow", + "index": 0, + "text": "Warning" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-background" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "State" + }, + "properties": [ + { + "id": "custom.width", + "value": 150 + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 58, + "options": { + "showHeader": true + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(ALERTS{cluster=~\"$cluster\",alertstate=\"firing\",kubernetes_operator_part_of=\"kubevirt\",severity!~\"info|none\"}[15m])) by (cluster,alertname,alertstate,severity,namespace,name,operator_health_impact)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operator Alerts", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "alertstate": true, + "cluster": true + }, + "indexByName": {}, + "renameByName": { + "alertname": "Name", + "alertstate": "State", + "cluster": "Cluster", + "name": "VM Name", + "namespace": "Namespace", + "operator_health_impact": "Operator Health Impact", + "severity": "Severity" + } + } + } + ], + "type": "table" + } + ], + "refresh": "5s", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "Openshift", + "Virtualization", + "KubeVirt", + "ACM" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "bleeding", + "value": "bleeding" + }, + "datasource": null, + "definition": "label_values(kubevirt_hyperconverged_operator_health_status{name=~\".*hyperconverged.*\"},cluster)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(kubevirt_hyperconverged_operator_health_status{name=~\".*hyperconverged.*\"},cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "/^(?!developer).*/", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-2d", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Executive dashboards - Single Cluster View", + "uid": "WfJLo3rSz", + "version": 1 + } +kind: ConfigMap +metadata: + name: grafana-dashboard-acm-openshift-virtualization-single-cluster-view + namespace: open-cluster-management-observability + annotations: + observability.open-cluster-management.io/dashboard-folder: "ACM / OpenShift Virtualization" diff --git a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-vm-view.yaml b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-vm-view.yaml new file mode 100644 index 0000000000..d3f57382d2 --- /dev/null +++ b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-openshift-virtualization-single-vm-view.yaml @@ -0,0 +1,1773 @@ +apiVersion: v1 +data: + acm-openshift-virtualization-single-vm-view.json: |- + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "This dashboard provides detailed insights into a specific virtual machine, including its configuration, resource consumption, and any active alerts. It allows users to easily locate the virtual machine across multiple clusters, facilitating efficient monitoring and troubleshooting.", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 46, + "iteration": 1726559641186, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 6, + "panels": [], + "title": "General Information", + "type": "row" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Running" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Stopped" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Error" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Migrating" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Starting" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 2, + "x": 0, + "y": 1 + }, + "id": 87, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "name" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"}>0) by (name))", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "Running", + "refId": "A" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"}>0) by (name))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Stopped", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"}>0) by (name))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Error", + "refId": "C" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"}>0) by (name))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Starting", + "refId": "D" + }, + { + "exemplar": true, + "expr": "sum(count(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"}>0) by (name))", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Migrating", + "refId": "E" + } + ], + "title": "Status", + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 2, + "y": 1 + }, + "id": 91, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^name$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(name)(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Virtual Machine Name", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 5, + "y": 1 + }, + "id": 8, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^cluster$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "kubevirt_hyperconverged_operator_health_status{name=~\".*hyperconverged.*\", cluster=~\"$cluster\"}", + "format": "table", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Cluster Name", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 100, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^instance_type$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(instance_type)(kubevirt_vmi_info{cluster=\"$cluster\", namespace=\"$namespace\", name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Instanc Type", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 102, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^workload$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(workload)(kubevirt_vmi_info{cluster=\"$cluster\", namespace=\"$namespace\", name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Workload", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 93, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^os$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", guest_os_name!=\"\", phase=\"running\"}, \"os\", \"$1\", \"guest_os_name\", \"(.*)\")) or\non(cluster) sum(kubevirt_vmi_phase_count{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", phase=~\"running\", os!=\"\"}) by (cluster, os))or\n(sum by (os)(sum by (cluster, os)(label_replace(kubevirt_vmi_info{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", guest_os_name=\"\", phase=\"running\", os=\"\"}, \"os\", \"unknown\", \"guest_os_name\", \"\")) or\non(cluster) sum(label_replace(kubevirt_vmi_phase_count{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", phase=~\"running\", os=\"\"}, \"os\", \"unknown\", \"os\", \"\")) by (cluster, os)))", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operating System", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 2, + "y": 3 + }, + "id": 92, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^namespace$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(namespace)(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Namespace", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 5, + "y": 3 + }, + "id": 97, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^node$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(node)(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\"} + on(cluster,namespace,name) group_left(node)\n(kubevirt_vmi_cpu_usage_seconds_total{cluster=\"$cluster\", namespace=\"$namespace\", name=\"$name\"}))", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Node", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 15, + "y": 3 + }, + "id": 101, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^preference$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(preference)(kubevirt_vmi_info{cluster=\"$cluster\", namespace=\"$namespace\", name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Preference", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 18, + "y": 3 + }, + "id": 103, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^flavor$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by(flavor)(kubevirt_vmi_info{cluster=\"$cluster\", namespace=\"$namespace\", name=\"$name\"})", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Workload", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 21, + "y": 3 + }, + "id": 99, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^os_version$/", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (os_version)(sum by (cluster, os_version)(label_replace(kubevirt_vmi_info{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", guest_os_name!=\"\", phase=\"running\"}, \"os_version\", \"$1\", \"guest_os_version_id\", \"(.*)\")) or\non(cluster) sum(kubevirt_vmi_phase_count{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", phase=~\"running\", os!=\"\"}) by (cluster, os))or\n(sum by (os_version)(sum by (cluster, os_version)(label_replace(kubevirt_vmi_info{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", guest_os_name=\"\", phase=\"running\", os=\"\"}, \"os\", \"unknown\", \"guest_os_version_id\", \"\")) or\non(cluster) sum(label_replace(kubevirt_vmi_phase_count{cluster=\"$cluster\",namespace=\"$namespace\",name=\"$name\", phase=~\"running\", os=\"\"}, \"os\", \"unknown\", \"os\", \"\")) by (cluster, os)))", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operating System Version", + "transparent": true, + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "semi-dark-blue", + "value": null + } + ] + }, + "unit": "dateTimeAsLocal" + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 3, + "x": 2, + "y": 5 + }, + "id": 95, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "value" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "(count(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0) or sum(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0 or \nsum(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0) or \nsum(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0) or \nsum(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0)))*1000", + "format": "time_series", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Time in Status", + "transformations": [], + "type": "stat" + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 36, + "panels": [ + { + "datasource": "Observatorium-Dynamic", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 42, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "sum by (name) (rate(kubevirt_vmi_cpu_usage_seconds_total{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"}[1h]))", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 44, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "sum by (name) (\nkubevirt_vmi_memory_available_bytes{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"} - kubevirt_vmi_memory_unused_bytes{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"} -kubevirt_vmi_memory_cached_bytes{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"})", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "title": "Memory Usage", + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 88, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(kubevirt_vmi_network_transmit_bytes_total{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"}[1h])) by (name)", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage - Transmit", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "hue", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binBps" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 76, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "pluginVersion": "8.1.3", + "targets": [ + { + "exemplar": false, + "expr": "sum(rate(kubevirt_vmi_network_receive_bytes_total{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"}[1h])) by (name)", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Usage - Receive", + "transformations": [], + "type": "timeseries" + }, + { + "datasource": "Observatorium-Dynamic", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 22 + }, + "id": 79, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "sum by (name) (rate(kubevirt_vmi_storage_iops_read_total{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"}[1h]) + rate(kubevirt_vmi_storage_iops_write_total{cluster=~\"$cluster\",namespace=\"$namespace\", name=\"$name\"}[1h]))", + "format": "time_series", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{name}}", + "refId": "B" + } + ], + "title": "Storage IOPs", + "type": "timeseries" + } + ], + "title": "Resources", + "type": "row" + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 46, + "panels": [], + "title": "Alerts", + "type": "row" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: critical.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 0, + "y": 9 + }, + "id": 50, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(sum by (cluster,alertname,alertstate,severity,namespace,name,operator_health_impact )(ALERTS{cluster=~\"$cluster\",kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\", pod=~\"virt-launcher-$name.*\", severity=\"critical\"})) or vector(0)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Critical Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "orange", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 8, + "y": 9 + }, + "id": 52, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(sum by (cluster,alertname,alertstate,severity,namespace,name,operator_health_impact )(ALERTS{cluster=~\"$cluster\",kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\", pod=~\"virt-launcher-$name.*\", severity=\"warning\"})) or vector(0)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Warning Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "Total number of alerts that are firing with the severity level: warning.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 8, + "x": 16, + "y": 9 + }, + "id": 54, + "options": { + "colorMode": "background", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum(sum by (cluster,alertname,alertstate,severity,namespace,name,operator_health_impact )(ALERTS{cluster=~\"$cluster\",kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\", pod=~\"virt-launcher-$name.*\", severity=\"info\"})) or vector(0)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Info Severity Alerts", + "type": "stat" + }, + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Severity" + }, + "properties": [ + { + "id": "custom.width", + "value": 150 + }, + { + "id": "mappings", + "value": [ + { + "options": { + "critical": { + "color": "red", + "index": 1, + "text": "Critical" + }, + "warning": { + "color": "yellow", + "index": 0, + "text": "Warning" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-background" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "State" + }, + "properties": [ + { + "id": "custom.width", + "value": 150 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "pod" + }, + "properties": [ + { + "id": "custom.width", + "value": 330 + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 58, + "options": { + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster,alertname,alertstate,severity,namespace,name,operator_health_impact )(ALERTS{cluster=~\"$cluster\",kubernetes_operator_part_of=\"kubevirt\", alertstate=\"firing\", pod=~\"virt-launcher-$name.*\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Operator Alerts", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "alertstate": false, + "cluster": true + }, + "indexByName": {}, + "renameByName": { + "alertname": "Name", + "alertstate": "State", + "cluster": "Cluster", + "name": "VM Name", + "namespace": "Namespace", + "operator_health_impact": "Operator Health Impact", + "severity": "Severity" + } + } + } + ], + "type": "table" + } + ], + "refresh": "5s", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "ACM", + "KubeVirt", + "OpenShift", + "Virtualization" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "example", + "value": "example" + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, name)", + "description": "Filter the Virtual Machine by its name", + "error": null, + "hide": 0, + "includeAll": false, + "label": "VM Name", + "multi": false, + "name": "name", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, name)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "omergi", + "value": "omergi" + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{name=\"$name\"}, namespace)", + "description": "Filter the Virtual Machine by its Namespace", + "error": null, + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{name=\"$name\"}, namespace)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": "bleeding", + "value": "bleeding" + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{name=\"$name\", namespace=\"$namespace\"}, cluster)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{name=\"$name\", namespace=\"$namespace\"}, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-2d", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Executive dashboards - Single Virtual Machine View", + "uid": "RnxEyj6Sz", + "version": 1 + } +kind: ConfigMap +metadata: + name: grafana-dashboard-acm-openshift-virtualization-single-vm-view + namespace: open-cluster-management-observability + annotations: + observability.open-cluster-management.io/dashboard-folder: "ACM / OpenShift Virtualization" diff --git a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-by-time-in-status.yaml b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-by-time-in-status.yaml new file mode 100644 index 0000000000..f61a71305e --- /dev/null +++ b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-by-time-in-status.yaml @@ -0,0 +1,425 @@ +apiVersion: v1 +data: + acm-virtual-machines-by-time-in-status.json: |- + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "This dashboard provides a quick overview of the health status of Virtual Machines (VMs) across clusters in the KubeVirt environment. It helps users identify VMs that are currently in unhealthy states and those that have been in such states for an extended period, potentially making them candidates for cleanup. Use the filters to customize the view based on cluster, namespace, VM name, and duration in an unhealthy state for efficient monitoring and management.", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 41, + "iteration": 1726219957608, + "links": [], + "panels": [ + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "cluster" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "namespace" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "unit", + "value": "s" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "status" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + } + ] + } + ] + }, + "gridPos": { + "h": 16, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Value" + } + ] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "topk($top_results,\n(time() - (label_replace(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0 ,\"status\",\"starting\",\"\",\"\"))> $days_in_status_gt*24*60*60) + on(cluster, name, namespace) group_left()(0*(sum by (cluster, namespace, name)($status>0))) or\n(time() - (label_replace(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0,\"status\",\"running\",\"\",\"\"))> $days_in_status_gt*24*60*60) + on(cluster, name, namespace) group_left()(0*(sum by (cluster, namespace, name)($status>0))) or\n(time() - (label_replace(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0,\"status\",\"stopped\",\"\",\"\"))> $days_in_status_gt*24*60*60) + on(cluster, name, namespace) group_left()(0*(sum by (cluster, namespace, name)($status>0))) or\n(time() - (label_replace(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0,\"status\",\"error\",\"\",\"\"))> $days_in_status_gt*24*60*60) + on(cluster, name, namespace) group_left()(0*(sum by (cluster, namespace, name)($status>0))) or\n(time() - (label_replace(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}>0,\"status\",\"migrating\",\"\",\"\"))> $days_in_status_gt*24*60*60) + on(cluster, name, namespace) group_left()(0*(sum by (cluster, namespace, name)($status>0)))\n)", + "format": "table", + "hide": true, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "exemplar": true, + "expr": "topk($top_results,\n (\n (\n (time() - label_replace(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"starting\", \"\", \"\")) > $days_in_status_gt * 24 * 60 * 60\n ) and (\n (time() - label_replace(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"starting\", \"\", \"\")) < $days_in_status_lt * 24 * 60 * 60\n )\n ) + on(cluster, name, namespace) group_left() (0 * (sum by (cluster, namespace, name)($status > 0)))\n or\n (\n (\n (time() - label_replace(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"running\", \"\", \"\")) > $days_in_status_gt * 24 * 60 * 60\n ) and (\n (time() - label_replace(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"running\", \"\", \"\")) < $days_in_status_lt * 24 * 60 * 60\n )\n ) + on(cluster, name, namespace) group_left() (0 * (sum by (cluster, namespace, name)($status > 0)))\n or\n (\n (\n (time() - label_replace(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"stopped\", \"\", \"\")) > $days_in_status_gt * 24 * 60 * 60\n ) and (\n (time() - label_replace(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"stopped\", \"\", \"\")) < $days_in_status_lt * 24 * 60 * 60\n )\n ) + on(cluster, name, namespace) group_left() (0 * (sum by (cluster, namespace, name)($status > 0)))\n or\n (\n (\n (time() - label_replace(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"error\", \"\", \"\")) > $days_in_status_gt * 24 * 60 * 60\n ) and (\n (time() - label_replace(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"error\", \"\", \"\")) < $days_in_status_lt * 24 * 60 * 60\n )\n ) + on(cluster, name, namespace) group_left() (0 * (sum by (cluster, namespace, name)($status > 0)))\n or\n (\n (\n (time() - label_replace(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"migrating\", \"\", \"\")) > $days_in_status_gt * 24 * 60 * 60\n ) and (\n (time() - label_replace(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"migrating\", \"\", \"\")) < $days_in_status_lt * 24 * 60 * 60\n )\n ) + on(cluster, name, namespace) group_left() (0 * (sum by (cluster, namespace, name)($status > 0)))\n)\n", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + } + ], + "title": "Virtual Machines List by Time In Status", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "clusterID": true, + "container": true, + "endpoint": true, + "instance": true, + "job": true, + "pod": true, + "receive": true, + "service": true, + "tenant_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "Time in Status" + } + } + } + ], + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "Virtualization", + "ACM", + "OpenShift", + "KubeVirt" + ], + "templating": { + "list": [ + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, cluster)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": "Cluster", + "multi": true, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": null, + "definition": "label_values(kubevirt_vmi_info, name)", + "description": "Filter the Virtual Machine by its name", + "error": null, + "hide": 0, + "includeAll": true, + "label": "VM Name", + "multi": true, + "name": "name", + "options": [], + "query": { + "query": "label_values(kubevirt_vmi_info, name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": null, + "definition": "label_values(kubevirt_vmi_info, namespace)", + "description": "Filter the Virtual Machine by its Namespace", + "error": null, + "hide": 0, + "includeAll": true, + "label": "Namespace", + "multi": true, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(kubevirt_vmi_info, namespace)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": { + "selected": true, + "text": "stopped", + "value": "kubevirt_vm_non_running_status_last_transition_timestamp_seconds" + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Status", + "multi": false, + "name": "status", + "options": [ + { + "selected": true, + "text": "stopped", + "value": "kubevirt_vm_non_running_status_last_transition_timestamp_seconds" + }, + { + "selected": false, + "text": "starting", + "value": "kubevirt_vm_starting_status_last_transition_timestamp_seconds" + }, + { + "selected": false, + "text": "migrating", + "value": "kubevirt_vm_migrating_status_last_transition_timestamp_seconds" + }, + { + "selected": false, + "text": "error", + "value": "kubevirt_vm_error_status_last_transition_timestamp_seconds" + }, + { + "selected": false, + "text": "running", + "value": "kubevirt_vm_running_status_last_transition_timestamp_seconds" + } + ], + "query": "stopped : kubevirt_vm_non_running_status_last_transition_timestamp_seconds, starting : kubevirt_vm_starting_status_last_transition_timestamp_seconds, migrating : kubevirt_vm_migrating_status_last_transition_timestamp_seconds, error : kubevirt_vm_error_status_last_transition_timestamp_seconds, running : kubevirt_vm_running_status_last_transition_timestamp_seconds", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "current": { + "selected": false, + "text": "90", + "value": "90" + }, + "description": "Filter the Virtual Machines that are in the specific status for more then the selected number of days", + "error": null, + "hide": 0, + "label": "Days in Status >", + "name": "days_in_status_gt", + "options": [ + { + "selected": true, + "text": "90", + "value": "90" + } + ], + "query": "90", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": false, + "text": "1000", + "value": "1000" + }, + "description": "Filter the Virtual Machines that are in the specific status for less then the selected number of days", + "error": null, + "hide": 0, + "label": "Days in Status <", + "name": "days_in_status_lt", + "options": [ + { + "selected": true, + "text": "1000", + "value": "1000" + } + ], + "query": "1000", + "skipUrlSync": false, + "type": "textbox" + }, + { + "current": { + "selected": true, + "text": "10", + "value": "10" + }, + "description": null, + "error": null, + "hide": 0, + "label": "Number of Results", + "name": "top_results", + "options": [ + { + "selected": true, + "text": "10", + "value": "10" + } + ], + "query": "10", + "skipUrlSync": false, + "type": "textbox" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Service Level dashboards - Virtual Machines by Time in Status", + "uid": "lMD6V93Sz", + "version": 1 + } +kind: ConfigMap +metadata: + name: grafana-dashboard-acm-virtual-machines-by-time-in-status + namespace: open-cluster-management-observability + annotations: + observability.open-cluster-management.io/dashboard-folder: "ACM / OpenShift Virtualization" diff --git a/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-inventory.yaml b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-inventory.yaml new file mode 100644 index 0000000000..38b2736489 --- /dev/null +++ b/operators/multiclusterobservability/manifests/base/grafana/dash-acm-virtual-machines-inventory.yaml @@ -0,0 +1,322 @@ +apiVersion: v1 +data: + acm-openshift-virtual-machines-inventory.json: |- + { + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "This dashboard provides a comprehensive list of all virtual machines across clusters, offering detailed insights into each VM’s configuration. Users can easily search and filter VMs based on various attributes, enabling quick access to specific information for effective management and troubleshooting.", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 39, + "iteration": 1726563857860, + "links": [], + "panels": [ + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byType", + "options": "string" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + } + ] + } + ] + }, + "gridPos": { + "h": 26, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "Node" + } + ] + }, + "pluginVersion": "8.5.20", + "targets": [ + { + "exemplar": true, + "expr": "sum by (cluster, namespace, name, status) (\n label_replace(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"running\", \"__name__\", \".*\") \n or label_replace(kubevirt_vm_non_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"stopped\", \"__name__\", \".*\")\n or label_replace(kubevirt_vm_error_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"error\", \"__name__\", \".*\") \n or label_replace(kubevirt_vm_starting_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"starting\", \"__name__\", \".*\") \n or label_replace(kubevirt_vm_migrating_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"} > 0, \"status\", \"migrating\", \"__name__\", \".*\")\n)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "exemplar": true, + "expr": "kubevirt_vmi_info{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"}", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "B" + }, + { + "exemplar": true, + "expr": "sum by (cluster, namespace, name, node)(kubevirt_vmi_memory_available_bytes{cluster=~\"$cluster\", name=~\"$name\", namespace=~\"$namespace\"})", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "C" + } + ], + "title": "Virtual Machines Inventory", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value #A": true, + "Value #B": true, + "Value #C": true, + "__name__": true, + "clusterID": true, + "container": true, + "endpoint": true, + "guest_os_kernel_release": true, + "guest_os_machine": true, + "instance": true, + "job": true, + "os": true, + "phase": true, + "pod": true, + "receive": true, + "service": true, + "tenant_id": true + }, + "indexByName": { + "Time": 0, + "Value #A": 22, + "Value #B": 21, + "Value #C": 28, + "__name__": 23, + "cluster": 1, + "clusterID": 24, + "container": 26, + "endpoint": 27, + "flavor": 11, + "guest_os_kernel_release": 15, + "guest_os_machine": 14, + "guest_os_name": 6, + "guest_os_version_id": 7, + "instance": 25, + "instance_type": 8, + "job": 16, + "name": 2, + "namespace": 3, + "node": 5, + "os": 13, + "phase": 12, + "pod": 17, + "preference": 9, + "receive": 18, + "service": 19, + "status": 4, + "tenant_id": 20, + "workload": 10 + }, + "renameByName": { + "Value #A": "", + "cluster": "Cluster", + "flavor": "Flavor", + "guest_os_name": "OS Name", + "guest_os_version_id": "OS Version", + "instance_type": "Instance Type", + "name": "VM Name", + "namespace": "Namespace", + "node": "Node", + "os": "", + "phase": "Phase", + "preference": "Preference", + "status": "Status", + "workload": "Workload" + } + } + } + ], + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 30, + "style": "dark", + "tags": [ + "Virtualization", + "OpenShift", + "ACM", + "KubeVirt" + ], + "templating": { + "list": [ + { + "allValue": "", + "current": { + "selected": false, + "text": "bleeding", + "value": "bleeding" + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, cluster)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds, cluster)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}, namespace)", + "description": "Filter the Virtual Machine by its Namespace", + "error": null, + "hide": 0, + "includeAll": true, + "label": "Namespace", + "multi": true, + "name": "namespace", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\"}, namespace)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": { + "selected": true, + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, + "datasource": null, + "definition": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", namespace=~\"$namespace\"}, name)", + "description": "Filter the Virtual Machine by its name", + "error": null, + "hide": 0, + "includeAll": true, + "label": "VM Name", + "multi": true, + "name": "name", + "options": [], + "query": { + "query": "label_values(kubevirt_vm_running_status_last_transition_timestamp_seconds{cluster=~\"$cluster\", namespace=~\"$namespace\"}, name)", + "refId": "StandardVariableQuery" + }, + "refresh": 2, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Inventory dashboards - Virtual Machines Inventory", + "uid": "Q2U8w8qIz", + "version": 1 + } +kind: ConfigMap +metadata: + name: grafana-dashboard-acm-virtual-machines-inventory + namespace: open-cluster-management-observability + annotations: + observability.open-cluster-management.io/dashboard-folder: "ACM / OpenShift Virtualization" diff --git a/operators/multiclusterobservability/manifests/base/grafana/kustomization.yaml b/operators/multiclusterobservability/manifests/base/grafana/kustomization.yaml index 4f1cda4dc9..b92d32e24e 100644 --- a/operators/multiclusterobservability/manifests/base/grafana/kustomization.yaml +++ b/operators/multiclusterobservability/manifests/base/grafana/kustomization.yaml @@ -35,3 +35,7 @@ resources: - dash-k8s-pods-in-namespace-ocp311.yaml - dash-k8s-summary-by-node-ocp311.yaml - dash-acm-openshift-virtualization-overview.yaml +- dash-acm-virtual-machines-inventory.yaml +- dash-acm-virtual-machines-by-time-in-status.yaml +- dash-acm-openshift-virtualization-single-cluster-view.yaml +- dash-acm-openshift-virtualization-single-vm-view.yaml