Skip to main content

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.

hardware pure storage

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: {&quot;api_token&quot;: &quot;%{PASSWORD}&quot;}
    • The entire response (header + body) contains: session (regex)

Metrics

TypeCollected MetricsSpecific Attributes
bladehw.status{hw.type="blade", state="degraded|failed|ok"}
hw.status{hw.type="blade", state="present"}
blade_name
hw.parent.type
id
info
model
name
serial_number
disk_controllerhw.status{hw.type="disk_controller", state="degraded|failed|ok"}
hw.status{hw.type="disk_controller", state="present"}
hw.parent.id
hw.parent.type
id
name
serial_number
enclosurehw.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"}
family
id
model
name
serial_number
type
vendor
fanhw.status{hw.type="fan", state="degraded|failed|ok"}
hw.status{hw.type="fan", state="present"}
hw.parent.id
hw.parent.type
id
name
memoryhw.status{hw.type="memory", state="degraded|failed|ok"}
hw.status{hw.type="memory", state="present"}
device_type
hw.parent.id
hw.parent.type
id
name
networkhw.network.bandwidth.limit
hw.network.up
hw.status{hw.type="network", state="degraded|failed|ok"}
hw.status{hw.type="network", state="present"}
hw.parent.id
hw.parent.type
id
name
physical_address
physical_address_type
physical_diskhw.physical_disk.size
hw.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.id
hw.parent.type
id
info
name
poolstorage.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_type
id
name
raid_level
storage.parent.id
storage.parent.type
type
power_supplyhw.status{hw.type="power_supply", state="degraded|failed|ok"}
hw.status{hw.type="power_supply", state="present"}
hw.parent.id
hw.parent.type
id
info
name
temperaturehw.status{hw.type="temperature", state="degraded|failed|ok"}
hw.status{hw.type="temperature", state="present"}
hw.temperature
hw.parent.id
hw.parent.type
id
name
volumestorage.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"}
id
name
storage.consumer.naa_id
storage.consumer.state
storage.parent.id
storage.parent.type
storage.system.id
storage.volume.type