GeezerVison is showing github.com — fix(go.d/powerstore): decode rolled-up performance and space metrics by ilyam8 · Pull Request #24448 · netdata/netdata
Conversation
ilyam8
commented
Oct 26, 2026
•
edited by coderabbitai
Bot
Loading
Uh oh!
There was an error while loading. Please reload this page.
Summary
Fixes #24447.
PowerStore's Five_Mins and One_Day responses use rolled-up field names, but the collector decoded raw-sample names. This silently produced zero performance values and omitted capacity values while latency continued to work.
- Decode
avg_* IOPS, bandwidth and Ethernet rates, and last_* capacity and efficiency values.
- Use peak appliance CPU utilization and convert its ratio to a percentage.
- Decode averaged node logins as floating-point values and preserve fractions in chart output.
- Replace incorrect fixtures, validate request intervals, and compare actual metric values. Keep the valid unprefixed wear and replication fields.
Test Plan
- Reproduced the failure with corrected fixtures against the original decoder; the same regression passes with the fix.
- From
src/go: go test -count=1 ./plugin/go.d/collector/powerstore/... and go vet ./plugin/go.d/collector/powerstore/....
- Coverage includes all affected metric groups, distinct CPU average/maximum values, fractional/integer/zero/null/missing logins, chart schema/coverage, and metadata correspondence.
- Integration catalog generation, description validation, and 77 description/metadata/health tests passed; inspected the generated PowerStore page in isolation.
- Six alternating decoder benchmark runs showed unchanged allocation counts. Fixtures are synthetic and checked against Dell's source; no physical-array validation was performed.
Additional Information
Field definitions and CPU scaling evidence are linked in testdata/README.md. Public chart identities, dimensions, labels, units and request intervals are preserved. Chart titles and authoritative metadata.yaml now describe peak CPU, averaged logins and collection intervals.
Configuration/schema, stock configuration and alerts need no changes because options, defaults and alert-facing identities/units are unchanged. Generated integration pages follow the normal post-merge integrations-regen PR; they are not included here.
For users: How does this change affect me?
PowerStore performance, Ethernet and capacity charts display the values returned by the array instead of incorrect zeros or missing measurements. CPU displays the interval peak as a percentage, and average login counts retain fractional values. No configuration change is required.
Summary by CodeRabbit
- Bug Fixes
- Updated PowerStore monitoring to report five-minute average performance metrics, interval-peak appliance CPU utilization, and average node logins.
- Corrected space metrics to reflect the latest interval and adjusted the displayed chart titles.
- Added support for fractional login values.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
coderabbitai
Bot
commented
Oct 26, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
|

No actionable comments were generated in the recent review.
Recent review info
-
Run configuration
-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: defaults
- Review profile: CHILL
- Plan: Advanced
- Run ID:
09342059-e794-4baf-93e5-1281433c1bfc
Commits
-
Reviewing files that changed from the base of the PR and between 29ab618 and fda7c66.
Files selected for processing: 20
-
src/go/plugin/go.d/collector/powerstore/charts.yaml
src/go/plugin/go.d/collector/powerstore/client/types.go
src/go/plugin/go.d/collector/powerstore/collect_appliance.go
src/go/plugin/go.d/collector/powerstore/collect_filesystem.go
src/go/plugin/go.d/collector/powerstore/collect_node.go
src/go/plugin/go.d/collector/powerstore/collect_ports.go
src/go/plugin/go.d/collector/powerstore/collect_volume.go
src/go/plugin/go.d/collector/powerstore/collector_test.go
src/go/plugin/go.d/collector/powerstore/metadata.yaml
src/go/plugin/go.d/collector/powerstore/metrics.go
src/go/plugin/go.d/collector/powerstore/testdata/README.md
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_appliance.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_eth_port.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_fc_port.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_filesystem.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_node.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_perf_volume.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_space_appliance.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_space_cluster.json
src/go/plugin/go.d/collector/powerstore/testdata/metrics_space_volume.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
Walkthrough
-
PowerStore response decoding and collection now use average performance fields, last-value space fields, peak CPU utilization, and floating-point average logins. Tests and fixtures cover the updated response fields and collected metric values.
Changes: PowerStore rollup metrics
| Layer / File(s) |
Summary |
Map rollup fields in response types and fixtures src/go/plugin/go.d/collector/powerstore/client/types.go, src/go/plugin/go.d/collector/powerstore/testdata/* |
Response types and fixtures use avg_ performance fields, last_ space fields, peak CPU utilization, and floating-point average logins. |
Collect rollup values and describe metrics src/go/plugin/go.d/collector/powerstore/collect_*.go, src/go/plugin/go.d/collector/powerstore/metrics.go, src/go/plugin/go.d/collector/powerstore/charts.yaml, src/go/plugin/go.d/collector/powerstore/metadata.yaml |
Collectors observe average performance values, scale peak CPU utilization by 100, and emit average logins when present. Chart titles and metric descriptions reflect the updated values and intervals. |
Validate decoding and collection src/go/plugin/go.d/collector/powerstore/collector_test.go |
Tests check collected values, login cases, requested intervals, chart metadata, and JSON decoding. |
Priority: Normal
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Bug fix · Severity of issue fixed: Medium
Possibly related PRs
- netdata/netdata#24326: It updates PowerStore metadata and generates integration documentation tied to metadata changes.
Suggested labels: area/collectors, collectors/go.d, area/go, area/metadata, area/docs
Suggested reviewers: ktsaou
Merge Risk: Minimal · up to fda7c
-
No actionable merge-blocking issue is identified. The collector changes are mergeable after normal checks; live-array behavior remains unvalidated.
Pre-merge checks: 4 · 1
-
Failed checks: 1 warning
| Check name |
Status |
Explanation |
Resolution |
| Docstring Coverage |
 |
Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 8 files. (12 skipped: … |
Write docstrings for the functions missing them to satisfy the coverage threshold. |
Passed checks: 4 passed
-
| Check name |
Status |
Explanation |
| Description Check |
 |
Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check |
 |
The title clearly and concisely summarizes the main change: updating the PowerStore collector to decode rolled-up performance and space metrics. |
| Linked Issues check |
 |
Issue #24447 coding requirements are implemented. client/types.go maps performance and Ethernet fields to avg_*, space fields to last_*, uses max_io_workload_cpu_utilization, and decodes `avg_… |
| Out of Scope Changes check |
 |
The changes remain within issue #24447. Fixture updates, request-interval validation, exact metric assertions, login edge-case tests, chart coverage checks, metadata and chart-title updates, and fixtu… |
Full details: Linked Issues check
-
Explanation
Issue #24447 coding requirements are implemented. client/types.go maps performance and Ethernet fields to avg_*, space fields to last_*, uses max_io_workload_cpu_utilization, and decodes avg_current_logins as *float64. Collection code uses the new fields and scales peak CPU by 100. Updated fixtures and tests verify performance, space, Ethernet, CPU, fractional logins, intervals, and preserved wear and replication metrics.
Full details: Out of Scope Changes check
-
Explanation
The changes remain within issue #24447. Fixture updates, request-interval validation, exact metric assertions, login edge-case tests, chart coverage checks, metadata and chart-title updates, and fixture documentation directly support the decoding correction and its published behavior. No unrelated product or configuration changes are present.
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 8 files. (12 skipped: 12 unsupported.)
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
-
Comment @coderabbitai help to get the list of available commands.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Reviewers
Ancairon
Awaiting requested review from Ancairon
Ancairon is a code owner
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|