banshee/storage-collection/storage/netapp/https/ontap-9.6/
aggregates
The state and the space of each aggregate of a NetApp ONTAP cluster by its REST API.
by banshee1 installation2 versions
v2Latest
Published on October 28, 2026. One naming convention across collections; documentation completed.
Aggregates of a NetApp ONTAP cluster, by its REST API
Returns, for each aggregate of a NetApp ONTAP cluster, its state, its used space, its free space and its size, read from the REST API with an account. Five watches are offered, each one set on the probe.
Versions
Written for the ONTAP REST API, which ONTAP serves from 9.6; ONTAP 9.5 and earlier have only ZAPI. Hence the folder ontap-9.6.
How it works
One GET https://<host:address>/api/storage/aggregates?fields=name,state,space.block_storage.size,space.block_storage.used,space.block_storage.available&max_records=1000, the account in Basic; the collector reads every page that _links.next.href points to.
{"records": [{"name": "aggr1", "state": "online", "space": {"block_storage": {"size": 10995116277760, "used": 4398046511104, "available": 6597069766656}}}]} - The state is ONTAP's:
online,onlining,offline,offlining,relocating,unmounted,restricted,inconsistent,failed,unknown. - The used space is
usedoversize; sizes are in bytes, returned in GiB. An aggregate without space returns its state only. - A code 401 or 403 stops the collector
misconfigured; any other code but 200 stops itunreachable.
The password comes from protocol:http:password, a secret variable: it only goes in the Basic header. The answer is not secret.
Prerequisites
- The cluster's management address as the host's address, reachable from the poller in HTTPS (443), its certificate trusted by the TLS profile of the probe (a pinned fingerprint in
protocol:http:fingerprint, or the certificate underprotocol:tls:authorities). - An ONTAP account for the
httpapplication with thereadonlyrole, inprotocol:http:userandprotocol:http:password.
Outputs
| Name | Label | Unit | Per instance |
|---|---|---|---|
state | State | — | yes, per aggregate |
used-percent | Used space | % | yes, per aggregate |
free | Free space | GiB | yes, per aggregate |
size | Size | GiB | yes, per aggregate |
Watches
| Name | Title | Kind | Defaults | Checked by default |
|---|---|---|---|---|
failed | Aggregate failed | state to avoid, on state | critical on offline, failed, inconsistent, unmounted, restricted | yes |
not-online | Aggregate not online | expected value, on state | warning when the state is anything but online | yes |
used | Used space | above a threshold, on used-percent | warning above 80 %, critical above 90 % | yes |
full-soon | Full within a week | above a threshold, on used-percent | warning above 99 %, ahead 7 d | yes |
missing | Aggregate missing | expected instances, on state | no aggregate named: it raises nothing until names are set on the probe | no |
Limits
- The root aggregates of the nodes (
aggr0_…) are listed like the others, and run near full by design: leave them out by the selection of the probe (Aggregates: All exceptaggr0*). - The address is written into the URL as is: an IPv6 address must be given as a name.
- Not checked against an ONTAP: the fields and states are those of the current ONTAP REST schema, as NetApp's own models write it (Trident,
models/aggregate.go) and Harvest reads it (conf/rest/9.12.0/aggr.yaml); NetApp's documentation site refused to be read, and that each field is served as early as 9.6 is not verified.