@cryptotaxi247 / netdata-1 / commits / 007cb6260

Regenerate integrations docs (#21970)

Co-authored-by: ilyam8 <22274335+ilyam8@users.noreply.github.com>

Netdata bot committed Mar 18, 2026 at 23:32 UTC 007cb62605f0580b8f764ca703c8f38b1d3855d8
20 files changed +1064 -15
src/collectors/COLLECTORS.md
+2
@@ -481,6 +481,8 @@ Need a dedicated integration? [Submit a feature request](https://github.com/netd
481 | [BTRFS](https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/integrations/btrfs.md) | This integration provides usage and error statistics from the BTRFS filesystem. |
482 | [Ceph](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ceph/integrations/ceph.md) | This collector monitors the overall health status and performance of your Ceph clusters. |
483 | [Dell EMC ScaleIO](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/scaleio/integrations/dell_emc_scaleio.md) | This collector monitors ScaleIO (VxFlex OS) instances via VxFlex OS Gateway API. |
484 +| [Dell PowerStore](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powerstore/integrations/dell_powerstore.md) | This collector monitors Dell PowerStore storage arrays via the PowerStore REST API. |
485 +| [Dell PowerVault ME4/ME5](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powervault/integrations/dell_powervault_me4-me5.md) | This collector monitors Dell PowerVault ME4 and ME5 storage arrays via the Management Controller Interface (MCI) REST API. |
486 | [devstat](https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/integrations/devstat.md) | Collect information per hard disk available on host. |
487 | [Disk space](https://github.com/netdata/netdata/blob/master/src/collectors/diskspace.plugin/integrations/disk_space.md) | Monitor Disk space metrics for proficient storage management. |
488 | [Disk Statistics](https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/integrations/disk_statistics.md) | Detailed statistics for each of your system's disk devices and partitions. |
src/collectors/ebpf.plugin/integrations/ebpf_cachestat.md
+1 -1
@@ -156,7 +156,7 @@ All options are defined inside section `[global]`.
156
157 | Option | Description | Default | Required |
158 |:-----|:------------|:--------|:---------:|
159 -| update every | Data collection frequency. | 5 | no |
159 +| update every | Data collection frequency. | 10 | no |
160 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
161 | apps | Enable or disable integration with apps.plugin | no | no |
162 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_dcstat.md
+1 -1
@@ -154,7 +154,7 @@ All options are defined inside section `[global]`.
154
155 | Option | Description | Default | Required |
156 |:-----|:------------|:--------|:---------:|
157 -| update every | Data collection frequency. | 5 | no |
157 +| update every | Data collection frequency. | 10 | no |
158 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
159 | apps | Enable or disable integration with apps.plugin | no | no |
160 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_disk.md
+1 -1
@@ -115,7 +115,7 @@ All options are defined inside section `[global]`.
115
116 | Option | Description | Default | Required |
117 |:-----|:------------|:--------|:---------:|
118 -| update every | Data collection frequency. | 5 | no |
118 +| update every | Data collection frequency. | 10 | no |
119 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
120 | lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |
121
src/collectors/ebpf.plugin/integrations/ebpf_filedescriptor.md
+1 -1
@@ -154,7 +154,7 @@ All options are defined inside section `[global]`.
154
155 | Option | Description | Default | Required |
156 |:-----|:------------|:--------|:---------:|
157 -| update every | Data collection frequency. | 5 | no |
157 +| update every | Data collection frequency. | 10 | no |
158 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
159 | apps | Enable or disable integration with apps.plugin | no | no |
160 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_filesystem.md
+1 -1
@@ -136,7 +136,7 @@ This configuration file have two different sections. The `[global]` overwrites d
136
137 | Option | Description | Default | Required |
138 |:-----|:------------|:--------|:---------:|
139 -| update every | Data collection frequency. | 5 | no |
139 +| update every | Data collection frequency. | 10 | no |
140 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
141 | lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |
142 | btrfsdist | Enable or disable latency monitoring for functions associated with btrfs filesystem. | yes | no |
src/collectors/ebpf.plugin/integrations/ebpf_hardirq.md
+1 -1
@@ -115,7 +115,7 @@ All options are defined inside section `[global]`.
115
116 | Option | Description | Default | Required |
117 |:-----|:------------|:--------|:---------:|
118 -| update every | Data collection frequency. | 5 | no |
118 +| update every | Data collection frequency. | 10 | no |
119 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
120 | lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |
121
src/collectors/ebpf.plugin/integrations/ebpf_mdflush.md
+1 -1
@@ -110,7 +110,7 @@ All options are defined inside section `[global]`.
110
111 | Option | Description | Default | Required |
112 |:-----|:------------|:--------|:---------:|
113 -| update every | Data collection frequency. | 5 | no |
113 +| update every | Data collection frequency. | 10 | no |
114 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
115 | lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |
116
src/collectors/ebpf.plugin/integrations/ebpf_mount.md
+1 -1
@@ -116,7 +116,7 @@ All options are defined inside section `[global]`.
116
117 | Option | Description | Default | Required |
118 |:-----|:------------|:--------|:---------:|
119 -| update every | Data collection frequency. | 5 | no |
119 +| update every | Data collection frequency. | 10 | no |
120 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
121 | ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |
122 | ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |
src/collectors/ebpf.plugin/integrations/ebpf_processes.md
+1 -1
@@ -164,7 +164,7 @@ All options are defined inside section `[global]`.
164
165 | Option | Description | Default | Required |
166 |:-----|:------------|:--------|:---------:|
167 -| update every | Data collection frequency. | 5 | no |
167 +| update every | Data collection frequency. | 10 | no |
168 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
169 | apps | Enable or disable integration with apps.plugin | no | no |
170 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_shm.md
+1 -1
@@ -158,7 +158,7 @@ This configuration file have two different sections. The `[global]` overwrites a
158
159 | Option | Description | Default | Required |
160 |:-----|:------------|:--------|:---------:|
161 -| update every | Data collection frequency. | 5 | no |
161 +| update every | Data collection frequency. | 10 | no |
162 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
163 | apps | Enable or disable integration with apps.plugin | no | no |
164 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_socket.md
+1 -1
@@ -173,7 +173,7 @@ All options are defined inside section `[global]`. Options inside `network conne
173
174 | Option | Description | Default | Required |
175 |:-----|:------------|:--------|:---------:|
176 -| update every | Data collection frequency. | 5 | no |
176 +| update every | Data collection frequency. | 10 | no |
177 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
178 | apps | Enable or disable integration with apps.plugin | no | no |
179 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_softirq.md
+1 -1
@@ -115,7 +115,7 @@ All options are defined inside section `[global]`.
115
116 | Option | Description | Default | Required |
117 |:-----|:------------|:--------|:---------:|
118 -| update every | Data collection frequency. | 5 | no |
118 +| update every | Data collection frequency. | 10 | no |
119 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
120 | lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |
121
src/collectors/ebpf.plugin/integrations/ebpf_swap.md
+1 -1
@@ -147,7 +147,7 @@ All options are defined inside section `[global]`.
147
148 | Option | Description | Default | Required |
149 |:-----|:------------|:--------|:---------:|
150 -| update every | Data collection frequency. | 5 | no |
150 +| update every | Data collection frequency. | 10 | no |
151 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
152 | apps | Enable or disable integration with apps.plugin | no | no |
153 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_sync.md
+1 -1
@@ -123,7 +123,7 @@ This configuration file have two different sections. The `[global]` overwrites a
123
124 | Option | Description | Default | Required |
125 |:-----|:------------|:--------|:---------:|
126 -| update every | Data collection frequency. | 5 | no |
126 +| update every | Data collection frequency. | 10 | no |
127 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
128 | apps | Enable or disable integration with apps.plugin | no | no |
129 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/collectors/ebpf.plugin/integrations/ebpf_vfs.md
+1 -1
@@ -189,7 +189,7 @@ All options are defined inside section `[global]`.
189
190 | Option | Description | Default | Required |
191 |:-----|:------------|:--------|:---------:|
192 -| update every | Data collection frequency. | 5 | no |
192 +| update every | Data collection frequency. | 10 | no |
193 | ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |
194 | apps | Enable or disable integration with apps.plugin | no | no |
195 | cgroups | Enable or disable integration with cgroup.plugin | no | no |
src/go/plugin/go.d/collector/powerstore/README.md new
+1
@@ -0,0 +1 @@
1 +integrations/dell_powerstore.md
\ No newline at end of file
src/go/plugin/go.d/collector/powerstore/integrations/dell_powerstore.md new
+533
@@ -0,0 +1,533 @@
1 +<!--startmeta
2 +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerstore/README.md"
3 +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerstore/metadata.yaml"
4 +sidebar_label: "Dell PowerStore"
5 +learn_status: "Published"
6 +learn_rel_path: "Collecting Metrics/Storage and Filesystems"
7 +keywords: ['powerstore', 'dell', 'storage', 'san', 'nas', 'block', 'file']
8 +message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE"
9 +endmeta-->
10 +
11 +# Dell PowerStore
12 +
13 +
14 +<img src="https://netdata.cloud/img/dell.svg" width="150"/>
15 +
16 +
17 +Plugin: go.d.plugin
18 +Module: powerstore
19 +
20 +<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" />
21 +
22 +## Overview
23 +
24 +This collector monitors Dell PowerStore storage arrays via the PowerStore REST API.
25 +
26 +It collects metrics for the following components:
27 +
28 +- **Cluster Capacity** — physical and logical space usage, efficiency ratios (data reduction, snapshot savings, thin provisioning)
29 +- **Appliance Performance** — IOPS, bandwidth, latency, CPU utilization, and space usage per appliance
30 +- **Volume Performance** — IOPS, bandwidth, latency, provisioned/used space, and thin savings per volume
31 +- **Node Performance** — IOPS, bandwidth, latency, and current login count per node
32 +- **FC Port Performance** — IOPS, bandwidth, latency, and link status per Fibre Channel port
33 +- **Ethernet Port Performance** — bytes/packets rate, error rates, and link status per Ethernet port
34 +- **File System Performance** — IOPS, bandwidth, and latency per file system
35 +- **Hardware Health** — component-level status counts (fans, PSUs, drives, batteries, nodes) by health state (OK, degraded, failed, unknown)
36 +- **Active Alerts** — count of currently active alerts by severity (critical, major, minor, info)
37 +- **Drive Wear** — SSD endurance remaining percentage per drive
38 +- **NAS Server Status** — operational status counts (started, stopped, degraded, unknown)
39 +- **Replication** — data remaining, data transferred, and transfer rate across appliances
40 +
41 +
42 +The collector uses the PowerStore REST API (`/api/rest/*` endpoints) to fetch data.
43 +Authentication uses HTTP Basic Auth — the collector calls `/api/rest/login_session` to obtain
44 +a session cookie and a `DELL-EMC-TOKEN` CSRF token, which are reused for subsequent requests.
45 +Sessions are automatically refreshed on HTTP 403 (token expiry).
46 +
47 +Discovery runs on startup and then every 5 collection cycles to refresh the hardware inventory,
48 +appliances, volumes, nodes, ports, file systems, and NAS servers.
49 +
50 +Performance and space metrics are collected via the `/api/rest/metrics/generate` endpoint using
51 +the PowerStore metrics generation API. The collector requests `Five_Mins` interval data for
52 +performance metrics and `One_Day` for cluster space metrics, taking the most recent data point.
53 +
54 +Discovery API calls use pagination (2000 items per page, HTTP 206 for partial results).
55 +Performance metrics for different entities are collected concurrently (up to 10 parallel API calls).
56 +
57 +
58 +This collector is supported on all platforms.
59 +
60 +This collector supports collecting metrics from multiple instances of this integration, including remote instances.
61 +
62 +A user account on the PowerStore array is required. Any role with API read access
63 +is sufficient (e.g., the built-in `Operator` role). The account does not need write permissions.
64 +
65 +
66 +### Default Behavior
67 +
68 +#### Auto-Detection
69 +
70 +The collector does not auto-detect PowerStore arrays. You must configure the management IP address,
71 +username, and password explicitly.
72 +
73 +
74 +#### Limits
75 +
76 +The collector makes multiple API calls per collection cycle: discovery calls (once every 5 cycles)
77 +plus per-entity metrics calls (appliances, volumes, nodes, ports, file systems, drives, and
78 +replication — one API call per entity). With many volumes or ports, the number of API calls
79 +scales linearly. The default 30-second collection interval provides ample headroom.
80 +
81 +
82 +#### Performance Impact
83 +
84 +The PowerStore REST API is lightweight and read-only. The collector uses the metrics generation
85 +API which returns pre-aggregated data, imposing minimal load on the array. Session tokens and
86 +CSRF tokens are cached across collection cycles.
87 +
88 +
89 +## Metrics
90 +
91 +Metrics grouped by *scope*.
92 +
93 +The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
94 +
95 +
96 +
97 +### Per Dell PowerStore instance
98 +
99 +These metrics refer to the entire monitored PowerStore cluster.
100 +
101 +This scope has no labels.
102 +
103 +Metrics:
104 +
105 +| Metric | Dimensions | Unit |
106 +|:------|:----------|:----|
107 +| powerstore.cluster_space_usage | used, total | bytes |
108 +| powerstore.cluster_space_logical | provisioned, used, data_physical, shared | bytes |
109 +| powerstore.cluster_space_efficiency | efficiency, data_reduction, snapshot_savings, thin_savings | ratio |
110 +| powerstore.hardware_health_fan | ok, degraded, failed, unknown | fans |
111 +| powerstore.hardware_health_psu | ok, degraded, failed, unknown | PSUs |
112 +| powerstore.hardware_health_drive | ok, degraded, failed, unknown | drives |
113 +| powerstore.hardware_health_battery | ok, degraded, failed, unknown | batteries |
114 +| powerstore.hardware_health_node | ok, degraded, failed, unknown | nodes |
115 +| powerstore.alerts_active | critical, major, minor, info | alerts |
116 +| powerstore.nas_server_status | started, stopped, degraded, unknown | servers |
117 +| powerstore.copy_data | remaining, transferred | bytes |
118 +| powerstore.copy_transfer_rate | rate | bytes/s |
119 +
120 +### Per appliance
121 +
122 +These metrics refer to individual PowerStore appliances.
123 +
124 +Labels:
125 +
126 +| Label | Description |
127 +|:-----------|:----------------|
128 +| appliance | Appliance name (e.g., `Appliance-WX-D8031`). |
129 +
130 +Metrics:
131 +
132 +| Metric | Dimensions | Unit |
133 +|:------|:----------|:----|
134 +| powerstore.appliance_iops | read, write | ops/s |
135 +| powerstore.appliance_bandwidth | read, write | bytes/s |
136 +| powerstore.appliance_latency | read, write, avg | microseconds |
137 +| powerstore.appliance_cpu | utilization | percentage |
138 +| powerstore.appliance_space | used, total | bytes |
139 +| powerstore.appliance_space_logical | provisioned, used, data_physical, shared | bytes |
140 +| powerstore.appliance_space_efficiency | efficiency, data_reduction, snapshot_savings, thin_savings | ratio |
141 +
142 +### Per volume
143 +
144 +These metrics refer to individual PowerStore volumes. Volumes can be filtered using the `volume_selector` configuration option.
145 +
146 +Labels:
147 +
148 +| Label | Description |
149 +|:-----------|:----------------|
150 +| volume | Volume name (e.g., `prod-db-01`). |
151 +
152 +Metrics:
153 +
154 +| Metric | Dimensions | Unit |
155 +|:------|:----------|:----|
156 +| powerstore.volume_iops | read, write | ops/s |
157 +| powerstore.volume_bandwidth | read, write | bytes/s |
158 +| powerstore.volume_latency | read, write, avg | microseconds |
159 +| powerstore.volume_space | provisioned, used | bytes |
160 +| powerstore.volume_space_savings | thin_savings | ratio |
161 +
162 +### Per node
163 +
164 +These metrics refer to individual PowerStore nodes within an appliance.
165 +
166 +Labels:
167 +
168 +| Label | Description |
169 +|:-----------|:----------------|
170 +| node | Node name (e.g., `Appliance-WX-D8031-node-A`). |
171 +
172 +Metrics:
173 +
174 +| Metric | Dimensions | Unit |
175 +|:------|:----------|:----|
176 +| powerstore.node_iops | read, write | ops/s |
177 +| powerstore.node_bandwidth | read, write | bytes/s |
178 +| powerstore.node_latency | read, write, avg | microseconds |
179 +| powerstore.node_logins | logins | logins |
180 +
181 +### Per fc port
182 +
183 +These metrics refer to individual Fibre Channel ports used for host connectivity.
184 +
185 +Labels:
186 +
187 +| Label | Description |
188 +|:-----------|:----------------|
189 +| fc_port | FC port name (e.g., `Appliance-WX-D8031-node-A-Port-0`). |
190 +
191 +Metrics:
192 +
193 +| Metric | Dimensions | Unit |
194 +|:------|:----------|:----|
195 +| powerstore.fc_port_iops | read, write | ops/s |
196 +| powerstore.fc_port_bandwidth | read, write | bytes/s |
197 +| powerstore.fc_port_latency | read, write, avg | microseconds |
198 +| powerstore.fc_port_link_status | up | status |
199 +
200 +### Per ethernet port
201 +
202 +These metrics refer to individual Ethernet ports (management and iSCSI connectivity).
203 +
204 +Labels:
205 +
206 +| Label | Description |
207 +|:-----------|:----------------|
208 +| eth_port | Ethernet port name (e.g., `Appliance-WX-D8031-node-A-Port-eth0`). |
209 +
210 +Metrics:
211 +
212 +| Metric | Dimensions | Unit |
213 +|:------|:----------|:----|
214 +| powerstore.eth_port_bytes | received, sent | bytes/s |
215 +| powerstore.eth_port_packets | received, sent | packets/s |
216 +| powerstore.eth_port_errors | rx_crc, rx_no_buffer, tx_error | errors/s |
217 +| powerstore.eth_port_link_status | up | status |
218 +
219 +### Per file system
220 +
221 +These metrics refer to individual file systems (NFS/SMB shares).
222 +
223 +Labels:
224 +
225 +| Label | Description |
226 +|:-----------|:----------------|
227 +| filesystem | File system name (e.g., `nfs-share-01`). |
228 +
229 +Metrics:
230 +
231 +| Metric | Dimensions | Unit |
232 +|:------|:----------|:----|
233 +| powerstore.filesystem_iops | read, write | ops/s |
234 +| powerstore.filesystem_bandwidth | read, write | bytes/s |
235 +| powerstore.filesystem_latency | read, write, avg | microseconds |
236 +
237 +### Per drive
238 +
239 +These metrics refer to individual physical drives (SSDs).
240 +
241 +Labels:
242 +
243 +| Label | Description |
244 +|:-----------|:----------------|
245 +| drive | Drive name (e.g., `Drive_0_0_25`). |
246 +
247 +Metrics:
248 +
249 +| Metric | Dimensions | Unit |
250 +|:------|:----------|:----|
251 +| powerstore.drive_endurance | remaining | percentage |
252 +
253 +
254 +
255 +## Alerts
256 +
257 +There are no alerts configured by default for this integration.
258 +
259 +
260 +## Setup
261 +
262 +
263 +You can configure the **powerstore** collector in two ways:
264 +
265 +| Method | Best for | How to |
266 +|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
267 +| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes → Configure this node → Collectors → Jobs**, search for **powerstore**, then click **+** to add a job. |
268 +| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powerstore.conf` and add a job. |
269 +
270 +:::important
271 +
272 +UI configuration requires paid Netdata Cloud plan.
273 +
274 +:::
275 +
276 +
277 +### Prerequisites
278 +
279 +#### PowerStore API access
280 +
281 +1. A user account on the PowerStore array with at least read-only access.
282 + The built-in `Operator` role is sufficient.
283 +2. Network connectivity from the Netdata Agent to the PowerStore management IP (HTTPS, port 443).
284 +3. The PowerStore management REST API must be accessible (enabled by default).
285 +
286 +
287 +#### TLS certificate
288 +
289 +PowerStore arrays typically use self-signed TLS certificates. You will likely need to set
290 +`tls_skip_verify: yes` in the configuration, or provide the array's CA certificate via `tls_ca`.
291 +
292 +
293 +
294 +### Configuration
295 +
296 +#### Options
297 +
298 +The following options can be defined globally: update_every, autodetection_retry.
299 +
300 +
301 +<details open><summary>Config options</summary>
302 +
303 +
304 +
305 +| Group | Option | Description | Default | Required |
306 +|:------|:-----|:------------|:--------|:---------:|
307 +| **Collection** | update_every | Data collection interval (seconds). | 30 | no |
308 +| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |
309 +| **Target** | url | PowerStore management URL. | https://127.0.0.1 | yes |
310 +| | timeout | HTTP request timeout (seconds). | 30 | no |
311 +| **HTTP Auth** | username | Username for PowerStore API authentication. | | yes |
312 +| | password | Password for PowerStore API authentication. | | yes |
313 +| **Filtering** | volume_selector | Space-separated [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme) to filter which volumes to monitor. Use `*` for wildcards, `!` prefix to exclude. An empty value or `*` monitors all volumes. | * | no |
314 +| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure, but often needed for self-signed certs on storage arrays). | no | no |
315 +| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |
316 +| | tls_cert | Path to client TLS certificate (for mTLS). | | no |
317 +| | tls_key | Path to client TLS private key (for mTLS). | | no |
318 +| **Proxy** | proxy_url | HTTP proxy URL. | | no |
319 +| | proxy_username | Username for proxy Basic HTTP authentication. | | no |
320 +| | proxy_password | Password for proxy Basic HTTP authentication. | | no |
321 +| **Request** | headers | Additional HTTP headers (one per line as key: value). | | no |
322 +| | not_follow_redirects | Do not follow HTTP redirects. | no | no |
323 +| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |
324 +
325 +
326 +</details>
327 +
328 +
329 +#### via UI
330 +
331 +Configure the **powerstore** collector from the Netdata web interface:
332 +
333 +1. Go to **Nodes**.
334 +2. Select the node **where you want the powerstore data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.
335 +3. The **Collectors → Jobs** view opens by default.
336 +4. In the Search box, type _powerstore_ (or scroll the list) to locate the **powerstore** collector.
337 +5. Click the **+** next to the **powerstore** collector to add a new job.
338 +6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.
339 + - **Test** runs the job with the provided settings and shows whether data can be collected.
340 + - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.
341 +
342 +
343 +#### via File
344 +
345 +The configuration file name for this integration is `go.d/powerstore.conf`.
346 +
347 +The file format is YAML. Generally, the structure is:
348 +
349 +```yaml
350 +update_every: 1
351 +autodetection_retry: 0
352 +jobs:
353 + - name: some_name1
354 + - name: some_name2
355 +```
356 +You can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the
357 +Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).
358 +
359 +```bash
360 +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
361 +sudo ./edit-config go.d/powerstore.conf
362 +```
363 +
364 +##### Examples
365 +
366 +###### Basic
367 +
368 +A minimal configuration connecting to a PowerStore array with a self-signed certificate.
369 +
370 +<details open><summary>Config</summary>
371 +
372 +```yaml
373 +jobs:
374 + - name: ps-lab
375 + url: https://10.0.0.1
376 + username: monitor
377 + password: monitor123
378 + tls_skip_verify: yes
379 +
380 +```
381 +</details>
382 +
383 +###### With volume filtering
384 +
385 +Monitor only production volumes, excluding temporary and test volumes.
386 +
387 +<details open><summary>Config</summary>
388 +
389 +```yaml
390 +jobs:
391 + - name: ps-prod
392 + url: https://10.0.0.1
393 + username: monitor
394 + password: monitor123
395 + tls_skip_verify: yes
396 + volume_selector: "prod-* !*-temp !*-test"
397 +
398 +```
399 +</details>
400 +
401 +###### Multi-instance
402 +
403 +> **Note**: When you define multiple jobs, their names must be unique.
404 +
405 +Monitoring multiple PowerStore arrays.
406 +
407 +
408 +<details open><summary>Config</summary>
409 +
410 +```yaml
411 +jobs:
412 + - name: ps-site-a
413 + url: https://10.0.0.1
414 + username: monitor
415 + password: monitor123
416 + tls_skip_verify: yes
417 +
418 + - name: ps-site-b
419 + url: https://10.0.0.2
420 + username: monitor
421 + password: monitor456
422 + tls_skip_verify: yes
423 +
424 +```
425 +</details>
426 +
427 +
428 +
429 +## Troubleshooting
430 +
431 +### Debug Mode
432 +
433 +**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.
434 +
435 +To troubleshoot issues with the `powerstore` collector, run the `go.d.plugin` with the debug option enabled. The output
436 +should give you clues as to why the collector isn't working.
437 +
438 +- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on
439 + your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.
440 +
441 + ```bash
442 + cd /usr/libexec/netdata/plugins.d/
443 + ```
444 +
445 +- Switch to the `netdata` user.
446 +
447 + ```bash
448 + sudo -u netdata -s
449 + ```
450 +
451 +- Run the `go.d.plugin` to debug the collector:
452 +
453 + ```bash
454 + ./go.d.plugin -d -m powerstore
455 + ```
456 +
457 + To debug a specific job:
458 +
459 + ```bash
460 + ./go.d.plugin -d -m powerstore -j jobName
461 + ```
462 +
463 +### Getting Logs
464 +
465 +If you're encountering problems with the `powerstore` collector, follow these steps to retrieve logs and identify potential issues:
466 +
467 +- **Run the command** specific to your system (systemd, non-systemd, or Docker container).
468 +- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.
469 +
470 +#### System with systemd
471 +
472 +Use the following command to view logs generated since the last Netdata service restart:
473 +
474 +```bash
475 +journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep powerstore
476 +```
477 +
478 +#### System without systemd
479 +
480 +Locate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:
481 +
482 +```bash
483 +grep powerstore /var/log/netdata/collector.log
484 +```
485 +
486 +**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.
487 +
488 +#### Docker Container
489 +
490 +If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:
491 +
492 +```bash
493 +docker logs netdata 2>&1 | grep powerstore
494 +```
495 +
496 +### Authentication failure
497 +
498 +If the collector fails with `login failed`:
499 +
500 +1. Verify the username and password are correct.
501 +2. Ensure the user account has at least `Operator` role privileges.
502 +3. Check that the account is not locked or expired on the array.
503 +
504 +
505 +### Connection refused or timeout
506 +
507 +If the collector fails with connection errors:
508 +
509 +1. Verify the `url` points to the management IP of the PowerStore array.
510 +2. Ensure HTTPS port 443 is reachable from the Netdata Agent host.
511 +3. If using a firewall, allow outbound HTTPS to the array.
512 +4. Try increasing `timeout` if the array is on a high-latency link.
513 +
514 +
515 +### TLS certificate errors
516 +
517 +PowerStore arrays ship with self-signed certificates. If you see TLS errors:
518 +
519 +1. Set `tls_skip_verify: yes` in the configuration (most common solution).
520 +2. Alternatively, export the array's certificate and provide it via `tls_ca`.
521 +
522 +
523 +### HTTP 403 errors
524 +
525 +PowerStore returns HTTP 403 when the session/CSRF token is stale. The collector
526 +automatically re-authenticates on 403, but if you see persistent 403 errors:
527 +
528 +1. Verify the user account still has API access.
529 +2. Check if the array's security policy has been changed to restrict API access.
530 +3. Ensure no IP-based access controls are blocking the Netdata Agent host.
531 +
532 +
533 +
src/go/plugin/go.d/collector/powervault/README.md new
+1
@@ -0,0 +1 @@
1 +integrations/dell_powervault_me4-me5.md
\ No newline at end of file
src/go/plugin/go.d/collector/powervault/integrations/dell_powervault_me4-me5.md new
+512
@@ -0,0 +1,512 @@
1 +<!--startmeta
2 +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powervault/README.md"
3 +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powervault/metadata.yaml"
4 +sidebar_label: "Dell PowerVault ME4/ME5"
5 +learn_status: "Published"
6 +learn_rel_path: "Collecting Metrics/Storage and Filesystems"
7 +keywords: ['powervault', 'dell', 'storage', 'me4', 'me5', 'san', 'das']
8 +message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE"
9 +endmeta-->
10 +
11 +# Dell PowerVault ME4/ME5
12 +
13 +
14 +<img src="https://netdata.cloud/img/dell.svg" width="150"/>
15 +
16 +
17 +Plugin: go.d.plugin
18 +Module: powervault
19 +
20 +<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" />
21 +
22 +## Overview
23 +
24 +This collector monitors Dell PowerVault ME4 and ME5 storage arrays via the Management Controller Interface (MCI) REST API.
25 +
26 +It collects metrics for the following components:
27 +
28 +- **System Health** — overall array health status
29 +- **Hardware Health** — component-level status counts (controllers, drives, fans, PSUs, FRUs, ports) by health state (OK, degraded, fault, unknown)
30 +- **Controller Performance** — IOPS, throughput, CPU load, write cache usage, forwarded commands, cumulative I/O and cache hit/miss statistics
31 +- **Volume Performance** — IOPS, throughput, write cache usage, cumulative I/O, cache hit/miss statistics, storage tier distribution (SSD/SAS/SATA)
32 +- **Port I/O** — cumulative read/write operations and data transferred per host port
33 +- **SAS PHY Errors** — disparity errors, lost dwords, invalid dwords aggregated per port
34 +- **Pool Capacity** — total and available bytes per storage pool
35 +- **Drive Metrics** — temperature, power-on hours, SSD life remaining per drive
36 +- **Sensor Readings** — temperature, voltage, current, and charge capacity per sensor
37 +
38 +
39 +The collector uses the MCI REST API (`/api/show/*` and `/api/show/*-statistics` endpoints) to fetch data.
40 +Authentication uses a hash-based login (SHA-256 by default, MD5 for legacy firmware) — the collector
41 +hashes `username_password`, calls `/api/login/<hash>`, and uses the returned session key for subsequent requests.
42 +
43 +Discovery runs on startup and then every 10 collection cycles to refresh the hardware inventory.
44 +Performance statistics (controllers, volumes, ports, PHY) are collected via concurrent API calls
45 +each cycle. Hardware health, drive metrics, sensor readings, pool capacity, and system health
46 +are computed from the cached discovery data without additional API calls.
47 +
48 +
49 +This collector is supported on all platforms.
50 +
51 +This collector supports collecting metrics from multiple instances of this integration, including remote instances.
52 +
53 +A user account on the PowerVault management controller is required. Any role with API read access
54 +is sufficient (e.g., the built-in `monitor` role). The account does not need write permissions.
55 +
56 +
57 +### Default Behavior
58 +
59 +#### Auto-Detection
60 +
61 +The collector does not auto-detect PowerVault arrays. You must configure the management IP address,
62 +username, and password explicitly.
63 +
64 +
65 +#### Limits
66 +
67 +The collector makes approximately 14 API calls per collection cycle (10 for discovery when needed,
68 +4 for statistics). With the default 30-second collection interval, this is well within the MCI API's
69 +capabilities. Each API call returns all entities of that type in a single response.
70 +
71 +
72 +#### Performance Impact
73 +
74 +The MCI API is lightweight and read-only. The collector's impact on the storage array is negligible.
75 +Session keys are reused across collection cycles and automatically refreshed on expiry (HTTP 401).
76 +
77 +
78 +## Metrics
79 +
80 +Metrics grouped by *scope*.
81 +
82 +The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
83 +
84 +
85 +
86 +### Per Dell PowerVault ME4/ME5 instance
87 +
88 +These metrics refer to the entire monitored PowerVault array.
89 +
90 +This scope has no labels.
91 +
92 +Metrics:
93 +
94 +| Metric | Dimensions | Unit |
95 +|:------|:----------|:----|
96 +| powervault.system_health | health | status |
97 +| powervault.hw_health_controller | ok, degraded, fault, unknown | controllers |
98 +| powervault.hw_health_drive | ok, degraded, fault, unknown | drives |
99 +| powervault.hw_health_fan | ok, degraded, fault, unknown | fans |
100 +| powervault.hw_health_psu | ok, degraded, fault, unknown | PSUs |
101 +| powervault.hw_health_fru | ok, degraded, fault, unknown | FRUs |
102 +| powervault.hw_health_port | ok, degraded, fault, unknown | ports |
103 +
104 +### Per controller
105 +
106 +These metrics refer to individual RAID controllers (typically controller_a and controller_b in a dual-controller configuration).
107 +
108 +Labels:
109 +
110 +| Label | Description |
111 +|:-----------|:----------------|
112 +| controller | Controller durable ID (e.g., `controller_a`, `controller_b`). |
113 +
114 +Metrics:
115 +
116 +| Metric | Dimensions | Unit |
117 +|:------|:----------|:----|
118 +| powervault.controller_iops | iops | ops/s |
119 +| powervault.controller_throughput | throughput | bytes/s |
120 +| powervault.controller_cpu_load | cpu_load | percentage |
121 +| powervault.controller_write_cache_used | write_cache_used | percentage |
122 +| powervault.controller_forwarded_cmds | forwarded | commands |
123 +| powervault.controller_io | read, written | bytes |
124 +| powervault.controller_ops | read, write | ops |
125 +| powervault.controller_cache_hits | read_hits, read_misses, write_hits, write_misses | hits |
126 +
127 +### Per volume
128 +
129 +These metrics refer to individual storage volumes. Volumes can be filtered using the `volume_selector` configuration option.
130 +
131 +Labels:
132 +
133 +| Label | Description |
134 +|:-----------|:----------------|
135 +| volume | Volume name (e.g., `prod-db-01`). |
136 +
137 +Metrics:
138 +
139 +| Metric | Dimensions | Unit |
140 +|:------|:----------|:----|
141 +| powervault.volume_iops | iops | ops/s |
142 +| powervault.volume_throughput | throughput | bytes/s |
143 +| powervault.volume_write_cache_percent | write_cache | percentage |
144 +| powervault.volume_io | read, written | bytes |
145 +| powervault.volume_ops | read, write | ops |
146 +| powervault.volume_cache_hits | read_hits, read_misses, write_hits, write_misses | hits |
147 +| powervault.volume_tier_distribution | ssd, sas, sata | percentage |
148 +
149 +### Per port
150 +
151 +These metrics refer to individual host ports (SAS/FC ports used for host connectivity).
152 +
153 +Labels:
154 +
155 +| Label | Description |
156 +|:-----------|:----------------|
157 +| port | Port durable ID (e.g., `hostport_A0`). |
158 +
159 +Metrics:
160 +
161 +| Metric | Dimensions | Unit |
162 +|:------|:----------|:----|
163 +| powervault.port_io | read, written | bytes |
164 +| powervault.port_ops | read, write | ops |
165 +| powervault.phy_errors | disparity, lost_dwords, invalid_dwords | errors |
166 +
167 +### Per pool
168 +
169 +These metrics refer to individual storage pools (also known as disk groups or virtual pools).
170 +
171 +Labels:
172 +
173 +| Label | Description |
174 +|:-----------|:----------------|
175 +| pool | Pool name (e.g., `Pool-A`). |
176 +
177 +Metrics:
178 +
179 +| Metric | Dimensions | Unit |
180 +|:------|:----------|:----|
181 +| powervault.pool_capacity | total, available | bytes |
182 +
183 +### Per drive
184 +
185 +These metrics refer to individual physical drives (HDDs and SSDs).
186 +
187 +Labels:
188 +
189 +| Label | Description |
190 +|:-----------|:----------------|
191 +| drive | Drive location (e.g., `0.0` for enclosure 0, slot 0). |
192 +
193 +Metrics:
194 +
195 +| Metric | Dimensions | Unit |
196 +|:------|:----------|:----|
197 +| powervault.drive_temperature | temperature | Celsius |
198 +| powervault.drive_power_on_hours | power_on_hours | hours |
199 +| powervault.drive_ssd_life_left | life_left | percentage |
200 +
201 +### Per sensor
202 +
203 +These metrics refer to individual hardware sensors. Sensor types include temperature,
204 +voltage, current, and charge capacity (supercapacitor/battery backup units).
205 +
206 +
207 +Labels:
208 +
209 +| Label | Description |
210 +|:-----------|:----------------|
211 +| sensor | Sensor durable ID (e.g., `sensor_temp_ctrl_A.1`). |
212 +
213 +Metrics:
214 +
215 +| Metric | Dimensions | Unit |
216 +|:------|:----------|:----|
217 +| powervault.sensor_temperature | temperature | Celsius |
218 +| powervault.sensor_voltage | voltage | millivolts |
219 +| powervault.sensor_current | current | milliamps |
220 +| powervault.sensor_charge_capacity | charge_capacity | percentage |
221 +
222 +
223 +
224 +## Alerts
225 +
226 +There are no alerts configured by default for this integration.
227 +
228 +
229 +## Setup
230 +
231 +
232 +You can configure the **powervault** collector in two ways:
233 +
234 +| Method | Best for | How to |
235 +|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
236 +| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes → Configure this node → Collectors → Jobs**, search for **powervault**, then click **+** to add a job. |
237 +| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powervault.conf` and add a job. |
238 +
239 +:::important
240 +
241 +UI configuration requires paid Netdata Cloud plan.
242 +
243 +:::
244 +
245 +
246 +### Prerequisites
247 +
248 +#### PowerVault API access
249 +
250 +1. A user account on the PowerVault management controller with at least read-only access.
251 + The built-in `monitor` role is sufficient.
252 +2. Network connectivity from the Netdata Agent to the PowerVault management IP (HTTPS, port 443).
253 +3. The management controller must have its REST API enabled (enabled by default on ME4/ME5).
254 +
255 +
256 +#### TLS certificate
257 +
258 +PowerVault controllers typically use self-signed TLS certificates. You will likely need to set
259 +`tls_skip_verify: yes` in the configuration, or provide the controller's CA certificate via `tls_ca`.
260 +
261 +
262 +
263 +### Configuration
264 +
265 +#### Options
266 +
267 +The following options can be defined globally: update_every, autodetection_retry.
268 +
269 +
270 +<details open><summary>Config options</summary>
271 +
272 +
273 +
274 +| Group | Option | Description | Default | Required |
275 +|:------|:-----|:------------|:--------|:---------:|
276 +| **Collection** | update_every | Data collection interval (seconds). | 30 | no |
277 +| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |
278 +| **Target** | url | PowerVault management controller URL. | https://127.0.0.1 | yes |
279 +| | timeout | HTTP request timeout (seconds). | 30 | no |
280 +| **HTTP Auth** | username | Username for MCI API authentication. | | yes |
281 +| | password | Password for MCI API authentication. | | yes |
282 +| | auth_digest | Hash algorithm for authentication. Use `sha256` (default) or `md5` (legacy ME4 firmware < G280). | sha256 | no |
283 +| **Filtering** | volume_selector | Space-separated [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme) to filter which volumes to monitor. Use `*` for wildcards, `!` prefix to exclude. An empty value monitors all volumes. | | no |
284 +| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure, but often needed for self-signed certs on storage controllers). | no | no |
285 +| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |
286 +| | tls_cert | Path to client TLS certificate (for mTLS). | | no |
287 +| | tls_key | Path to client TLS private key (for mTLS). | | no |
288 +| **Proxy** | proxy_url | HTTP proxy URL. | | no |
289 +| | proxy_username | Username for proxy Basic HTTP authentication. | | no |
290 +| | proxy_password | Password for proxy Basic HTTP authentication. | | no |
291 +| **Request** | headers | Additional HTTP headers (one per line as key: value). | | no |
292 +| | not_follow_redirects | Do not follow HTTP redirects. | no | no |
293 +| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |
294 +
295 +
296 +</details>
297 +
298 +
299 +#### via UI
300 +
301 +Configure the **powervault** collector from the Netdata web interface:
302 +
303 +1. Go to **Nodes**.
304 +2. Select the node **where you want the powervault data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.
305 +3. The **Collectors → Jobs** view opens by default.
306 +4. In the Search box, type _powervault_ (or scroll the list) to locate the **powervault** collector.
307 +5. Click the **+** next to the **powervault** collector to add a new job.
308 +6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.
309 + - **Test** runs the job with the provided settings and shows whether data can be collected.
310 + - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.
311 +
312 +
313 +#### via File
314 +
315 +The configuration file name for this integration is `go.d/powervault.conf`.
316 +
317 +The file format is YAML. Generally, the structure is:
318 +
319 +```yaml
320 +update_every: 1
321 +autodetection_retry: 0
322 +jobs:
323 + - name: some_name1
324 + - name: some_name2
325 +```
326 +You can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the
327 +Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).
328 +
329 +```bash
330 +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
331 +sudo ./edit-config go.d/powervault.conf
332 +```
333 +
334 +##### Examples
335 +
336 +###### Basic
337 +
338 +A minimal configuration connecting to a PowerVault controller with a self-signed certificate.
339 +
340 +<details open><summary>Config</summary>
341 +
342 +```yaml
343 +jobs:
344 + - name: pv-lab
345 + url: https://10.0.0.1
346 + username: monitor
347 + password: monitor123
348 + tls_skip_verify: yes
349 +
350 +```
351 +</details>
352 +
353 +###### With volume filtering
354 +
355 +Monitor only production volumes, excluding temporary and test volumes.
356 +
357 +<details open><summary>Config</summary>
358 +
359 +```yaml
360 +jobs:
361 + - name: pv-prod
362 + url: https://10.0.0.1
363 + username: monitor
364 + password: monitor123
365 + tls_skip_verify: yes
366 + volume_selector: "prod-* !*-temp !*-test"
367 +
368 +```
369 +</details>
370 +
371 +###### Legacy ME4 with MD5 auth
372 +
373 +Connecting to an older ME4 controller that requires MD5 authentication (firmware before G280).
374 +
375 +<details open><summary>Config</summary>
376 +
377 +```yaml
378 +jobs:
379 + - name: pv-legacy
380 + url: https://10.0.0.2
381 + username: manage
382 + password: manage123
383 + auth_digest: md5
384 + tls_skip_verify: yes
385 +
386 +```
387 +</details>
388 +
389 +###### Multi-instance
390 +
391 +> **Note**: When you define multiple jobs, their names must be unique.
392 +
393 +Monitoring multiple PowerVault arrays.
394 +
395 +
396 +<details open><summary>Config</summary>
397 +
398 +```yaml
399 +jobs:
400 + - name: pv-site-a
401 + url: https://10.0.0.1
402 + username: monitor
403 + password: monitor123
404 + tls_skip_verify: yes
405 +
406 + - name: pv-site-b
407 + url: https://10.0.0.2
408 + username: monitor
409 + password: monitor456
410 + tls_skip_verify: yes
411 +
412 +```
413 +</details>
414 +
415 +
416 +
417 +## Troubleshooting
418 +
419 +### Debug Mode
420 +
421 +**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.
422 +
423 +To troubleshoot issues with the `powervault` collector, run the `go.d.plugin` with the debug option enabled. The output
424 +should give you clues as to why the collector isn't working.
425 +
426 +- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on
427 + your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.
428 +
429 + ```bash
430 + cd /usr/libexec/netdata/plugins.d/
431 + ```
432 +
433 +- Switch to the `netdata` user.
434 +
435 + ```bash
436 + sudo -u netdata -s
437 + ```
438 +
439 +- Run the `go.d.plugin` to debug the collector:
440 +
441 + ```bash
442 + ./go.d.plugin -d -m powervault
443 + ```
444 +
445 + To debug a specific job:
446 +
447 + ```bash
448 + ./go.d.plugin -d -m powervault -j jobName
449 + ```
450 +
451 +### Getting Logs
452 +
453 +If you're encountering problems with the `powervault` collector, follow these steps to retrieve logs and identify potential issues:
454 +
455 +- **Run the command** specific to your system (systemd, non-systemd, or Docker container).
456 +- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.
457 +
458 +#### System with systemd
459 +
460 +Use the following command to view logs generated since the last Netdata service restart:
461 +
462 +```bash
463 +journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep powervault
464 +```
465 +
466 +#### System without systemd
467 +
468 +Locate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:
469 +
470 +```bash
471 +grep powervault /var/log/netdata/collector.log
472 +```
473 +
474 +**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.
475 +
476 +#### Docker Container
477 +
478 +If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:
479 +
480 +```bash
481 +docker logs netdata 2>&1 | grep powervault
482 +```
483 +
484 +### Authentication failure
485 +
486 +If the collector fails with `login: authentication failed`:
487 +
488 +1. Verify the username and password are correct.
489 +2. Check the `auth_digest` setting. ME4 firmware before G280 requires `auth_digest: md5`.
490 + ME5 and newer ME4 firmware use `sha256` (the default).
491 +3. Ensure the user account is not locked or expired on the controller.
492 +
493 +
494 +### Connection refused or timeout
495 +
496 +If the collector fails with connection errors:
497 +
498 +1. Verify the `url` points to the management controller IP (not a data port).
499 +2. Ensure HTTPS port 443 is reachable from the Netdata Agent host.
500 +3. If using a firewall, allow outbound HTTPS to the controller.
501 +4. Try increasing `timeout` if the controller is on a high-latency link.
502 +
503 +
504 +### TLS certificate errors
505 +
506 +PowerVault controllers ship with self-signed certificates. If you see TLS errors:
507 +
508 +1. Set `tls_skip_verify: yes` in the configuration (most common solution).
509 +2. Alternatively, export the controller's certificate and provide it via `tls_ca`.
510 +
511 +
512 +