From ace31cd415ca5023c67683c243a3ff287a159a4d Mon Sep 17 00:00:00 2001 From: hardikl Date: Tue, 5 Nov 2024 15:36:19 +0530 Subject: [PATCH 1/2] refactor: remove extra log --- cmd/poller/collector/metrics.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmd/poller/collector/metrics.go b/cmd/poller/collector/metrics.go index f76bcc6ef..39cbb988c 100644 --- a/cmd/poller/collector/metrics.go +++ b/cmd/poller/collector/metrics.go @@ -21,8 +21,6 @@ type MemMetrics struct { } func MemoryMetrics() MemMetrics { - slog.Info("foo") - var memStats MemMetrics // Get runtime metrics From 2ab127b567b54da435c8e69f447b31e46c98e0cb Mon Sep 17 00:00:00 2001 From: Hardikl <83282894+Hardikl@users.noreply.github.com> Date: Tue, 5 Nov 2024 20:30:28 +0530 Subject: [PATCH 2/2] feat: Adding Snapmirror Sources dashboard - 1 (#3216) * feat: Adding Snapmirror Sources dashboard --------- Co-authored-by: rahulguptajss --- cmd/collectors/rest/plugins/volume/volume.go | 14 +- cmd/tools/grafana/dashboard_test.go | 1 + cmd/tools/grafana/grafana.go | 7 +- cmd/tools/grafana/grafana_test.go | 21 +- conf/rest/9.14.0/volume.yaml | 3 + conf/zapi/cdot/9.8.0/volume.yaml | 7 + grafana/dashboards/cmode/snapmirror.json | 4571 +++-------------- .../cmode/snapmirror_destinations.json | 18 +- integration/test/dashboard_test.go | 2 +- 9 files changed, 803 insertions(+), 3841 deletions(-) diff --git a/cmd/collectors/rest/plugins/volume/volume.go b/cmd/collectors/rest/plugins/volume/volume.go index 60332ea94..cbc7d24c2 100644 --- a/cmd/collectors/rest/plugins/volume/volume.go +++ b/cmd/collectors/rest/plugins/volume/volume.go @@ -43,6 +43,9 @@ type volumeInfo struct { cloneSnapshotName string cloneSplitEstimateMetric float64 isObjectStoreVolume bool + isProtected string + isDestinationOntap string + isDestinationCloud string } func New(p *plugin.AbstractPlugin) plugin.Plugin { @@ -171,6 +174,10 @@ func (v *Volume) updateVolumeLabels(data *matrix.Matrix, volumeMap map[string]vo } volume.SetLabel("anti_ransomware_start_time", vInfo.arwStartTime) volume.SetLabel("antiRansomwareState", vInfo.arwState) + volume.SetLabel("isProtected", vInfo.isProtected) + volume.SetLabel("isDestinationOntap", vInfo.isDestinationOntap) + volume.SetLabel("isDestinationCloud", vInfo.isDestinationCloud) + if volume.GetLabel("is_flexclone") == "true" { volume.SetLabel("clone_parent_snapshot", vInfo.cloneSnapshotName) if err = cloneSplitEstimateMetric.SetValueFloat64(volume, vInfo.cloneSplitEstimateMetric); err != nil { @@ -290,7 +297,7 @@ func (v *Volume) getEncryptedDisks() ([]gjson.Result, error) { func (v *Volume) getVolumeInfo() (map[string]volumeInfo, error) { volumeMap := make(map[string]volumeInfo) - fields := []string{"name", "svm.name", "clone.parent_snapshot.name", "clone.split_estimate", "is_object_store"} + fields := []string{"name", "svm.name", "clone.parent_snapshot.name", "clone.split_estimate", "is_object_store", "snapmirror.is_protected", "snapmirror.destinations.is_ontap", "snapmirror.destinations.is_cloud"} if !v.isArwSupportedVersion { return v.getVolume("", fields, volumeMap) } @@ -331,7 +338,10 @@ func (v *Volume) getVolume(field string, fields []string, volumeMap map[string]v cloneSnapshotName := volume.Get("clone.parent_snapshot.name").String() cloneSplitEstimate := volume.Get("clone.split_estimate").Float() isObjectStoreVolume := volume.Get("is_object_store").Bool() - volumeMap[volName+svmName] = volumeInfo{arwStartTime: arwStartTime, arwState: arwState, cloneSnapshotName: cloneSnapshotName, cloneSplitEstimateMetric: cloneSplitEstimate, isObjectStoreVolume: isObjectStoreVolume} + isProtected := volume.Get("snapmirror.is_protected").String() + isDestinationOntap := volume.Get("snapmirror.destinations.is_ontap").String() + isDestinationCloud := volume.Get("snapmirror.destinations.is_cloud").String() + volumeMap[volName+svmName] = volumeInfo{arwStartTime: arwStartTime, arwState: arwState, cloneSnapshotName: cloneSnapshotName, cloneSplitEstimateMetric: cloneSplitEstimate, isObjectStoreVolume: isObjectStoreVolume, isProtected: isProtected, isDestinationOntap: isDestinationOntap, isDestinationCloud: isDestinationCloud} } return volumeMap, nil } diff --git a/cmd/tools/grafana/dashboard_test.go b/cmd/tools/grafana/dashboard_test.go index a7a1f418f..2e730c4f3 100644 --- a/cmd/tools/grafana/dashboard_test.go +++ b/cmd/tools/grafana/dashboard_test.go @@ -1647,6 +1647,7 @@ func checkVariablesAreFSxFriendly(t *testing.T, path string, data []byte) { exceptionValues := map[string]bool{ "cmode/metadata.json": true, "cmode/snapmirror_destinations.json": true, + "cmode/snapmirror.json": true, } gjson.GetBytes(data, "templating.list").ForEach(func(key, value gjson.Result) bool { diff --git a/cmd/tools/grafana/grafana.go b/cmd/tools/grafana/grafana.go index be5dd7506..439097631 100644 --- a/cmd/tools/grafana/grafana.go +++ b/cmd/tools/grafana/grafana.go @@ -195,11 +195,8 @@ func exportFiles(dir string, folder *Folder) error { return nil } -func addSvmRegex(content []byte, fileName string, val string) []byte { +func addSvmRegex(content []byte, val string) []byte { svmExpression := []string{"templating.list.#(name=\"SVM\")"} - if fileName == "snapmirror.json" { - svmExpression = []string{"templating.list.#(name=\"DestinationSVM\")", "templating.list.#(name=\"SourceSVM\")"} - } for _, s := range svmExpression { var err error svm := gjson.GetBytes(content, s) @@ -514,7 +511,7 @@ func importFiles(dir string, folder *Folder) { // add svm regex if opts.svmRegex != "" { - data = addSvmRegex(data, file.Name(), opts.svmRegex) + data = addSvmRegex(data, opts.svmRegex) } // change cluster label if needed diff --git a/cmd/tools/grafana/grafana_test.go b/cmd/tools/grafana/grafana_test.go index eb6617afc..3d801d1ed 100644 --- a/cmd/tools/grafana/grafana_test.go +++ b/cmd/tools/grafana/grafana_test.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/json" "fmt" - "path/filepath" "regexp" "strings" "testing" @@ -113,22 +112,10 @@ func TestAddSvmRegex(t *testing.T) { VisitDashboards( []string{"../../../grafana/dashboards/cmode/svm.json", "../../../grafana/dashboards/cmode/snapmirror.json"}, func(path string, data []byte) { - file := filepath.Base(path) - out := addSvmRegex(data, file, regex) - if file == "svm.json" { - r := gjson.GetBytes(out, "templating.list.#(name=\"SVM\").regex") - if r.String() != regex { - t.Errorf("path: %s \nExpected: [%s]\n Got: [%s]", path, regex, r.String()) - } - } else if file == "snapmirror.json" { - r := gjson.GetBytes(out, "templating.list.#(name=\"DestinationSVM\").regex") - if r.String() != regex { - t.Errorf("path: %s \nExpected: [%s]\n Got: [%s]", path, regex, r.String()) - } - r = gjson.GetBytes(out, "templating.list.#(name=\"SourceSVM\").regex") - if r.String() != regex { - t.Errorf("path: %s \nExpected: [%s]\n Got: [%s]", path, regex, r.String()) - } + out := addSvmRegex(data, regex) + r := gjson.GetBytes(out, "templating.list.#(name=\"SVM\").regex") + if r.String() != regex { + t.Errorf("path: %s \nExpected: [%s]\n Got: [%s]", path, regex, r.String()) } }) } diff --git a/conf/rest/9.14.0/volume.yaml b/conf/rest/9.14.0/volume.yaml index f68b36eca..82a29b149 100644 --- a/conf/rest/9.14.0/volume.yaml +++ b/conf/rest/9.14.0/volume.yaml @@ -131,8 +131,11 @@ export_options: - clone_parent_snapshot - clone_parent_svm - clone_parent_volume + - isDestinationCloud + - isDestinationOntap - isEncrypted - isHardwareEncrypted + - isProtected - is_sis_volume - junction_path - root_volume diff --git a/conf/zapi/cdot/9.8.0/volume.yaml b/conf/zapi/cdot/9.8.0/volume.yaml index 7ea7744df..7d5b9edea 100644 --- a/conf/zapi/cdot/9.8.0/volume.yaml +++ b/conf/zapi/cdot/9.8.0/volume.yaml @@ -26,6 +26,10 @@ counters: - volume-inode-attributes: - files-total - files-used + - volume-mirror-attributes: + - ^is-snapmirror-source => isProtected + - ^is-snapmirror-source-to-object-store => isDestinationCloud + - ^is-snapmirror-source-to-ontap => isDestinationOntap - volume-sis-attributes: - ^is-sis-volume => is_sis_volume - compression-space-saved => sis_compress_saved @@ -117,8 +121,11 @@ export_options: - clone_parent_snapshot - clone_parent_svm - clone_parent_volume + - isDestinationCloud + - isDestinationOntap - isEncrypted - isHardwareEncrypted + - isProtected - is_sis_volume - junction_path - node_root diff --git a/grafana/dashboards/cmode/snapmirror.json b/grafana/dashboards/cmode/snapmirror.json index c9fff9d52..59046e3f5 100644 --- a/grafana/dashboards/cmode/snapmirror.json +++ b/grafana/dashboards/cmode/snapmirror.json @@ -95,23 +95,6 @@ } ], "panels": [ - { - "datasource": "${DS_PROMETHEUS}", - "gridPos": { - "h": 2, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 29, - "options": { - "content": "To monitor both sides of a snapmirror relationship, both source and destination clusters must be monitored by Harvest. Both clusters need to export their metrics to the same Prometheus instance.", - "mode": "markdown" - }, - "pluginVersion": "8.1.8", - "title": "Important Information about SnapMirror dashboard", - "type": "text" - }, { "collapsed": false, "datasource": "${DS_PROMETHEUS}", @@ -119,7 +102,7 @@ "h": 1, "w": 24, "x": 0, - "y": 2 + "y": 0 }, "id": 15, "panels": [], @@ -127,115 +110,35 @@ "type": "row" }, { - "cacheTimeout": null, "datasource": "${DS_PROMETHEUS}", - "description": "Number of total snapmirrors. \n\nThere are 4 types of snapmirrors can be possible.\n\n| Type | Detail | \n|---|---|\n| `Volume` protected | Individual volume is being protected | \n| `SVM-DR` protected | Whole SVM is being protected along with volumes belongs to it |\n| `Consistency Group` protected | Consistecy Group is being protected along with mapped volumes in it |\n| `Flexgroup` protected| FlexGroup is being protected along with constituents volumes in it|.", + "description": "Number of unhealthy snapmirrors.", "fieldConfig": { "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "semi-dark-purple", - "text": "0" - } - }, - "type": "special" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-purple", - "value": null - } - ] + "color": { + "mode": "thresholds" }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 20, - "x": 0, - "y": 3 - }, - "id": 18, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.1.8", - "targets": [ - { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"}))", - "format": "time_series", - "hide": false, - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "SnapMirrors", - "type": "stat" - }, - { - "cacheTimeout": null, - "datasource": "${DS_PROMETHEUS}", - "description": "Number of volume snapmirrors.", - "fieldConfig": { - "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "light-purple", - "text": "0" - } - }, - "type": "special" - } - ], + "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "light-purple", + "color": "red", "value": null } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 3, + "h": 5, "w": 5, "x": 0, - "y": 6 + "y": 1 }, - "id": 20, + "id": 139, "links": [], "options": { "colorMode": "value", @@ -249,65 +152,60 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, "pluginVersion": "8.1.8", "targets": [ { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"none\",relationship_id!=\"\"}))", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\"$Volume\",healthy=\"false\",relationship_id!=\"\"}))", "format": "time_series", "hide": false, - "instant": false, + "instant": true, "interval": "", "intervalFactor": 1, "legendFormat": "", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Volume Protection", + "title": "Unhealthy Relationships", "type": "stat" }, { - "cacheTimeout": null, "datasource": "${DS_PROMETHEUS}", - "description": "Number of svm-dr protected snapmirrors.", + "description": "Total number of snapmirror transfers that have failed.", "fieldConfig": { "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "light-purple", - "text": "0" - } - }, - "type": "special" - } - ], + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "light-purple", + "color": "red", "value": null } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 3, + "h": 5, "w": 5, "x": 5, - "y": 6 + "y": 1 }, - "id": 19, + "id": 138, "links": [], "options": { "colorMode": "value", @@ -321,65 +219,60 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, "pluginVersion": "8.1.8", "targets": [ { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"vserver\",relationship_id!=\"\"}))", - "format": "time_series", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "sum(snapmirror_break_failed_count{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"})+sum(snapmirror_resync_failed_count{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"})+sum(snapmirror_update_failed_count{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"}) OR on() vector(0)", + "format": "table", "hide": false, - "instant": false, + "instant": true, "interval": "", "intervalFactor": 1, "legendFormat": "", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "SVM Protection (DR)", + "title": "Failed SnapMirror Transfers", "type": "stat" }, { - "cacheTimeout": null, "datasource": "${DS_PROMETHEUS}", - "description": "Number of consistency group protected snapmirrors.", + "description": "Total number of snapmirror transfers that have been successfully completed without any errors or issues.", "fieldConfig": { "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "light-purple", - "text": "0" - } - }, - "type": "special" - } - ], + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "light-purple", + "color": "semi-dark-green", "value": null } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 3, + "h": 5, "w": 5, "x": 10, - "y": 6 + "y": 1 }, - "id": 23, + "id": 137, "links": [], "options": { "colorMode": "value", @@ -393,65 +286,61 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, "pluginVersion": "8.1.8", "targets": [ { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",relationship_id!=\"\"}))", - "format": "time_series", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "sum(snapmirror_break_successful_count{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"})+sum(snapmirror_resync_successful_count{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"})+sum(snapmirror_update_successful_count{datacenter=~\"$Datacenter\", cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"})OR on() vector(0)", + "format": "table", "hide": false, - "instant": false, + "instant": true, "interval": "", "intervalFactor": 1, "legendFormat": "", + "range": false, "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Consistency Group", + "title": "Successful SnapMirror Transfers", "type": "stat" }, { - "cacheTimeout": null, "datasource": "${DS_PROMETHEUS}", - "description": "Number of flexgroup protected snapmirrors.", + "description": "Number of unprotected volumes.", "fieldConfig": { "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "semi-dark-purple", - "text": "0" - } - }, - "type": "special" - } - ], + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "yellow", "value": null } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 3, + "h": 5, "w": 5, "x": 15, - "y": 6 + "y": 1 }, - "id": 24, + "id": 148, "links": [], "options": { "colorMode": "value", @@ -465,67 +354,80 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, "pluginVersion": "8.1.8", "targets": [ { "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"flexgroup\",relationship_id!=\"\"}))", + "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",svm=~\"$SVM\",volume=~\"$Volume\",type=\"rw\",state!=\"\"}) - count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",svm=~\"$SVM\",volume=~\".*$Volume.*\",type=\"rw\",state!=\"\",isProtected=\"true\",isDestinationOntap=\"true\", svm_root=\"false\"}) or vector(0)", "format": "time_series", "hide": false, - "instant": false, + "instant": true, "interval": "", "intervalFactor": 1, "legendFormat": "", "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Flexgroups", + "title": "Unprotected Volumes", "type": "stat" }, { - "cacheTimeout": null, "datasource": "${DS_PROMETHEUS}", - "description": "Number of insync snapmirrors.", + "description": "Number of protected volumes.", "fieldConfig": { "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "light-purple", - "text": "0" - } - }, - "type": "special" - } - ], + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "light-purple", + "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] }, - "unit": "none" + "unit": "short" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Protected" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] }, "gridPos": { - "h": 3, + "h": 5, "w": 4, "x": 20, - "y": 3 + "y": 1 }, - "id": 22, + "id": 145, "links": [], "options": { "colorMode": "value", @@ -539,112 +441,97 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, "pluginVersion": "8.1.8", "targets": [ { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_status=\"insync\",relationship_id!=\"\"}))", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",svm=~\"$SVM\",volume=~\"$Volume\",type=\"rw\",state!=\"\"}) or vector(0)", "format": "time_series", - "hide": false, - "instant": false, + "instant": true, "interval": "", - "intervalFactor": 1, - "legendFormat": "", + "legendFormat": "Total", "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Insync now", - "type": "stat" - }, - { - "cacheTimeout": null, - "datasource": "${DS_PROMETHEUS}", - "description": "Number of unhealhty snapmirrors.", - "fieldConfig": { - "defaults": { - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "rgb(222, 113, 139)", - "text": "0" - } - }, - "type": "special" - } - ], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(222, 113, 139)", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 20, - "y": 6 - }, - "id": 21, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.1.8", - "targets": [ { - "expr": "count (count by (relationship_id) (snapmirror_labels{source_cluster=~\"$SourceCluster\",healthy=\"false\",relationship_id!=\"\"}))", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "count(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",svm=~\"$SVM\",volume=~\"$Volume\",type=\"rw\",state!=\"\",isProtected=\"true\",isDestinationOntap=\"true\", svm_root=\"false\"}) or vector(0)", "format": "time_series", "hide": false, - "instant": false, + "instant": true, "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" + "legendFormat": "Protected", + "refId": "B" + } + ], + "title": "Protected Volumes", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "Not Protected", + "binary": { + "left": "Total", + "operator": "-", + "reducer": "sum", + "right": "Protected" + }, + "mode": "binary", + "reduce": { + "include": [ + "Protected" + ], + "reducer": "sum" + } + } + }, + { + "id": "organize", + "options": { + "colorMode": "value", + "excludeByName": { + "Not Protected": true, + "Time": true, + "Total": true + }, + "graphMode": "area", + "includeByName": {}, + "indexByName": {}, + "justifyMode": "auto", + "orientation": "horizontal", + "renameByName": {}, + "text": {}, + "textMode": "auto" + } } ], - "timeFrom": null, - "timeShift": null, - "title": "Unhealthy", "type": "stat" }, { "datasource": "${DS_PROMETHEUS}", - "description": "Must select Source Volume/Destination Volume for detail of single relationship.", + "description": "This panel displays detail of all the snapmirror relationships from source side of view.", "fieldConfig": { "defaults": { + "color": { + "mode": "thresholds" + }, "custom": { "align": "left", "displayMode": "auto", "filterable": true }, + "decimals": 2, "links": [], "mappings": [], + "min": 0, "thresholds": { "mode": "absolute", "steps": [ @@ -659,92 +546,126 @@ { "matcher": { "id": "byName", - "options": "Size" + "options": "Destination Cluster" }, "properties": [ { - "id": "custom.displayMode", - "value": "lcd-gauge" - }, - { - "id": "unit", - "value": "bytes" + "id": "custom.width", + "value": 200 }, { - "id": "mappings", + "id": "links", "value": [ { - "options": { - "match": "null", - "result": { - "text": "0" - } - }, - "type": "special" + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" } ] - }, - { - "id": "custom.width", - "value": 240 } ] }, { "matcher": { "id": "byName", - "options": "Duration" + "options": "Source Cluster" }, "properties": [ { - "id": "custom.displayMode", - "value": "lcd-gauge" + "id": "custom.width", + "value": 200 }, { - "id": "unit", - "value": "s" - }, + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Group Type" + }, + "properties": [ { "id": "mappings", "value": [ { "options": { - "match": "null", - "result": { - "text": "0" + "consistencygroup": { + "index": 2, + "text": "Consistency Group" + }, + "flexgroup": { + "index": 3, + "text": "FlexGroup" + }, + "none": { + "index": 0, + "text": "Volume" + }, + "vserver": { + "index": 1, + "text": "SVM DR" } }, - "type": "special" + "type": "value" } ] + }, + { + "id": "custom.width", + "value": 130 } ] }, { "matcher": { "id": "byName", - "options": "Lag" + "options": "Protection Policy" }, "properties": [ { - "id": "unit", - "value": "s" - }, - { - "id": "custom.displayMode", - "value": "lcd-gauge" + "id": "custom.width", + "value": 150 }, { "id": "mappings", "value": [ { "options": { - "match": "null", - "result": { - "text": "0" + "async_mirror": { + "index": 1, + "text": "Async Mirror" + }, + "automated_failover": { + "index": 4, + "text": "Automated Failover" + }, + "automated_failover_duplex": { + "index": 0, + "text": "Automated Failover Duplex" + }, + "mirror_vault": { + "index": 2, + "text": "Mirror Vault" + }, + "sync_mirror": { + "index": 5, + "text": "Sync" + }, + "vault": { + "index": 3, + "text": "Vault" } }, - "type": "special" + "type": "value" } ] } @@ -753,42 +674,89 @@ { "matcher": { "id": "byName", - "options": "Destination Cluster" + "options": "Health" }, "properties": [ { "id": "custom.width", - "value": 200 + "value": 120 }, { - "id": "links", + "id": "mappings", "value": [ { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + "options": { + "false": { + "color": "red", + "index": 1, + "text": "Unhealthy" + }, + "true": { + "color": "green", + "index": 0, + "text": "Healthy" + } + }, + "type": "value" } ] + }, + { + "id": "custom.displayMode", + "value": "color-background" } ] }, { "matcher": { "id": "byName", - "options": "Source Cluster" + "options": "Source Path" }, "properties": [ { "id": "custom.width", - "value": 200 + "value": 250 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Destination Path" + }, + "properties": [ + { + "id": "custom.width", + "value": 250 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Size" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "lcd-gauge" }, { - "id": "links", + "id": "unit", + "value": "bytes" + }, + { + "id": "mappings", "value": [ { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" + "options": { + "match": "null", + "result": { + "index": 0, + "text": "0 B" + } + }, + "type": "special" } ] } @@ -797,32 +765,29 @@ { "matcher": { "id": "byName", - "options": "Type" + "options": "Duration" }, "properties": [ + { + "id": "custom.displayMode", + "value": "lcd-gauge" + }, + { + "id": "unit", + "value": "s" + }, { "id": "mappings", "value": [ { "options": { - "consistencygroup": { - "index": 2, - "text": "Consistency Group" - }, - "flexgroup": { - "index": 3, - "text": "FlexGroup" - }, - "none": { + "match": "null", + "result": { "index": 0, - "text": "Volume" - }, - "vserver": { - "index": 1, - "text": "SVM DR" + "text": "0 s" } }, - "type": "value" + "type": "special" } ] } @@ -831,46 +796,31 @@ { "matcher": { "id": "byName", - "options": "Relationship Type" + "options": "Lag" }, "properties": [ { - "id": "custom.width", - "value": 200 + "id": "custom.displayMode", + "value": "lcd-gauge" }, { "id": "mappings", "value": [ { "options": { - "async_mirror": { - "index": 1, - "text": "Async Mirror" - }, - "automated_failover": { - "index": 4, - "text": "Automated Failover" - }, - "automated_failover_duplex": { + "match": "null", + "result": { "index": 0, - "text": "Automated Failover Duplex" - }, - "mirror_vault": { - "index": 2, - "text": "Mirror Vault" - }, - "sync_mirror": { - "index": 5, - "text": "Sync" - }, - "vault": { - "index": 3, - "text": "Vault" + "text": "0" } }, - "type": "value" + "type": "special" } ] + }, + { + "id": "unit", + "value": "s" } ] } @@ -880,60 +830,81 @@ "h": 10, "w": 24, "x": 0, - "y": 7 + "y": 6 }, - "id": 28, + "id": 134, "links": [], "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, "showHeader": true, "sortBy": [ { - "desc": true, - "displayName": "Size" + "desc": false, + "displayName": "Health" } ] }, "pluginVersion": "8.1.8", "targets": [ { - "expr": "snapmirror_last_transfer_duration{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "snapmirror_last_transfer_duration{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\",relationship_id!=\"\"}", "format": "table", + "hide": false, "instant": true, - "interval": "", - "legendFormat": "", - "refId": "C" + "legendFormat": "__auto", + "range": false, + "refId": "B" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "snapmirror_last_transfer_size{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\",relationship_id!=\"\"}\nand\ntopk(\n $TopResources,\n avg_over_time(snapmirror_last_transfer_size{source_cluster=~\"$SourceCluster\", source_volume=~\"$SourceVolume\", destination_volume=~\"$DestinationVolume\", source_vserver=~\"$SourceSVM\", destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\",relationship_id!=\"\"}[3h])\n)", + "expr": "snapmirror_last_transfer_size{source_cluster=~\"$Cluster\", source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\",relationship_id!=\"\"}", "format": "table", + "hide": false, "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" + "legendFormat": "__auto", + "range": false, + "refId": "C" }, { - "expr": "snapmirror_lag_time{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}", + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "snapmirror_lag_time{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\",relationship_id!=\"\"}", "format": "table", + "hide": false, "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" + "legendFormat": "__auto", + "range": false, + "refId": "D" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "snapmirror_labels{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}", + "expr": "snapmirror_labels{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\",derived_relationship_type!=\"load_sharing\",relationship_id!=\"\"} ", "format": "table", "hide": false, "instant": true, "interval": "", "legendFormat": "", - "refId": "D" + "refId": "A" } ], - "timeFrom": null, - "timeShift": null, - "title": "Top $TopResources Last Transfers by Transfer Data Size", + "title": "Relationships", "transformations": [ { "id": "filterFieldsByName", @@ -942,13 +913,14 @@ "names": [ "cluster", "destination_location", + "group_type", + "healthy", + "policy_type", "source_cluster", "source_location", + "Value #B", "Value #C", - "Value #A", - "group_type", - "policy_type", - "Value #B" + "Value #D" ] } } @@ -958,62 +930,41 @@ "options": {} }, { - "id": "filterByValue", + "id": "organize", "options": { - "filters": [ - { - "config": { - "id": "greaterOrEqual", - "options": { - "value": 0 - } - }, - "fieldName": "Value #A" - } - ], - "match": "any", - "type": "include" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "__name__": true, - "cluster": false, - "datacenter": true, - "destination_node": true, - "destination_volume": false, - "destination_vserver": false, - "instance": true, - "job": true, - "relationship_type": true, - "schedule": true, - "source_node": true, - "source_volume": false, - "source_vserver": false - }, + "excludeByName": {}, + "includeByName": {}, "indexByName": { - "Value #A": 7, - "Value #C": 6, - "cluster": 1, + "Value": 15, + "cluster": 2, + "derived_relationship_type": 4, "destination_location": 3, - "group_type": 4, - "policy_type": 5, + "group_type": 5, + "healthy": 6, + "last_transfer_type": 7, + "policy_type": 8, + "protectedBy": 9, + "protectionSourceType": 10, + "relationship_id": 11, + "relationship_status": 12, + "relationship_type": 13, + "schedule": 14, "source_cluster": 0, - "source_location": 2 + "source_location": 1 }, "renameByName": { - "Value #A": "Size", - "Value #B": "Lag", - "Value #C": "Duration", + "Value #B": "Duration", + "Value #C": "Size", + "Value #D": "Lag", "cluster": "Destination Cluster", - "destination_location": "Destination ", - "group_type": "Type", - "policy_type": "Relationship Type", + "derived_relationship_type": "", + "destination_location": "Destination Path", + "group_type": "Group Type", + "healthy": "Health", + "policy_type": "Protection Policy", + "relationship_status": "", "source_cluster": "Source Cluster", - "source_location": "Source" + "source_location": "Source Path" } } } @@ -1022,7 +973,7 @@ }, { "datasource": "${DS_PROMETHEUS}", - "description": "Must select Source Volume/Destination Volume for detail of single relationship.", + "description": "This panel displays duration of the last SnapMirror transfer in seconds.", "fieldConfig": { "defaults": { "color": { @@ -1080,10 +1031,9 @@ "h": 9, "w": 8, "x": 0, - "y": 17 + "y": 16 }, - "id": 136, - "links": [], + "id": 140, "options": { "legend": { "calcs": [ @@ -1093,7 +1043,8 @@ "max" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -1105,11 +1056,13 @@ "targets": [ { "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "snapmirror_last_transfer_duration{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_last_transfer_duration{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}[3h] @ end()))", + "expr": "snapmirror_last_transfer_duration{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_last_transfer_duration{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}[3h] @ end()))", "hide": false, "interval": "", - "legendFormat": "{{destination_volume}} - {{source_volume}}", + "legendFormat": "{{source_location}} -> {{destination_location}}", + "range": true, "refCount": 0, "refId": "B", "textEditor": false @@ -1120,7 +1073,7 @@ }, { "datasource": "${DS_PROMETHEUS}", - "description": "Must select Source Volume/Destination Volume for detail of single relationship.", + "description": "This panel displays amount of time since the last snapmirror transfer in seconds.", "fieldConfig": { "defaults": { "color": { @@ -1179,10 +1132,9 @@ "h": 9, "w": 8, "x": 8, - "y": 17 + "y": 16 }, - "id": 134, - "links": [], + "id": 141, "options": { "legend": { "calcs": [ @@ -1192,7 +1144,8 @@ "max" ], "displayMode": "table", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -1204,11 +1157,13 @@ "targets": [ { "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "snapmirror_lag_time{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_lag_time{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}[3h] @ end()))", + "expr": "snapmirror_lag_time{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_lag_time{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}[3h] @ end()))", "hide": false, "interval": "", - "legendFormat": "{{destination_volume}} - {{source_volume}}", + "legendFormat": "{{source_location}} -> {{destination_location}}", + "range": true, "refCount": 0, "refId": "B", "textEditor": false @@ -1219,7 +1174,7 @@ }, { "datasource": "${DS_PROMETHEUS}", - "description": "Must select Source Volume/Destination Volume for detail of single relationship.", + "description": "This panel displays size in kilobytes (1024 bytes) of the last transfer.", "fieldConfig": { "defaults": { "color": { @@ -1240,3020 +1195,82 @@ "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 2, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 8, - "x": 16, - "y": 17 - }, - "id": 135, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "datasource": "${DS_PROMETHEUS}", - "exemplar": false, - "expr": "snapmirror_last_transfer_size{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_last_transfer_size{source_cluster=~\"$SourceCluster\",source_volume=~\"$SourceVolume\",destination_volume=~\"$DestinationVolume\",source_vserver=~\"$SourceSVM\",destination_vserver=~\"$DestinationSVM\",destination_location=~\".*$DestinationConsistencyGroup\",source_location=~\".*$SourceConsistencyGroup\"}[3h] @ end()))", - "hide": false, - "interval": "", - "legendFormat": "{{destination_volume}} - {{source_volume}}", - "refCount": 0, - "refId": "B", - "textEditor": false - } - ], - "title": "Top $TopResources Relationships by Transfer Data", - "type": "timeseries" - }, - { - "collapsed": true, - "datasource": "${DS_PROMETHEUS}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 26 - }, - "id": 5, - "panels": [ - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays count of snapmirror relationships by destination node.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 0, - "y": 27 - }, - "id": 6, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "count by (destination_node, relationship_status) (snapmirror_labels{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\",relationship_id!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - {{relationship_status}}", - "refCount": 0, - "refId": "B", - "textEditor": false - } - ], - "title": "Destination Relationships per Node", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror break operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 6, - "y": 27 - }, - "id": 31, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (destination_node) (snapmirror_break_failed_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (destination_node) (snapmirror_break_successful_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "instant": false, - "interval": "", - "legendFormat": "{{destination_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Destination - Break Operations", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror resync operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 12, - "y": 27 - }, - "id": 32, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (destination_node) (snapmirror_resync_failed_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (destination_node) (snapmirror_resync_successful_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Destination - Resync Operations", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror update operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 18, - "y": 27 - }, - "id": 33, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (destination_node) (snapmirror_update_failed_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (destination_node) (snapmirror_update_successful_count{source_cluster=~\"$SourceCluster\",destination_node=~\"$DestinationNode\",destination_node!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Destination - Update Operations", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays the count of snapmirror relationships by source node.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 0, - "y": 36 - }, - "id": 11, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "count by (source_node, relationship_status) (snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - {{relationship_status}}", - "refCount": 0, - "refId": "B", - "textEditor": false - } - ], - "title": "Source Relationships per Node", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror break operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 6, - "y": 36 - }, - "id": 34, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (source_node) (snapmirror_break_failed_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (source_node) (snapmirror_break_successful_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Source - Break Operations", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror resync operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 12, - "y": 36 - }, - "id": 35, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (source_node) (snapmirror_resync_failed_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (source_node) (snapmirror_resync_successful_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Source - Resync Operations", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "The number of failed/successful SnapMirror update operations for the relationship.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 18, - "y": 36 - }, - "id": 36, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "sum by (source_node) (snapmirror_update_failed_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - FAIL", - "refCount": 0, - "refId": "B", - "textEditor": false - }, - { - "expr": "sum by (source_node) (snapmirror_update_successful_count{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node=~\"$SourceNode\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ", - "hide": false, - "interval": "", - "legendFormat": "{{source_node}} - SUCCESS", - "refCount": 0, - "refId": "A", - "textEditor": false - } - ], - "title": "Source - Update Operations", - "type": "timeseries" - } - ], - "title": "SnapMirrors per Node", - "type": "row" - }, - { - "collapsed": true, - "datasource": "${DS_PROMETHEUS}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 27 - }, - "id": 8, - "panels": [ - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays count of snapmirror relationships by source SVM.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 28 - }, - "id": 9, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "count by (source_vserver, relationship_status) (snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\",source_vserver!=\"\",relationship_id!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{source_vserver}} - {{relationship_status}}", - "refCount": 0, - "refId": "B", - "textEditor": false - } - ], - "title": "Source Relationships per SVM", - "type": "timeseries" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays count of snapmirror relationships by destination SVM.", - "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": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "decimals": 0, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "locale" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 28 - }, - "id": 10, - "links": [], - "options": { - "legend": { - "calcs": [ - "min", - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.8", - "repeatDirection": "h", - "targets": [ - { - "expr": "count by (destination_vserver, relationship_status) (snapmirror_labels{source_cluster=~\"$SourceCluster\",destination_vserver=~\"$DestinationSVM\",destination_vserver!=\"\",relationship_id!=\"\"})", - "hide": false, - "interval": "", - "legendFormat": "{{destination_vserver}} - {{relationship_status}}", - "refCount": 0, - "refId": "B", - "textEditor": false - } - ], - "title": "Destination Relationships per SVM", - "type": "timeseries" - } - ], - "title": "SnapMirrors per SVM", - "type": "row" - }, - { - "collapsed": true, - "datasource": "${DS_PROMETHEUS}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 28 - }, - "id": 45, - "panels": [ - { - "datasource": "${DS_PROMETHEUS}", - "description": "Volumes Protected With Snapmirror (Local And Remote).", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "decimals": 0, - "mappings": [] - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Volume Snapmirror" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "green", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Unprotected" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "yellow", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 12, - "w": 4, - "x": 0, - "y": 29 - }, - "id": 101, - "options": { - "legend": { - "displayMode": "hidden", - "placement": "right", - "values": [ - "value" - ] - }, - "pieType": "donut", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.2", - "targets": [ - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster)(snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=~\"volume.*|cg.*\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) unless on (source_volume,source_vserver,source_cluster) snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} ) or vector (0)", - "format": "time_series", - "instant": true, - "interval": "", - "legendFormat": "Volume Snapmirror", - "refId": "A" - }, - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster)(snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) unless on (source_volume,source_vserver,source_cluster) snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"volume\"} ) or vector (0)", - "format": "time_series", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Storage VM Snapmirror", - "refId": "B" - }, - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster) (snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"volume\"}) * on(source_volume,source_vserver,source_cluster) group_left() group by (source_volume,source_vserver,source_cluster) (snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} )) or vector (0)", - "format": "time_series", - "hide": false, - "interval": "", - "legendFormat": "Volume and Storage VM Snapmirror", - "refId": "C" - }, - { - "exemplar": false, - "expr": "count(volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"} unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"source_volume\", \"(.*)\") , \"svm\", \"$1\", \"source_vserver\", \"(.*)\") unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"destination_volume\", \"(.*)\") , \"svm\", \"$1\", \"destination_vserver\", \"(.*)\") ) or vector (0)", - "format": "time_series", - "hide": false, - "interval": "", - "legendFormat": "Unprotected", - "refId": "D" - } - ], - "title": "Protected By Status", - "transformations": [], - "type": "piechart" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of volume snapmirror relationships.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-green", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 4, - "y": 29 - }, - "id": 120, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster)(snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=~\"volume.*|cg.*\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) unless on (source_volume,source_vserver,source_cluster) snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} ) or vector (0)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Volume Snapmirror", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of snapmirror relationships that are protected by both volume and Storage VM.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-blue", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 8, - "y": 29 - }, - "id": 122, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster) (snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"volume\"}) * on (source_volume,source_vserver,source_cluster) group_left() group by (source_volume,source_vserver,source_cluster) (snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} )) or vector (0)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Volume & Storage VM Snapmirror", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Volume Relationships Experiencing Lag.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "decimals": 0, - "mappings": [] - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Volume Snapmirror" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "green", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Unprotected" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "yellow", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 12, - "w": 4, - "x": 12, - "y": 29 - }, - "id": 125, - "options": { - "legend": { - "displayMode": "hidden", - "placement": "right", - "values": [ - "value" - ] - }, - "pieType": "donut", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.2", - "targets": [ - { - "exemplar": false, - "expr": "count((1 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 900))", - "instant": true, - "interval": "", - "legendFormat": "<=15 minutes", - "refId": "A" - }, - { - "exemplar": false, - "expr": "count((900 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 1800))", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "16-30 minutes", - "refId": "B" - }, - { - "exemplar": false, - "expr": "count((1800 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 3600))", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "31-60 minutes", - "refId": "C" - }, - { - "exemplar": false, - "expr": "count((snapmirror_lag_time{ source_cluster=~\"$SourceCluster\",source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") > 3600))", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": ">= 60 minutes", - "refId": "D" - } - ], - "title": "Lag Status", - "transformations": [], - "type": "piechart" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of snapmirror relationships with a lag time of 15 minutes or less.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(31, 176, 196)", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 16, - "y": 29 - }, - "id": 116, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count((1 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 900))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "<=15 minutes", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of snapmirror relationships having lag time between 16 minutes to 30 minutes.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(31, 176, 196)", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 20, - "y": 29 - }, - "id": 117, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count((900 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 1800))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "16-30 minutes", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of Storage VM snapmirror relationships.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-purple", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 4, - "y": 35 - }, - "id": 121, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster)(snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"storage_vm\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) unless on (source_volume,source_vserver,source_cluster) snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=\"volume\"} ) or vector (0)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Storage VM Snapmirror", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of volumes that are not protected.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [ - { - "options": { - "match": "null", - "result": { - "color": "rgb(21, 118, 171)", - "text": "0" - } - }, - "type": "special" - } - ], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-yellow", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 8, - "y": 35 - }, - "id": 124, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count(volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"} unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"source_volume\", \"(.*)\") , \"svm\", \"$1\", \"source_vserver\", \"(.*)\") unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"destination_volume\", \"(.*)\") , \"svm\", \"$1\", \"destination_vserver\", \"(.*)\") ) or vector (0)", - "format": "time_series", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Unprotected", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of snapmirror relationships having lag time between 31 minutes to 60 minutes.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(31, 176, 196)", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 16, - "y": 35 - }, - "id": 118, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count((1800 < snapmirror_lag_time{source_cluster=~\"$SourceCluster\", source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") <= 3600))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": "31-60 minutes", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "Total number of snapmirror relationships with a lag time of 60 minutes or more.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgb(31, 176, 196)", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 20, - "y": 35 - }, - "id": 119, - "links": [], - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "center", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "count((snapmirror_lag_time{ source_cluster=~\"$SourceCluster\",source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") > 3600))", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "title": ">60 minutes", - "type": "stat" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays local & remote snapmirrors with protected by details.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "transparent", - "mode": "fixed" - }, - "custom": { - "align": "left", - "displayMode": "auto", - "filterable": true - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Protected By" - }, - "properties": [ - { - "id": "custom.filterable", - "value": true - }, - { - "id": "custom.width", - "value": 150 - }, - { - "id": "displayName", - "value": "Protected By" - }, - { - "id": "mappings", - "value": [ - { - "options": { - "cg": { - "index": 2, - "text": "CG" - }, - "storage_vm": { - "index": 0, - "text": "SVM DR" - }, - "volume": { - "index": 1, - "text": "SnapMirror" - } - }, - "type": "value" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Local/Remote" - }, - "properties": [ - { - "id": "mappings", - "value": [ - { - "options": { - "true": { - "index": 0, - "text": "Local" - } - }, - "type": "value" - }, - { - "options": { - "match": "empty", - "result": { - "index": 1, - "text": "Remote" - } - }, - "type": "special" - } - ] - }, - { - "id": "custom.filterable", - "value": true - }, - { - "id": "custom.width", - "value": 130 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Source Volume" - }, - "properties": [ - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Destination Volume" - }, - "properties": [ - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - } - ] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 0, - "y": 41 - }, - "id": 126, - "options": { - "footer": { - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "snapmirror_labels{source_cluster=~\"$SourceCluster\",protectedBy=~\"volume.*|cg.*|storage_vm.*\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "SnapMirror (local and remote) Protected by", - "transformations": [ - { - "id": "filterFieldsByName", - "options": { - "include": { - "names": [ - "destination_volume", - "local", - "protectedBy", - "source_volume" - ] - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "cluster": true, - "destination_vserver": true, - "protectedBy": false, - "source_cluster": true, - "source_vserver": true - }, - "indexByName": { - "destination_volume": 1, - "protectedBy": 2, - "source_volume": 0 - }, - "renameByName": { - "destination_volume": "Destination Volume", - "local": "Local/Remote", - "protectedBy": "Protected By", - "source_volume": "Source Volume" - } - } - } - ], - "type": "table" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays snapmirror relationships with lag duration details.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "transparent", - "mode": "fixed" - }, - "custom": { - "align": "left", - "displayMode": "auto", - "filterable": true - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Lag Duration Bucket" - }, - "properties": [ - { - "id": "custom.filterable", - "value": true - }, - { - "id": "mappings", - "value": [ - { - "options": { - "from": 1, - "result": { - "index": 0, - "text": "<= 15 Minutes" - }, - "to": 900 - }, - "type": "range" - }, - { - "options": { - "from": 901, - "result": { - "index": 1, - "text": "16-30 Minutes" - }, - "to": 1800 - }, - "type": "range" - }, - { - "options": { - "from": 1801, - "result": { - "index": 2, - "text": "31-60 Minutes" - }, - "to": 3600 - }, - "type": "range" - }, - { - "options": { - "from": 3600, - "result": { - "index": 3, - "text": ">60 Minutes" - }, - "to": 1e+24 - }, - "type": "range" - } - ] - }, - { - "id": "custom.width", - "value": 190 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Source Volume" - }, - "properties": [ - { - "id": "custom.width", - "value": 270 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Destination Volume" - }, - "properties": [ - { - "id": "custom.width", - "value": 300 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Lag Duration (seconds)" - }, - "properties": [ - { - "id": "custom.width", - "value": 180 - }, - { - "id": "unit", - "value": "s" - } - ] - } - ] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 12, - "y": 41 - }, - "id": 127, - "options": { - "footer": { - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "snapmirror_lag_time{ source_cluster=~\"$SourceCluster\",source_volume!=\"\"} * on (source_volume, source_vserver, cluster) group_left() label_replace( label_replace(volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\") > 0", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Volume Relationships Experiencing Lag", - "transformations": [ - { - "id": "filterFieldsByName", - "options": { - "include": { - "names": [ - "destination_volume", - "source_volume", - "Value" - ] - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "Value": 2, - "destination_volume": 1, - "source_volume": 0 - }, - "renameByName": { - "Value": "Lag Duration (seconds)", - "destination_volume": "Destination Volume", - "source_volume": "Source Volume", - "volume": "" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "Lag Duration Bucket", - "mode": "reduceRow", - "reduce": { - "include": [ - "Lag Duration (seconds)" - ], - "reducer": "last" - }, - "replaceFields": false - } - } - ], - "type": "table" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays details of volumes that are not protected.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "transparent", - "mode": "fixed" - }, - "custom": { - "align": "left", - "displayMode": "auto", - "filterable": true - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "cluster" - }, - "properties": [ - { - "id": "displayName", - "value": "Cluster" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "svm" - }, - "properties": [ - { - "id": "displayName", - "value": "SVM" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-svm/ontap-svm?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${__url_time_range}&var-SVM=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "volume" - }, - "properties": [ - { - "id": "displayName", - "value": "Volume" - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - } - ] - }, - "gridPos": { - "h": 13, - "w": 12, - "x": 0, - "y": 54 - }, - "id": 133, - "options": { - "footer": { - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\",snapshot_policy!=\"\"} unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"source_volume\", \"(.*)\") , \"svm\", \"$1\", \"source_vserver\", \"(.*)\") unless on (volume,svm) label_replace( label_replace( snapmirror_labels{source_cluster=~\"$SourceCluster\",relationship_id!=\"\"} , \"volume\", \"$1\", \"destination_volume\", \"(.*)\") , \"svm\", \"$1\", \"destination_vserver\", \"(.*)\") ", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Unprotected Volumes", - "transformations": [ - { - "id": "filterFieldsByName", - "options": { - "include": { - "names": [ - "cluster", - "svm", - "volume" - ] - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "cluster": 2, - "svm": 1, - "volume": 0 - }, - "renameByName": {} - } - } - ], - "type": "table" - } - ], - "title": "SnapMirror Data Protection Overview per Cluster", - "type": "row" - }, - { - "collapsed": true, - "datasource": "${DS_PROMETHEUS}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 29 - }, - "id": 42, - "panels": [ - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays volume relationship count based on the relationship type.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "decimals": 0, - "mappings": [] - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 13, - "x": 0, - "y": 7 - }, - "id": 111, - "options": { - "displayLabels": [], - "legend": { - "displayMode": "table", - "placement": "right", - "values": [ - "value" - ] - }, - "pieType": "donut", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.2", - "targets": [ - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"extended_data_protection\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "instant": true, - "interval": "", - "legendFormat": "Asynchronous Mirror", - "refId": "A" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"mirror_vault\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Asynchronous Mirror and Vault", - "refId": "B" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"vault\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Asynchronous Vault", - "refId": "C" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"sync_mirror_strict\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "StrictSync", - "refId": "D" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"sync_mirror\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Sync", - "refId": "E" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"automated_failover\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Automated Failover", - "refId": "F" - }, - { - "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",derived_relationship_type=\"automated_failover_duplex\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\")) or vector(0)", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Automated Failover Duplex", - "refId": "G" - } - ], - "title": "Volume relationship count by relationship type", - "transformations": [], - "type": "piechart" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays volume relationship count based on the relationship health.", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "decimals": 0, - "mappings": [] - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Healthy" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "green", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Unhealthy" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "dark-yellow", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 12, - "w": 11, - "x": 13, - "y": 7 - }, - "id": 112, - "options": { - "legend": { - "displayMode": "table", - "placement": "right", - "values": [ - "value" - ] - }, - "pieType": "donut", - "reduceOptions": { - "calcs": [ - "last" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.1.2", - "targets": [ - { - "exemplar": false, - "expr": "count((snapmirror_labels{source_cluster=~\"$SourceCluster\",healthy=\"true\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\", type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") )) or vector (0)", - "format": "time_series", - "instant": true, - "interval": "", - "legendFormat": "Healthy", - "refId": "A" - }, - { - "exemplar": false, - "expr": "count(group by (source_volume,source_vserver,source_cluster)(snapmirror_labels{source_cluster=~\"$SourceCluster\",healthy=\"false\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\", type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ) or vector (0)", - "format": "time_series", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "Unhealthy", - "refId": "B" - } - ], - "title": "Volume relationship count by relationship health", - "type": "piechart" - }, - { - "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays volume relationship count based on the relationship type.", - "fieldConfig": { - "defaults": { - "color": { - "fixedColor": "transparent", - "mode": "fixed" - }, - "custom": { - "align": "left", - "displayMode": "auto", - "filterable": true - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Source Volume" - }, - "properties": [ - { - "id": "custom.width", - "value": 410 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Protection Policy" - }, - "properties": [ - { - "id": "custom.filterable", - "value": true - }, - { - "id": "custom.width", - "value": 290 - }, - { - "id": "mappings", - "value": [ - { - "options": { - "automated_failover": { - "index": 5, - "text": "Automated Failover" - }, - "automated_failover_duplex": { - "index": 6, - "text": "Automated Failover Duplex" - }, - "data_protection": { - "index": 7, - "text": "Data Protection" - }, - "extended_data_protection": { - "index": 2, - "text": "Asynchronous Mirror" - }, - "mirror_vault": { - "index": 0, - "text": "Asynchronous Mirror and Vault" - }, - "sync_mirror": { - "index": 1, - "text": "Sync" - }, - "sync_mirror_strict": { - "index": 4, - "text": "StrictSync" - }, - "vault": { - "index": 3, - "text": "Asynchronous Vault" - } - }, - "type": "value" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Destination Volume" - }, - "properties": [ - { - "id": "custom.width", - "value": 410 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Healthy Status" - }, - "properties": [ - { - "id": "mappings", - "value": [ - { - "options": { - "false": { - "index": 1, - "text": "Unhealthy" - }, - "true": { - "index": 0, - "text": "Healthy" - } - }, - "type": "value" - } - ] - }, - { - "id": "custom.width", - "value": 120 - } - ] - }, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 2, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "matcher": { - "id": "byName", - "options": "Destination Cluster" - }, - "properties": [ - { - "id": "custom.width", - "value": 240 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] - } - ] + "color": "green", + "value": null }, { - "matcher": { - "id": "byName", - "options": "Source Cluster" - }, - "properties": [ - { - "id": "custom.width", - "value": 240 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] - } - ] + "color": "red", + "value": 80 } ] }, - "gridPos": { - "h": 14, - "w": 24, - "x": 0, - "y": 42 - }, - "id": 129, - "options": { - "footer": { - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true, - "sortBy": [] - }, - "pluginVersion": "8.4.11", - "targets": [ - { - "exemplar": false, - "expr": "snapmirror_labels{source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{datacenter=~\"$Datacenter\", cluster=~\"$SourceCluster\",volume!~\"MDV.*\",type=\"rw\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Volume relationship count by Relationship type & Health", - "transformations": [ - { - "id": "filterFieldsByName", - "options": { - "include": { - "names": [ - "derived_relationship_type", - "destination_volume", - "healthy", - "source_volume", - "source_cluster", - "cluster" - ] - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": {}, - "indexByName": { - "cluster": 3, - "derived_relationship_type": 4, - "destination_volume": 1, - "healthy": 5, - "source_cluster": 2, - "source_volume": 0 - }, - "renameByName": { - "cluster": "Destination Cluster", - "derived_relationship_type": "Protection Policy", - "destination_volume": "Destination Volume", - "healthy": "Healthy Status", - "source_cluster": "Source Cluster", - "source_volume": "Source Volume" - } - } - } + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 8, + "x": 16, + "y": 16 + }, + "id": 142, + "options": { + "legend": { + "calcs": [ + "min", + "mean", + "lastNotNull", + "max" ], - "type": "table" + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.1.8", + "repeatDirection": "h", + "targets": [ + { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "snapmirror_last_transfer_size{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}\nand\ntopk($TopResources, avg_over_time(snapmirror_last_transfer_size{source_cluster=~\"$Cluster\",source_volume=~\".*$Volume.*\",source_vserver=~\"$SVM\"}[3h] @ end()))", + "hide": false, + "interval": "", + "legendFormat": "{{source_location}} -> {{destination_location}}", + "range": true, + "refCount": 0, + "refId": "B", + "textEditor": false } ], - "title": "SnapMirror Data Protection Analysis per Cluster", - "type": "row" + "title": "Top $TopResources Relationships by Transfer Data", + "type": "timeseries" }, { "collapsed": true, @@ -4262,13 +1279,13 @@ "h": 1, "w": 24, "x": 0, - "y": 30 + "y": 25 }, - "id": 43, + "id": 45, "panels": [ { "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays consistency group relationship count based on the relationship type.", + "description": "This panel displays volume relationship count based on the relationship type.", "fieldConfig": { "defaults": { "color": { @@ -4282,22 +1299,24 @@ } }, "decimals": 0, - "mappings": [] + "mappings": [], + "unitScale": true }, "overrides": [] }, "gridPos": { "h": 12, - "w": 13, + "w": 12, "x": 0, - "y": 7 + "y": 41 }, - "id": 113, + "id": 144, "options": { "displayLabels": [], "legend": { "displayMode": "table", "placement": "right", + "showLegend": true, "values": [ "value" ] @@ -4318,16 +1337,20 @@ "pluginVersion": "8.1.2", "targets": [ { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"extended_data_protection\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"extended_data_protection\",relationship_id!=\"\"}) or vector(0)", "instant": true, "interval": "", "legendFormat": "Asynchronous Mirror", "refId": "A" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"mirror_vault\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"mirror_vault\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4335,8 +1358,10 @@ "refId": "B" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"vault\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"vault\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4344,8 +1369,10 @@ "refId": "C" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"sync_mirror_strict\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"sync_mirror_strict\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4353,8 +1380,10 @@ "refId": "D" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"sync_mirror\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"sync_mirror\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4362,8 +1391,10 @@ "refId": "E" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"automated_failover\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"automated_failover\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4371,8 +1402,10 @@ "refId": "F" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",derived_relationship_type=\"automated_failover_duplex\",relationship_id=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{source_cluster=~\"$Cluster\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",derived_relationship_type=\"automated_failover_duplex\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -4380,13 +1413,13 @@ "refId": "G" } ], - "title": "Consistency Group relationship count by relationship type", + "title": "Relationships by Protection Policy", "transformations": [], "type": "piechart" }, { "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays consistency group relationship count based on the relationship health.", + "description": "This panel displays volume relationship count based on the lag time bucket.", "fieldConfig": { "defaults": { "color": { @@ -4400,19 +1433,20 @@ } }, "decimals": 0, - "mappings": [] + "mappings": [], + "unitScale": true }, "overrides": [ { "matcher": { "id": "byName", - "options": "Healthy" + "options": "<=15 minutes" }, "properties": [ { "id": "color", "value": { - "fixedColor": "green", + "fixedColor": "dark-yellow", "mode": "fixed" } } @@ -4421,13 +1455,43 @@ { "matcher": { "id": "byName", - "options": "Unhealthy" + "options": "16-30 minutes" }, "properties": [ { "id": "color", "value": { - "fixedColor": "dark-yellow", + "fixedColor": "light-yellow", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "31-60 minutes" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": ">= 60 minutes" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", "mode": "fixed" } } @@ -4437,15 +1501,17 @@ }, "gridPos": { "h": 12, - "w": 11, - "x": 13, - "y": 7 + "w": 12, + "x": 12, + "y": 41 }, - "id": 114, + "id": 125, "options": { + "displayLabels": [], "legend": { "displayMode": "table", "placement": "right", + "showLegend": true, "values": [ "value" ] @@ -4466,31 +1532,56 @@ "pluginVersion": "8.1.2", "targets": [ { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",healthy=\"true\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",relationship_id=\"\"}) or vector (0)", - "format": "time_series", + "expr": "count((1 < snapmirror_lag_time{source_cluster=~\"$Cluster\", source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",relationship_id!=\"\"} <= 900)) or vector(0)", "instant": true, "interval": "", - "legendFormat": "Healthy", + "legendFormat": "<=15 minutes", "refId": "A" }, { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",healthy=\"false\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\"$SourceConsistencyGroup\",relationship_id=\"\"}) or vector (0)", - "format": "time_series", + "expr": "count((900 < snapmirror_lag_time{source_cluster=~\"$Cluster\", source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",relationship_id!=\"\"} <= 1800)) or vector(0)", "hide": false, "instant": true, "interval": "", - "legendFormat": "Unhealthy", + "legendFormat": "16-30 minutes", "refId": "B" + }, + { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "count((1800 < snapmirror_lag_time{source_cluster=~\"$Cluster\", source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",relationship_id!=\"\"} <= 3600)) or vector(0)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "31-60 minutes", + "refId": "C" + }, + { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", + "exemplar": false, + "expr": "count((snapmirror_lag_time{ source_cluster=~\"$Cluster\",source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\",relationship_id!=\"\"} > 3600)) or vector(0)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": ">= 60 minutes", + "refId": "D" } ], - "title": "Consistency Group relationship count by relationship health", + "title": "Relationships by Lag time", + "transformations": [], "type": "piechart" }, { "datasource": "${DS_PROMETHEUS}", - "description": "This panel displays volume relationship count based on the relationship health.", + "description": "This panel displays snapmirror relationships with protection policy and lag duration details.", "fieldConfig": { "defaults": { "color": { @@ -4499,8 +1590,11 @@ }, "custom": { "align": "left", - "displayMode": "auto", - "filterable": true + "cellOptions": { + "type": "auto" + }, + "filterable": true, + "inspect": false }, "mappings": [], "thresholds": { @@ -4511,80 +1605,100 @@ "value": null } ] - } + }, + "unitScale": true }, "overrides": [ { "matcher": { "id": "byName", - "options": "Source Volume" + "options": "Lag Duration Bucket" }, "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "mappings", + "value": [ + { + "options": { + "from": 1, + "result": { + "color": "dark-yellow", + "index": 0, + "text": "<= 15 Minutes" + }, + "to": 900 + }, + "type": "range" + }, + { + "options": { + "from": 901, + "result": { + "color": "light-yellow", + "index": 1, + "text": "16-30 Minutes" + }, + "to": 1800 + }, + "type": "range" + }, + { + "options": { + "from": 1801, + "result": { + "color": "orange", + "index": 2, + "text": "31-60 Minutes" + }, + "to": 3600 + }, + "type": "range" + }, + { + "options": { + "from": 3600, + "result": { + "color": "red", + "index": 3, + "text": ">60 Minutes" + }, + "to": 1e+24 + }, + "type": "range" + } + ] + }, { "id": "custom.width", - "value": 220 + "value": 275 }, { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" - } - ] + "id": "custom.displayMode", + "value": "color-background-solid" } ] }, { "matcher": { "id": "byName", - "options": "Protection Policy" + "options": "Source Volume" }, "properties": [ - { - "id": "custom.filterable", - "value": true - }, { "id": "custom.width", - "value": 290 + "value": 297 }, { - "id": "mappings", + "id": "links", "value": [ { - "options": { - "automated_failover": { - "index": 5, - "text": "Automated Failover" - }, - "automated_failover_duplex": { - "index": 6, - "text": "Automated Failover Duplex" - }, - "extended_data_protection": { - "index": 2, - "text": "Asynchronous Mirror" - }, - "mirror_vault": { - "index": 0, - "text": "Asynchronous Mirror and Vault" - }, - "sync_mirror": { - "index": 1, - "text": "Sync" - }, - "sync_mirror_strict": { - "index": 4, - "text": "StrictSync" - }, - "vault": { - "index": 3, - "text": "Asynchronous Vault" - } - }, - "type": "value" + "targetBlank": true, + "title": "", + "url": "/d/cdot-volume/ontap-volume?orgId=1&${Datacenter:queryparam}&${Cluster:queryparam}&${SVM:queryparam}&${__url_time_range}&var-Volume=${__value.raw}" } ] } @@ -4598,7 +1712,7 @@ "properties": [ { "id": "custom.width", - "value": 210 + "value": 320 }, { "id": "links", @@ -4615,112 +1729,102 @@ { "matcher": { "id": "byName", - "options": "Destination CG" + "options": "Lag Duration (seconds)" }, "properties": [ { "id": "custom.width", - "value": 170 + "value": 311 + }, + { + "id": "unit", + "value": "s" } ] }, { "matcher": { "id": "byName", - "options": "Source CG" + "options": "Protection Policy" }, "properties": [ { "id": "custom.width", - "value": 170 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Healthy Status" - }, - "properties": [ + "value": 322 + }, { "id": "mappings", "value": [ { "options": { - "false": { + "async_mirror": { "index": 1, - "text": "Unhealthy" + "text": "Async Mirror" + }, + "automated_failover": { + "index": 4, + "text": "Automated Failover" }, - "true": { + "automated_failover_duplex": { "index": 0, - "text": "Healthy" + "text": "Automated Failover Duplex" + }, + "mirror_vault": { + "index": 2, + "text": "Mirror Vault" + }, + "sync_mirror": { + "index": 5, + "text": "Sync" + }, + "vault": { + "index": 3, + "text": "Vault" } }, "type": "value" } ] - }, - { - "id": "custom.width", - "value": 140 } ] }, { "matcher": { "id": "byName", - "options": "Source Cluster" + "options": "Source Path" }, "properties": [ { "id": "custom.width", - "value": 240 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] + "value": 382 } ] }, { "matcher": { "id": "byName", - "options": "Destination Cluster" + "options": "Destination Path " }, "properties": [ { "id": "custom.width", - "value": 240 - }, - { - "id": "links", - "value": [ - { - "targetBlank": true, - "title": "", - "url": "/d/cdot-cluster/ontap-cluster?orgId=1&${Datacenter:queryparam}&${__url_time_range}&var-Cluster=${__value.raw}" - } - ] + "value": 445 } ] } ] }, "gridPos": { - "h": 14, + "h": 8, "w": 24, "x": 0, - "y": 42 + "y": 53 }, - "id": 132, + "id": 127, "options": { + "cellHeight": "sm", "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -4730,11 +1834,13 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.11", + "pluginVersion": "8.1.8", "targets": [ { + "datasource": "${DS_PROMETHEUS}", + "editorMode": "code", "exemplar": false, - "expr": "snapmirror_labels{source_cluster=~\"$SourceCluster\",group_type=\"consistencygroup\",destination_cg_name=~\"$DestinationConsistencyGroup\",source_cg_name=~\".*$SourceConsistencyGroup\",relationship_id=\"\"}", + "expr": "snapmirror_lag_time{source_cluster=~\"$Cluster\",source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"} * on(source_cluster,source_vserver,source_volume) group_left(derived_relationship_type) snapmirror_labels{source_cluster=~\"$Cluster\",source_volume!=\"\",source_vserver=~\"$SVM\",source_volume=~\".*$Volume.*\"} > 0", "format": "table", "instant": true, "interval": "", @@ -4742,21 +1848,17 @@ "refId": "A" } ], - "title": "Consistency Group relationship count by Relationship type & Health", + "title": "Protection Policy and Lag detail", "transformations": [ { "id": "filterFieldsByName", "options": { "include": { "names": [ - "destination_cg_name", "derived_relationship_type", - "destination_volume", - "healthy", - "source_volume", - "cluster", - "source_cluster", - "source_cg_name" + "Value", + "destination_location", + "source_location" ] } } @@ -4765,39 +1867,48 @@ "id": "organize", "options": { "excludeByName": {}, + "includeByName": {}, "indexByName": { - "cluster": 5, - "derived_relationship_type": 6, - "destination_cg_name": 1, - "destination_volume": 3, - "healthy": 7, - "source_cg_name": 0, - "source_cluster": 4, - "source_volume": 2 + "Value": 3, + "derived_relationship_type": 2, + "destination_location": 1, + "source_location": 0 }, "renameByName": { - "cluster": "Destination Cluster", + "Value": "Lag Duration (seconds)", "derived_relationship_type": "Protection Policy", - "destination_cg_name": "Destination CG", + "destination_location": "Destination Path ", "destination_volume": "Destination Volume", - "healthy": "Healthy Status", - "source_cg_name": "Source CG", - "source_cluster": "Source Cluster", - "source_volume": "Source Volume" + "source_location": "Source Path", + "source_volume": "Source Volume", + "volume": "" } } + }, + { + "id": "calculateField", + "options": { + "alias": "Lag Duration Bucket", + "mode": "reduceRow", + "reduce": { + "include": [ + "Lag Duration (seconds)" + ], + "reducer": "last" + }, + "replaceFields": false + } } ], "type": "table" } ], - "title": "Consistency Group Data Protection Analysis per Cluster", + "title": "Policy and Lag details", "type": "row" } ], "refresh": "", "schemaVersion": 30, - "style": "dark", "tags": [ "harvest", "ontap", @@ -4852,7 +1963,7 @@ "useTags": false }, { - "allValue": null, + "allValue": ".*", "current": {}, "datasource": "${DS_PROMETHEUS}", "definition": "query_result(snapmirror_labels{system_type!=\"7mode\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{system_type!=\"7mode\",datacenter=~\"$Datacenter\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\"))", @@ -4862,7 +1973,7 @@ "includeAll": true, "label": null, "multi": true, - "name": "SourceCluster", + "name": "Cluster", "options": [], "query": { "query": "query_result(snapmirror_labels{system_type!=\"7mode\"} * on (source_volume, source_vserver, source_cluster) group_left() label_replace( label_replace( label_replace( volume_labels{system_type!=\"7mode\",datacenter=~\"$Datacenter\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_cluster\", \"$1\", \"cluster\", \"(.*)\"))", @@ -4878,125 +1989,22 @@ "useTags": false }, { - "allValue": null, - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{system_type!=\"7mode\", source_cluster=~\"$SourceCluster\"}, destination_node)", - "description": null, - "error": null, - "hide": 2, - "includeAll": true, - "label": null, - "multi": true, - "name": "DestinationNode", - "options": [], - "query": { - "query": "label_values(snapmirror_labels{system_type!=\"7mode\", source_cluster=~\"$SourceCluster\"}, destination_node)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "query_result((snapmirror_labels{system_type!=\"7mode\",source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ) \n\n\n", - "description": null, - "error": null, - "hide": 2, - "includeAll": true, - "label": null, - "multi": true, - "name": "SourceNode", - "options": [], - "query": { - "query": "query_result((snapmirror_labels{system_type!=\"7mode\",source_cluster=~\"$SourceCluster\"} * on (source_volume, source_vserver, source_cluster) group_left(source_node) label_replace( label_replace( label_replace( label_replace (volume_labels{datacenter=~\"$Datacenter\",cluster=~\"$SourceCluster\",node!=\"\"}, \"source_volume\", \"$1\", \"volume\", \"(.*)\") , \"source_vserver\", \"$1\", \"svm\", \"(.*)\"), \"source_node\", \"$1\", \"node\", \"(.*)\") , \"source_cluster\", \"$1\", \"cluster\", \"(.*)\") ) ) \n\n\n", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": ".*source_node=\\\"(.*?)\\\".*", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\"}, destination_vserver)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "DestinationSVM", - "options": [], - "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\"}, destination_vserver)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\"}, source_vserver)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "SourceSVM", - "options": [], - "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\"}, source_vserver)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, + "allValue": ".*", "current": {}, "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",destination_vserver=~\"$DestinationSVM\"}, destination_volume)", + "definition": "label_values(snapmirror_labels{source_cluster=~\"$Cluster\"},source_vserver)", "description": null, "error": null, "hide": 0, "includeAll": true, "label": null, "multi": true, - "name": "DestinationVolume", + "name": "SVM", "options": [], "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",destination_vserver=~\"$DestinationSVM\"}, destination_volume)", - "refId": "StandardVariableQuery" + "qryType": 1, + "query": "label_values(snapmirror_labels{source_cluster=~\"$Cluster\"},source_vserver)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 2, "regex": "", @@ -5008,24 +2016,25 @@ "useTags": false }, { - "allValue": null, + "allValue": ".*", "current": {}, "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\"}, source_volume)", + "definition": "label_values(snapmirror_labels{source_cluster=~\"$Cluster\", source_vserver=~\"$SVM\"},source_volume)", "description": null, "error": null, "hide": 0, "includeAll": true, "label": null, "multi": true, - "name": "SourceVolume", + "name": "Volume", "options": [], "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\"}, source_volume)", - "refId": "StandardVariableQuery" + "qryType": 1, + "query": "label_values(snapmirror_labels{source_cluster=~\"$Cluster\", source_vserver=~\"$SVM\"},source_volume)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 2, - "regex": "", + "regex": "^[a-zA-Z0-9~@#$^*()_+=[\\]{}|\\\\.?: -]*$", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", @@ -5036,7 +2045,7 @@ { "allValue": "1000000000000", "current": { - "selected": true, + "selected": false, "text": "5", "value": "5" }, @@ -5128,58 +2137,6 @@ "queryValue": "", "skipUrlSync": false, "type": "custom" - }, - { - "allValue": ".*", - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\", destination_vserver=~\"$DestinationSVM\"}, source_cg_name)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "SourceConsistencyGroup", - "options": [], - "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\", destination_vserver=~\"$DestinationSVM\"}, source_cg_name)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\", destination_vserver=~\"$DestinationSVM\"}, destination_cg_name)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "DestinationConsistencyGroup", - "options": [], - "query": { - "query": "label_values(snapmirror_labels{source_cluster=~\"$SourceCluster\",source_vserver=~\"$SourceSVM\", destination_vserver=~\"$DestinationSVM\"}, destination_cg_name)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false } ] }, @@ -5212,7 +2169,7 @@ ] }, "timezone": "", - "title": "ONTAP: SnapMirror", + "title": "ONTAP: SnapMirror Sources", "uid": "cdot-snapmirror", - "version": 6 + "version": 7 } diff --git a/grafana/dashboards/cmode/snapmirror_destinations.json b/grafana/dashboards/cmode/snapmirror_destinations.json index 3ed00e7bc..d3799022c 100644 --- a/grafana/dashboards/cmode/snapmirror_destinations.json +++ b/grafana/dashboards/cmode/snapmirror_destinations.json @@ -185,7 +185,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_volume=~\".*$Volume.*\",destination_vserver=~\"$SVM\",healthy=\"false\",relationship_id!=\"\"}) or vector (0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_volume=~\".*$Volume.*\",destination_vserver=~\"$SVM\",destination_location=~\".*$ConsistencyGroup\",healthy=\"false\",relationship_id!=\"\"}) or vector (0)", "format": "time_series", "hide": false, "instant": true, @@ -254,7 +254,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"extended_data_protection\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"extended_data_protection\",relationship_id!=\"\"}) or vector(0)", "instant": true, "interval": "", "legendFormat": "Asynchronous Mirror", @@ -264,7 +264,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"mirror_vault\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"mirror_vault\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -275,7 +275,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"vault\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"vault\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -286,7 +286,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"sync_mirror_strict\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"sync_mirror_strict\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -297,7 +297,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"sync_mirror\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"sync_mirror\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -308,7 +308,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"automated_failover\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"automated_failover\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -319,7 +319,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",derived_relationship_type=\"automated_failover_duplex\",relationship_id!=\"\"}) or vector(0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_vserver=~\"$SVM\",destination_volume=~\".*$Volume.*\",destination_location=~\".*$ConsistencyGroup\",derived_relationship_type=\"automated_failover_duplex\",relationship_id!=\"\"}) or vector(0)", "hide": false, "instant": true, "interval": "", @@ -385,7 +385,7 @@ "datasource": "${DS_PROMETHEUS}", "editorMode": "code", "exemplar": false, - "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_volume=~\".*$Volume.*\",destination_vserver=~\"$SVM\",healthy=\"true\",relationship_id!=\"\"}) or vector (0)", + "expr": "count(snapmirror_labels{datacenter=~\"$Datacenter\",cluster=~\"$Cluster\",destination_volume=~\".*$Volume.*\",destination_vserver=~\"$SVM\",healthy=\"true\",destination_location=~\".*$ConsistencyGroup\",relationship_id!=\"\"}) or vector (0)", "format": "time_series", "hide": false, "instant": true, diff --git a/integration/test/dashboard_test.go b/integration/test/dashboard_test.go index 634651fad..bb3deec5d 100644 --- a/integration/test/dashboard_test.go +++ b/integration/test/dashboard_test.go @@ -75,7 +75,7 @@ func TestCModeDashboardCount(t *testing.T) { "ONTAP: NFS Clients", "ONTAP: Node", "ONTAP: Shelf", - "ONTAP: SnapMirror", + "ONTAP: SnapMirror Sources", "ONTAP: SVM", "ONTAP: Volume", "ONTAP: MetroCluster",