Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
# Change Log
## [Releases](https://github.com/NetApp/harvest/releases)

## 25.05.1 / 2025-06-10 Release
:pushpin: This release is identical to 25.05.0, if you are using the Cisco collector, we recommend upgrading to version 25.05.1 to reduce cardinality issues caused by storing a switch's uptime as a label instead of a metric value.

This release also includes:

1. Introduced a new `ONTAP: Switch` dashboard that provides detailed information about switches connected to ONTAP.
2. Enhanced functionality to parse the Cisco version when the RCF is missing.
3. Updated to Golang 1.23.4, which includes several security vulnerability fixes (CVEs).
4. MetroCluster internal SVMs and volumes are no longer exported when they are offline.

---

## 25.05.0 / 2025-05-19 Release
pushpin: Highlights of this major release include:
## :star: New Features
Expand Down
2 changes: 1 addition & 1 deletion cmd/collectors/cisco/rest/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ func (c *Client) callWithAuthRetry(command string, callType apiType) (gjson.Resu
// }
// }
code := result.Get("output.code")
if code.Exists() {
if code.Exists() && code.Int() != 200 {
errMsg := result.Get("output.msg").String()
if errMsg == "" {
errMsg = "unknown error"
Expand Down
13 changes: 7 additions & 6 deletions cmd/tools/grafana/dashboard_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1007,16 +1007,17 @@ func ensureLookBack(text string) string {

func TestOnlyHighlightsExpanded(t *testing.T) {
exceptions := map[string]int{
"cmode/shelf.json": 2,
"cmode/fsa.json": 2,
"cmode/auditlog.json": 2,
"cmode/flexcache.json": 2,
"cmode/workload.json": 2,
"cmode/smb.json": 2,
"cmode/fsa.json": 2,
"cmode/health.json": 2,
"cmode/nfsTroubleshooting.json": 3,
"cmode/power.json": 2,
"cmode/shelf.json": 2,
"cmode/smb.json": 2,
"cmode/switch.json": 2,
"cmode/workload.json": 2,
"storagegrid/fabricpool.json": 2,
"cmode/auditlog.json": 2,
"cmode/nfsTroubleshooting.json": 3,
}
// count the number of expanded sections in the dashboard and ensure num expanded = 1
VisitDashboards(
Expand Down
2 changes: 1 addition & 1 deletion docs/ontap-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ These can be generated on demand by running `bin/harvest grafana metrics`. See
- More information about ONTAP REST performance counters can be found [here](https://docs.netapp.com/us-en/ontap-pcmap-9121/index.html).

```
Creation Date : 2025-May-29
Creation Date : 2025-Jun-09
ONTAP Version: 9.16.1
```
## Understanding the structure
Expand Down
379 changes: 185 additions & 194 deletions docs/prepare-cdot-clusters.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/resources/power-algorithm.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Gathering power metrics requires a cluster with:

* ONTAP versions 9.6+
* [REST enabled](../prepare-cdot-clusters.md), even when using the ZAPI collector. After granting REST permissions, restart Harvest.
* [REST enabled](../prepare-cdot-clusters.md#rest-least-privilege-role), even when using the ZAPI collector. After granting REST permissions, restart Harvest.

REST is required because it is the only way to collect chassis field-replaceable-unit (FRU) information via the
REST API `/api/private/cli/system/chassis/fru`.
Expand Down
44 changes: 31 additions & 13 deletions grafana/dashboards/cmode/network.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
"gnetId": null,
"graphTooltip": 1,
"id": null,
"iteration": 1723188904112,
"iteration": 1749475358867,
"links": [
{
"asDropdown": true,
Expand Down Expand Up @@ -564,7 +564,7 @@
"panels": [
{
"datasource": "${DS_PROMETHEUS}",
"description": "Ethernet port details.",
"description": "Displays a collection of ports (physical, VLAN and LAG) for an entire cluster.",
"fieldConfig": {
"defaults": {
"custom": {
Expand Down Expand Up @@ -762,6 +762,18 @@
"value": "Mbits"
}
]
},
{
"matcher": {
"id": "byName",
"options": "MTU"
},
"properties": [
{
"id": "unit",
"value": "string"
}
]
}
]
},
Expand Down Expand Up @@ -893,7 +905,7 @@
},
{
"datasource": "${DS_PROMETHEUS}",
"description": "NIC port details.",
"description": "This table tracks hardware network traffic performance and errors for all supported network interface cards (NIC), such as Intel Niantic, Qlogic, and CNA.",
"fieldConfig": {
"defaults": {
"custom": {
Expand Down Expand Up @@ -1614,7 +1626,7 @@
"exemplar": false,
"expr": "nic_util_percent{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\nand\n topk(\n $TopResources,\n avg_over_time(\n nic_util_percent{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}[3h] @ end()\n )\n )",
"interval": "",
"legendFormat": "{{node}} {{nic}}",
"legendFormat": "{{node}} - {{nic}}",
"refId": "A"
}
],
Expand Down Expand Up @@ -1703,15 +1715,17 @@
"pluginVersion": "8.1.8",
"targets": [
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_tx_total_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "TOTAL",
"legendFormat": "TOTAL - {{cluster}}",
"refId": "A"
},
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_tx_hw_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "HW",
"legendFormat": "HW - {{cluster}}",
"refId": "D"
}
],
Expand Down Expand Up @@ -1800,27 +1814,31 @@
"pluginVersion": "8.1.8",
"targets": [
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_rx_total_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "TOTAL",
"legendFormat": "TOTAL- {{cluster}}",
"refId": "A"
},
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_rx_alignment_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "ALIGNMENT",
"legendFormat": "ALIGNMENT- {{cluster}}",
"refId": "B"
},
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_rx_crc_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "CRC",
"legendFormat": "CRC- {{cluster}}",
"refId": "C"
},
{
"exemplar": false,
"expr": "sum by (cluster) (\n nic_rx_length_errors{cluster=~\"$Cluster\",datacenter=~\"$Datacenter\",nic=~\"$Eth\",node=~\"$Node\"}\n)",
"interval": "",
"legendFormat": "LENGTH",
"legendFormat": "LENGTH- {{cluster}}",
"refId": "D"
}
],
Expand Down Expand Up @@ -2145,8 +2163,8 @@
"Value #F": 8,
"cluster": 1,
"datacenter": 0,
"nic": 2,
"node": 3
"nic": 3,
"node": 2
},
"renameByName": {
"Value #A": "",
Expand Down Expand Up @@ -5179,5 +5197,5 @@
"timezone": "",
"title": "ONTAP: Network",
"uid": "cdot-network",
"version": 12
"version": 13
}
Loading
Loading