Pure Storage FA Series (REST Token Authentication)
Description
This connector monitors environmental sensors, physical disks, management network cards, fiber ports along with pools, volumes for Pure Storage FA Series arrays. It relies on the Pure Storage REST API version 1.13 and higher. The API Token must be provided as a password.
Enterprise Connector
This connector requires the Enterprise edition of MetricsHub.
Supersedes
This connector supersedes:
Target
Typical platform: Pure Storage
Operating system: Storage System
This connector is not available for the local host (it is applicable to remote hosts only).
Prerequisites
Leverages: Pure Storage REST API v1.13
Technology and protocols: HTTP
Examples
CLI
metricshub HOSTNAME -t storage -c +PureStorageRESTToken --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: [ +PureStorageRESTToken ] # 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 Pure Storage FA Series (REST Token Authentication) connector must be selected manually, and its status will be reported as OK if all the below criteria are met:
- The HTTP Request below to the managed host succeeds:
- POST
/api/1.13/auth/session - Request Header:
${file::embeddedFile-1} - Request Body:
{"api_token": "%{PASSWORD}"} - The entire response (header + body) contains:
session(regex)
- POST
Metrics
| Type | Collected Metrics | Specific Attributes |
|---|---|---|
| blade | hw.status{hw.type="blade", state="degraded|failed|ok"}hw.status{hw.type="blade", state="present"} | blade_namehw.parent.typeidinfomodelnameserial_number |
| disk_controller | hw.status{hw.type="disk_controller", state="degraded|failed|ok"}hw.status{hw.type="disk_controller", state="present"} | hw.parent.idhw.parent.typeidnameserial_number |
| enclosure | hw.status{hw.type="enclosure", state="degraded|failed|ok"}hw.status{hw.type="enclosure", state="present"}storage.io{storage.type="storage_system", storage.io.direction="read"}storage.io{storage.type="storage_system", storage.io.direction="write"}storage.limit{storage.type="storage_system"}storage.operation_time{storage.type="storage_system", storage.io.direction="read"}storage.operation_time{storage.type="storage_system", storage.io.direction="write"}storage.operations{storage.type="storage_system", storage.io.direction="read"}storage.operations{storage.type="storage_system", storage.io.direction="write"}storage.provisioning{storage.type="storage_system", storage.provisioning.state="configured"}storage.provisioning{storage.type="storage_system", storage.provisioning.state="subscribed"}storage.size{storage.type="storage_system"}storage.usage{storage.type="storage_system", storage.provisioning.state="free"}storage.usage{storage.type="storage_system", storage.provisioning.state="used"} | familyidmodelnameserial_numbertypevendor |
| fan | hw.status{hw.type="fan", state="degraded|failed|ok"}hw.status{hw.type="fan", state="present"} | hw.parent.idhw.parent.typeidname |
| memory | hw.status{hw.type="memory", state="degraded|failed|ok"}hw.status{hw.type="memory", state="present"} | device_typehw.parent.idhw.parent.typeidname |
| network | hw.network.bandwidth.limithw.network.uphw.status{hw.type="network", state="degraded|failed|ok"}hw.status{hw.type="network", state="present"} | hw.parent.idhw.parent.typeidnamephysical_addressphysical_address_type |
| physical_disk | hw.physical_disk.sizehw.status{hw.type="physical_disk", state="degraded|failed|ok"}hw.status{hw.type="physical_disk", state="present"}storage.size{storage.type="physical_disk"} | hw.parent.idhw.parent.typeidinfoname |
| pool | storage.limit{storage.type="pool"}storage.provisioning{storage.type="pool", storage.provisioning.state="configured"}storage.provisioning{storage.type="pool", storage.provisioning.state="subscribed"}storage.usage{storage.type="pool", storage.provisioning.state="free"}storage.usage{storage.type="pool", storage.provisioning.state="used"} | disk_typeidnameraid_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.typeidinfoname |
| temperature | hw.status{hw.type="temperature", state="degraded|failed|ok"}hw.status{hw.type="temperature", state="present"}hw.temperature | hw.parent.idhw.parent.typeidname |
| volume | storage.io{storage.type="volume", storage.io.direction="read"}storage.io{storage.type="volume", storage.io.direction="write"}storage.limit{storage.type="volume"}storage.operation_time{storage.type="volume", storage.io.direction="read"}storage.operation_time{storage.type="volume", storage.io.direction="write"}storage.operations{storage.type="volume", storage.io.direction="read"}storage.operations{storage.type="volume", storage.io.direction="write"}storage.usage{storage.type="volume", storage.provisioning.state="free"}storage.usage{storage.type="volume", storage.provisioning.state="used"} | idnamestorage.consumer.naa_idstorage.consumer.statestorage.parent.idstorage.parent.typestorage.system.idstorage.volume.type |