Skip to main content

Pure Storage FA Series v2 (REST)

Description

This connector monitors environmental sensors, physical disks, management network cards and fiber ports for Pure Storage FA Series arrays. It relies on the Pure Storage REST API version 2.0 and higher.

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

Technology and protocols: HTTP

Examples

CLI

metricshub HOSTNAME -t storage -c +PureStorageRESTv2 --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: [ +PureStorageRESTv2 ] # 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 v2 (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/api_version
    • Request Header: ${file::httpHeader}
    • The response body contains: version (regex)
  • The HTTP Request below to the managed host succeeds:
    • post api/2.0/login
    • Request Header: api-token: %{PASSWORD}
    • The response body contains: items (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.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