NetApp Filer (REST)
Description
This connector discovers the enclosure and the disks of NetApp disk arrays (filer) in C-mode as well as various environment sensors (temperatures, fans, power supplies, etc.) as well as aggregates and luns. It relies on the REST API protocol.
Enterprise Connector
This connector requires the Enterprise edition of MetricsHub.
Supersedes
This connector supersedes:
Target
Typical platform: NetApp
Operating system: Storage System
This connector is not available for the local host (it is applicable to remote hosts only).
Prerequisites
Leverages: NetApp ONTAP REST API
Technology and protocols: HTTP
Examples
CLI
metricshub HOSTNAME -t storage -c +NetAppRESTv2 --https --http-port 443 -u USERNAME
metricshub.yaml
resourceGroups:
<RESOURCE_GROUP>:
resources:
<HOSTNAME-ID>:
attributes:
host.name: <HOSTNAME> # Change with actual host name
host.type: storage
connectors: [ +NetAppRESTv2 ] # Optional, to load only this connector
protocols:
http:
https: true
port: 443 # or probably something else
username: <USERNAME> # Change with actual credentials
password: <PASSWORD> # Encrypted using metricshub-encrypt
Connector Activation Criteria
The NetApp Filer (REST) connector will be automatically activated, and its status will be reported as OK if all the below criteria are met:
- The HTTP Request below to the managed host succeeds:
- get
api/cluster - The response body contains:
uuid(regex)
- get
Metrics
| Type | Collected Metrics | Specific Attributes |
|---|---|---|
| battery | hw.status{hw.type="battery", state="degraded|failed|ok"}hw.status{hw.type="battery", state="present"} | hw.parent.idhw.parent.typeidname |
| enclosure | hw.status{hw.type="enclosure", state="degraded|failed|ok"}hw.status{hw.type="enclosure", state="present"} | familyidmodelnameserial_numbertypevendor |
| fan | hw.fan.speedhw.status{hw.type="fan", state="degraded|failed|ok"}hw.status{hw.type="fan", state="present"} | hw.parent.idhw.parent.typeidlocationname |
| filer | storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="cifs"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="fcp"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="iscsi"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v3"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v4"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v41"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="cifs"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="fcp"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="iscsi"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v3"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v4"}storage.io{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v41"}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="cifs"}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="fcp"}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="iscsi}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="nfs_v3"}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="nfs_v4"}storage.latency{storage.type="filer", netapp.storage.type="svm", storage.protocol="nfs_v41"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="cifs"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="fcp"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="iscsi"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v3"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v4"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="read", storage.protocol="nfs_v41"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="cifs"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="fcp"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="iscsi"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v3"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v4"}storage.operations{storage.type="filer", netapp.storage.type="svm", storage.io.direction="write", storage.protocol="nfs_v41"}storage.status{storage.type="filer", netapp.storage.type="svm", state="degraded|failed|ok"} | idnamenetapp.storage.typestorage.parent.idstorage.parent.type |
| netapp_volume | storage.io{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="read"}storage.io{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="write"}storage.latency{storage.type="filesystem", netapp.storage.type="volume"}storage.limit{storage.type="filesystem", netapp.storage.type="volume"}storage.operation_time{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="read"}storage.operation_time{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="write"}storage.operations{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="read"}storage.operations{storage.type="filesystem", netapp.storage.type="volume", storage.io.direction="write"}storage.status{storage.type="filesystem", netapp.storage.type="volume", state="degraded|failed|ok"}storage.usage{storage.type="filesystem", netapp.storage.type="volume", storage.provisioning.state="used"} | idnamenetapp.storage.typestorage.parent.idstorage.parent.typetype |
| network | hw.network.bandwidth.limithw.network.io{direction="received"}hw.network.io{direction="transmit"}hw.network.uphw.status{hw.type="network", state="degraded|failed|ok"}hw.status{hw.type="network", state="present"}storage.operation_time{storage.type="network", storage.io.direction="read"}storage.operation_time{storage.type="network", storage.io.direction="write"} | addresshw.parent.idhw.parent.typeidnamenetwork_typerole |
| node | hw.status{hw.type="controller", netapp.storage.type="node", state="degraded|failed|ok"}hw.status{state="present", hw.type="controller", netapp.storage.type="node"}system.cpu.utilization{storage.type="controller", netapp.storage.type="node"}system.memory.limit{storage.type="controller", netapp.storage.type="node"} | hw.parent.idhw.parent.typeidnamenetapp.storage.typeserial_number |
| physical_disk | hw.status{hw.type="physical_disk", state="degraded|failed|ok"}hw.status{hw.type="physical_disk", state="present"}hw.status{hw.type="physical_disk", state="spare"}storage.io{storage.type="physical_disk"}storage.operation_time{storage.type="physical_disk"}storage.operations{storage.type="physical_disk"}storage.size{storage.type="physical_disk"} | firmware_versionhw.parent.idhw.parent.typeidmodelnameserial_numberspeedstorage.roletypevendor |
| pool | storage.io{storage.type="pool", netapp.storage.type="aggregate", storage.io.direction="read"}storage.io{storage.type="pool", netapp.storage.type="aggregate", storage.io.direction="write"}storage.limit{storage.type="pool", netapp.storage.type="aggregate"}storage.operations{storage.type="pool", netapp.storage.type="aggregate", storage.io.direction="read"}storage.operations{storage.type="pool", netapp.storage.type="aggregate", storage.io.direction="write"}storage.provisioning{storage.type="pool", netapp.storage.type="aggregate", storage.provisioning.state="configured"}storage.provisioning{storage.type="pool", netapp.storage.type="aggregate", storage.provisioning.state="subscribed"}storage.status{storage.type="pool", netapp.storage.type="aggregate", state="degraded|failed|ok"}storage.usage{storage.type="pool", netapp.storage.type="aggregate", storage.provisioning.state="free"}storage.usage{storage.type="pool", netapp.storage.type="aggregate", storage.provisioning.state="used"} | disk_typeidnamenetapp.storage.typeraid_levelstorage.parent.idstorage.parent.typetype |
| power_supply | hw.status{hw.type="power_supply", state="degraded|failed|ok"}hw.status{hw.type="power_supply", state="present"} | hw.parent.idhw.parent.typeidnameserial_number |
| storage_system | storage.io{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="read"}storage.io{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="write"}storage.limit{storage.type="storage_system", netapp.storage.type="cluster"}storage.operation_time{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="read"}storage.operation_time{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="write"}storage.operations{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="read"}storage.operations{storage.type="storage_system", netapp.storage.type="cluster", storage.io.direction="write"}storage.provisioning{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="committed"}storage.provisioning{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="configured"}storage.provisioning{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="subscribed"}storage.size{storage.type="storage_system", netapp.storage.type="cluster"}storage.usage{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="free"}storage.usage{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="free_for_pools"}storage.usage{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="free_in_pools"}storage.usage{storage.type="storage_system", netapp.storage.type="cluster", storage.provisioning.state="used"} | familyidmodelnamenetapp.storage.typeserial_numbertypevendor |
| temperature | hw.status{hw.type="temperature", state="degraded|failed|ok"}hw.status{hw.type="temperature", state="present"}hw.temperaturehw.temperature.limit{limit_type="high.critical"}hw.temperature.limit{limit_type="high.degraded"} | hw.parent.idhw.parent.typeidlocationname |
| voltage | hw.status{hw.type="voltage", state="degraded|failed|ok"}hw.status{hw.type="voltage", state="present"}hw.voltage | hw.parent.idhw.parent.typeidlocationname |
| volume | storage.io{storage.type="volume", netapp.storage.type="lun", storage.io.direction="read"}storage.io{storage.type="volume", netapp.storage.type="lun", storage.io.direction="write"}storage.limit{storage.type="volume", netapp.storage.type="lun"}storage.operation_time{storage.type="volume", netapp.storage.type="lun", storage.io.direction="read"}storage.operation_time{storage.type="volume", netapp.storage.type="lun", storage.io.direction="write"}storage.operations{storage.type="volume", netapp.storage.type="lun", storage.io.direction="read"}storage.operations{storage.type="volume", netapp.storage.type="lun", storage.io.direction="write"}storage.status{storage.type="volume", netapp.storage.type="lun", state="degraded|failed|ok"}storage.usage{storage.type="volume", netapp.storage.type="lun", storage.provisioning.state="free"}storage.usage{storage.type="volume", netapp.storage.type="lun", storage.provisioning.state="used"} | idnamenetapp.storage.typestorage.consumer.statestorage.parent.idstorage.parent.typestorage.volume.typeusage |