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
+