Pure Storage

Pure Storage, Inc. is an American publicly traded technology company headquartered in Santa Clara, California, United States. It develops all-flash data storage hardware and software products. Pure Storage was founded in 2009 and developed its products in stealth mode until 2011.

Available solutions




This template is for Zabbix version: 7.2
Also available for: 7.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/san/pure_storage_flasharray?at=release/7.2

Pure Storage FlashArray v1 by HTTP

Overview

This template is designed for the effortless deployment of Pure Storage FlashArray v1 monitoring by Zabbix via HTTP and doesn't require any external scripts.

Requirements

Zabbix version: 7.2 and higher.

Tested versions

This template has been tested on:

  • Pure Storage FlashArray FA-X20R4 (Purity//FA: 6.7.1)

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

  1. Create a host for the Pure Storage FlashArray device and assign to it the "Pure Storage FlashArray v1 by HTTP" template.
  2. Enter your API token from the FlashArray (Purity//FA) graphical user interface into the {$PURE.FLASHARRAY.API.TOKEN} macro.
  3. It is possible to authenticate using username and password by entering them from the FlashArray (Purity//FA) graphical user interface into the {$PURE.FLASHARRAY.API.USERNAME} and {$PURE.FLASHARRAY.API.PASSWORD} macros.
  4. Set your FlashArray (Purity//FA) graphical user interface URL as the {$PURE.FLASHARRAY.API.URL} macro value.

Macros used

Name Description Default
{$PURE.FLASHARRAY.API.URL}

Pure Storage FlashArray Web interface URL.

{$PURE.FLASHARRAY.API.TOKEN}

Pure Storage FlashArray API token.

{$PURE.FLASHARRAY.API.USERNAME}

Pure Storage FlashArray Web interface username.

{$PURE.FLASHARRAY.API.PASSWORD}

Pure Storage FlashArray Web interface password.

{$PURE.FLASHARRAY.API.VERSION}

Pure Storage FlashArray API version.

1.19
{$PURE.FLASHARRAY.CERT.EXPIRY.WARN}

Number of days until the certificate expires.

7
{$PURE.FLASHARRAY.DATA.TIMEOUT}

Response timeout for the API.

15s
{$PURE.FLASHARRAY.POD.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage pods by name.

.*
{$PURE.FLASHARRAY.POD.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage pods by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.CERT.LLD.FILTER.NAME.MATCHES}

Filter of discoverable certificates by name.

.*
{$PURE.FLASHARRAY.CERT.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable certificates by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.CTRL.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable controllers by index.

.*
{$PURE.FLASHARRAY.CTRL.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable controllers by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.TEMP.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable temperature sensors by index.

.*
{$PURE.FLASHARRAY.TEMP.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable temperature sensors by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.POWER.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable power supply components by index.

.*
{$PURE.FLASHARRAY.POWER.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable power supply components by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.FAN.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable fans by index.

.*
{$PURE.FLASHARRAY.FAN.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable fans by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.DRIVE.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage drives by name.

.*
{$PURE.FLASHARRAY.DRIVE.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage drives by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HOST.LLD.FILTER.NAME.MATCHES}

Filter of discoverable hosts by name.

.*
{$PURE.FLASHARRAY.HOST.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable hosts by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HOST.LLD.FILTER.GROUP.MATCHES}

Filter of discoverable hosts by group.

.*
{$PURE.FLASHARRAY.HOST.LLD.FILTER.GROUP.NOT_MATCHES}

Filter to exclude discoverable hosts by group.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.NETIF.LLD.FILTER.NAME.MATCHES}

Filter of discoverable network interfaces by name.

.*
{$PURE.FLASHARRAY.NETIF.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable network interfaces by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.VOLUME.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage volumes by name.

.*
{$PURE.FLASHARRAY.VOLUME.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage volumes by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HTTP_PROXY}

HTTP proxy for API requests. You can specify it using the format [protocol://][username[:password]@]proxy.example.com[:port]. For more details, see the documentation at https://www.zabbix.com/documentation/7.2/manual/config/items/itemtypes/http

Items

Name Description Type Key and additional info
Authentication

Pure Storage FlashArray authentication with username and password or API token usage.

Returns a session ID that is required only once and is used for all dependent script items.

A session will expire after 30 minutes. Check the template documentation for details.

Script purestorage.flasharray.auth
Authentication item errors

Collects errors from the authentication item.

Dependent item purestorage.flasharray.auth.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get hardware data

Collects hardware from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.hardware.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage hardware item errors

Collects errors from hardware retrieval.

Dependent item purestorage.flasharray.hardware.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get hosts

Collects all hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.hosts.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage hosts item errors

Collects errors from host data retrieval.

Dependent item purestorage.flasharray.hosts.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get volumes

Collects all volumes from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.volumes.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage volumes item errors

Collects errors from volume retrieval.

Dependent item purestorage.flasharray.volumes.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get certificates

Collects all certificates from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.certificates.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Certificates item errors

Collects errors from certificate retrieval.

Dependent item purestorage.flasharray.certificates.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get pods

Collects all pods from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.pods.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage pods item errors

Collects errors from pod retrieval.

Dependent item purestorage.flasharray.pods.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get network interfaces

Collects all network interfaces from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.net_ifs.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage network interfaces item errors

Collects errors from network interface retrieval.

Dependent item purestorage.flasharray.net_ifs.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get array data

Collects array data from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.array.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage array item errors

Collects errors from array data retrieval.

Dependent item purestorage.flasharray.array.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Array capacity

Total capacity of the array.

Dependent item purestorage.flasharray.array.capacity

Preprocessing

  • JSON Path: $.array.space.capacity

Array data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the array volume.

Dependent item purestorage.flasharray.array.drr

Preprocessing

  • JSON Path: $.array.space.data_reduction

Array total data reduction

The total reduction ratio of all data on the array volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.array.total_drr

Preprocessing

  • JSON Path: $.array.space.total_reduction

Array hostname

Host name of the array.

Dependent item purestorage.flasharray.array.hostname

Preprocessing

  • JSON Path: $.array.space.hostname

  • Discard unchanged with heartbeat: 1d

Array bytes written per second

Number of bytes written per second.

Dependent item purestorage.flasharray.array.written_bytes.rate

Preprocessing

  • JSON Path: $.array.monitor.input_per_sec

Array bytes read per second

Number of bytes read per second.

Dependent item purestorage.flasharray.array.read_bytes.rate

Preprocessing

  • JSON Path: $.array.monitor.output_per_sec

Array read requests per second

Number of read requests processed per second.

Dependent item purestorage.flasharray.array.read_requests.rate

Preprocessing

  • JSON Path: $.array.monitor.reads_per_sec

Array write requests per second

Number of write requests processed per second.

Dependent item purestorage.flasharray.array.write_requests.rate

Preprocessing

  • JSON Path: $.array.monitor.writes_per_sec

Array microseconds per read

Average time in microseconds required to process an I/O read request from the array. The average time does not include SAN time, queue time, or QoS rate limit time.

Dependent item purestorage.flasharray.array.usec_per_read

Preprocessing

  • JSON Path: $.array.monitor.usec_per_read_op

Array microseconds per write

Average time in microseconds required to process an I/O write request to the array. The average time does not include SAN time, queue time, or QoS rate limit time.

Dependent item purestorage.flasharray.array.usec_per_write

Preprocessing

  • JSON Path: $.array.monitor.usec_per_write_op

Array microseconds per operation

Average local queue time in microseconds for both read and write operations.

Dependent item purestorage.flasharray.array.usec_per_op

Preprocessing

  • JSON Path: $.array.monitor.local_queue_usec_per_op

Array shared space

The physical space occupied by deduplicated data.

Dependent item purestorage.flasharray.array.shared_space

Preprocessing

  • JSON Path: $.array.space.shared_space

Array used space

The total physical space occupied by system, shared space, volume, and snapshot data.

Dependent item purestorage.flasharray.array.used_space

Preprocessing

  • JSON Path: $.array.space.total

Array volumes size

The physical space occupied by volumes.

Dependent item purestorage.flasharray.array.volumes_size

Preprocessing

  • JSON Path: $.array.space.volumes

Array snapshots size

The physical space occupied by snapshots.

Dependent item purestorage.flasharray.array.snapshots_size

Preprocessing

  • JSON Path: $.array.space.snapshots

Array system size

The physical space occupied by internal array metadata.

Dependent item purestorage.flasharray.array.system_size

Preprocessing

  • JSON Path: $.array.space.system

Array thin provisioning

The percentage of volume sectors that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.array.thin_provisioning

Preprocessing

  • JSON Path: $.array.space.thin_provisioning

  • Custom multiplier: 100

Array parity

The percentage of data that is protected.

Dependent item purestorage.flasharray.array.parity

Preprocessing

  • JSON Path: $.array.space.parity

  • Custom multiplier: 100

Array version

Version of the array.

Dependent item purestorage.flasharray.array.version

Preprocessing

  • JSON Path: $.array.version

  • Discard unchanged with heartbeat: 1d

Remote assist status

Status of the remote assist connection.

Dependent item purestorage.flasharray.remote_assist.status

Preprocessing

  • JSON Path: $.array.remote_assist.status

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

Phone home status

Current status of a manually-initiated phonehome.

Dependent item purestorage.flasharray.phone_home.status

Preprocessing

  • JSON Path: $.array.phone_home.status

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

Triggers

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Authentication has failed

An error occurred when trying to perform authentication in the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.auth.errors))>0 Average
Pure Storage FlashArray: There are errors in the 'Get hardware data' metric

An error occurred when trying to get hardware data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.hardware.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get hosts' metric

An error occurred when trying to get host data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.hosts.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get volumes' metric

An error occurred when trying to get volume data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.volumes.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get certificates' metric

An error occurred when trying to get certificate data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.certificates.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get pods' metric

An error occurred when trying to get pod data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.pods.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get network interfaces' metric

An error occurred when trying to get network interface data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.net_ifs.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get storage array data' metric

An error occurred when trying to get array data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.array.errors))>0 Warning
Pure Storage FlashArray: RemoteAssist has been enabled

Purity's administrator-controlled RemoteAssist feature enables a Technical Support Engineer to communicate directly with the FlashArray via a secure link, effectively establishing an additional administrative session for the duration of the diagnosis and service.

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.remote_assist.status)=1 High
Pure Storage FlashArray: Phone Home has been disabled

Phone Home connects to the Pure1 service and uploads logs for continuous health monitoring.

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.phone_home.status)=0 Warning

LLD rule Pod discovery

Name Description Type Key and additional info
Pod discovery

Discovery of storage pods from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.pod.discovery

Preprocessing

  • JSON Path: $.pods

  • Discard unchanged with heartbeat: 3h

Item prototypes for Pod discovery

Name Description Type Key and additional info
Pod [{#NAME}]: Get data

Collects data about the {#NAME} pod.

Dependent item purestorage.flasharray.pod.get[{#NAME}]

Preprocessing

  • JSON Path: $.pods[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Pod [{#NAME}]: Promotion status

The current promotion status of the {#NAME} pod.

Dependent item purestorage.flasharray.pod.status[{#NAME}]

Preprocessing

  • JSON Path: $.promotion_status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Pod [{#NAME}]: Number of arrays

Number of arrays connected to the {#NAME} pod.

Dependent item purestorage.flasharray.pod.arrays[{#NAME}]

Preprocessing

  • JSON Path: $.arrays.length()

    ⛔️Custom on fail: Set value to: 0

LLD rule Drive discovery

Name Description Type Key and additional info
Drive discovery

Discovery of storage drives from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.drive.discovery

Preprocessing

  • JSON Path: $.drives

  • Discard unchanged with heartbeat: 3h

Item prototypes for Drive discovery

Name Description Type Key and additional info
Drive [{#NAME}]: Get data

Collects data about the {#NAME} drive.

Dependent item purestorage.flasharray.drive.get[{#NAME}]

Preprocessing

  • JSON Path: $.drives[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Drive [{#NAME}]: Capacity

The capacity of the {#NAME} drive.

Dependent item purestorage.flasharray.drive.capacity[{#NAME}]

Preprocessing

  • JSON Path: $.capacity

    ⛔️Custom on fail: Discard value

Drive [{#NAME}]: Status

The current status of the {#NAME} drive.

Dependent item purestorage.flasharray.drive.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Drive [{#NAME}]: Serial number

Serial number of the {#NAME} drive device.

Dependent item purestorage.flasharray.drive.serial[{#NAME}]

Preprocessing

  • JSON Path: $.hardware.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Trigger prototypes for Drive discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Drive [{#NAME}]: Problem on the drive

Drive {#NAME} status is not "healthy", "updating", or "unused".

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>0 and last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>2 and last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>3 Average

LLD rule Controller discovery

Name Description Type Key and additional info
Controller discovery

Discovery of controllers from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.ctrl.discovery

Preprocessing

  • JSON Path: $.controllers

  • Discard unchanged with heartbeat: 3h

Item prototypes for Controller discovery

Name Description Type Key and additional info
Controller [{#NAME}]: Get data

Collects data about the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.get[{#NAME}]

Preprocessing

  • JSON Path: $.controllers[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Controller [{#NAME}]: Status

The current status of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Controller [{#NAME}]: Mode

The current mode of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.mode[{#NAME}]

Preprocessing

  • JSON Path: $.mode

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Controller [{#NAME}]: Serial number

Serial number of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.serial[{#NAME}]

Preprocessing

  • JSON Path: $.hardware.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Controller [{#NAME}]: Model

Model of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.model[{#NAME}]

Preprocessing

  • JSON Path: $.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Controller [{#NAME}]: Version

Version of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.version[{#NAME}]

Preprocessing

  • JSON Path: $.version

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Trigger prototypes for Controller discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Controller [{#NAME}]: Controller is not ready

Controller {#NAME} status is not "ready" or "updating".

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.ctrl.status[{#NAME}])<>1 and last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.ctrl.status[{#NAME}])<>2 Average
Pure Storage FlashArray: Controller [{#NAME}]: Mode has been changed

The mode of the {#NAME} controller has changed.

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.ctrl.mode[{#NAME}],#1)<>last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.ctrl.mode[{#NAME}],#2) Average

LLD rule Temperature sensor discovery

Name Description Type Key and additional info
Temperature sensor discovery

Discovery of temperature sensors from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.temp.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Temperature sensor discovery

Name Description Type Key and additional info
Sensor [{#NAME}]: Get data

Collects data about the {#NAME} temperature sensor.

Dependent item purestorage.flasharray.temp.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Sensor [{#NAME}]: Status

The current status of the {#NAME} temperature sensor.

Dependent item purestorage.flasharray.temp.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Sensor [{#NAME}]: Temperature

The current temperature value of the {#NAME} sensor.

Dependent item purestorage.flasharray.temp.value[{#NAME}]

Preprocessing

  • JSON Path: $.temperature

    ⛔️Custom on fail: Discard value

Trigger prototypes for Temperature sensor discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Sensor [{#NAME}]: Sensor is not healthy

Temperature sensor {#NAME} status is not "ok".

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.temp.status[{#NAME}])<>0 Average

LLD rule Power supply discovery

Name Description Type Key and additional info
Power supply discovery

Discovery of power supply components from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.power.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Power supply discovery

Name Description Type Key and additional info
Power supply [{#NAME}]: Get data

Collects data about the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Power supply [{#NAME}]: Status

The current status of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Power supply [{#NAME}]: Serial number

Serial number of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.serial[{#NAME}]

Preprocessing

  • JSON Path: $.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Power supply [{#NAME}]: Model

Model of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.model[{#NAME}]

Preprocessing

  • JSON Path: $.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Power supply [{#NAME}]: Voltage

The current voltage value of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.value[{#NAME}]

Preprocessing

  • JSON Path: $.voltage

    ⛔️Custom on fail: Discard value

Trigger prototypes for Power supply discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Power supply [{#NAME}]: Power supply is not healthy

Power supply component {#NAME} status is not "ok".

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.power.status[{#NAME}])<>0 Average

LLD rule Fan discovery

Name Description Type Key and additional info
Fan discovery

Discovery of fans from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.fan.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Fan discovery

Name Description Type Key and additional info
Fan [{#NAME}]: Get data

Collects data about the {#NAME} fan.

Dependent item purestorage.flasharray.fan.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Fan [{#NAME}]: Status

The current status of the {#NAME} fan.

Dependent item purestorage.flasharray.fan.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Trigger prototypes for Fan discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Fan [{#NAME}]: Fan is not healthy

Fan {#NAME} status is not "ok".

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.fan.status[{#NAME}])<>0 Average

LLD rule Host discovery

Name Description Type Key and additional info
Host discovery

Discovery of storage hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.host.discovery

Preprocessing

  • JSON Path: $.hosts

  • Discard unchanged with heartbeat: 3h

Item prototypes for Host discovery

Name Description Type Key and additional info
Host [{#NAME}]: Get data

Collects data about the {#NAME} host.

Dependent item purestorage.flasharray.host.get[{#NAME}]

Preprocessing

  • JSON Path: $.hosts[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Size

The physical space occupied on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.size[{#NAME}]

Preprocessing

  • JSON Path: $.space.size

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the {#NAME} host volume.

Dependent item purestorage.flasharray.host.drr[{#NAME}]

Preprocessing

  • JSON Path: $.space.data_reduction

Host [{#NAME}]: Total data reduction

The total reduction ratio of all data on the {#NAME} host volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.host.total_drr[{#NAME}]

Preprocessing

  • JSON Path: $.space.total_reduction

Host [{#NAME}]: Bytes written per second

Number of bytes written to the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.written_bytes.rate[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.input_per_sec

Host [{#NAME}]: Bytes read per second

Number of bytes read from the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.read_bytes.rate[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.output_per_sec

Host [{#NAME}]: Read requests per second

Number of read requests processed on the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.read_requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.reads_per_sec

Host [{#NAME}]: Write requests per second

Number of write requests processed on the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.write_requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.writes_per_sec

Host [{#NAME}]: Microseconds per read

Average time in microseconds required to process an I/O read request from the {#NAME} host volume.

Dependent item purestorage.flasharray.host.usec_per_read[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.usec_per_read_op

Host [{#NAME}]: Microseconds per write

Average time in microseconds required to process an I/O write request to the {#NAME} host volume.

Dependent item purestorage.flasharray.host.usec_per_write[{#NAME}]

Preprocessing

  • JSON Path: $.monitor.usec_per_write_op

Host [{#NAME}]: Used space

The total physical space occupied by all data on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.used_space[{#NAME}]

Preprocessing

  • JSON Path: $.space.total

Host [{#NAME}]: Snapshots size

The physical space occupied by snapshots on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.snapshots_size[{#NAME}]

Preprocessing

  • JSON Path: $.space.snapshots

Host [{#NAME}]: Thin provisioning

The percentage of sectors in the {#NAME} host volume that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.host.thin_provisioning[{#NAME}]

Preprocessing

  • JSON Path: $.space.thin_provisioning

  • Custom multiplier: 100

LLD rule Volume discovery

Name Description Type Key and additional info
Volume discovery

Discovery of storage volumes from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.volume.discovery

Preprocessing

  • JSON Path: $.volumes

  • Discard unchanged with heartbeat: 3h

Item prototypes for Volume discovery

Name Description Type Key and additional info
Volume [{#NAME}]: Get data

Collects data about the {#NAME} volume.

Dependent item purestorage.flasharray.volume.get[{#SN}]

Preprocessing

  • JSON Path: $.volumes[?(@.serial == "{#SN}")].first()

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Size

The physical space occupied by the {#NAME} volume.

Dependent item purestorage.flasharray.volume.size[{#SN}]

Preprocessing

  • JSON Path: $.size

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the {#NAME} volume.

Dependent item purestorage.flasharray.volume.drr[{#SN}]

Preprocessing

  • JSON Path: $.space.data_reduction

Volume [{#NAME}]: Total data reduction

The total reduction ratio of all data on the {#NAME} volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.volume.total_drr[{#SN}]

Preprocessing

  • JSON Path: $.space.total_reduction

Volume [{#NAME}]: Bytes written per second

Number of bytes written to the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.written_bytes.rate[{#SN}]

Preprocessing

  • JSON Path: $.monitor.input_per_sec

Volume [{#NAME}]: Bytes read per second

Number of bytes read from the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.read_bytes.rate[{#SN}]

Preprocessing

  • JSON Path: $.monitor.output_per_sec

Volume [{#NAME}]: Read requests per second

Number of read requests processed on the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.read_requests.rate[{#SN}]

Preprocessing

  • JSON Path: $.monitor.reads_per_sec

Volume [{#NAME}]: Write requests per second

Number of write requests processed on the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.write_requests.rate[{#SN}]

Preprocessing

  • JSON Path: $.monitor.writes_per_sec

Volume [{#NAME}]: Microseconds per read

Average time in microseconds required to process an I/O read request from the {#NAME} volume.

Dependent item purestorage.flasharray.volume.usec_per_read[{#SN}]

Preprocessing

  • JSON Path: $.monitor.usec_per_read_op

Volume [{#NAME}]: Microseconds per write

Average time in microseconds required to process an I/O write request to the {#NAME} volume.

Dependent item purestorage.flasharray.volume.usec_per_write[{#SN}]

Preprocessing

  • JSON Path: $.monitor.usec_per_write_op

Volume [{#NAME}]: Shared space

The physical space occupied by deduplicated data on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.shared_space[{#SN}]

Preprocessing

  • JSON Path: $.space.shared_space

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Set value to: 0

Volume [{#NAME}]: Used space

The total physical space occupied by all data on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.used_space[{#SN}]

Preprocessing

  • JSON Path: $.space.total

Volume [{#NAME}]: Snapshots size

The physical space occupied by snapshots on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.snapshots_size[{#SN}]

Preprocessing

  • JSON Path: $.space.snapshots

Volume [{#NAME}]: Thin provisioning

The percentage of sectors in the {#NAME} volume that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.volume.thin_provisioning[{#SN}]

Preprocessing

  • JSON Path: $.space.thin_provisioning

  • Custom multiplier: 100

Trigger prototypes for Volume discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Volume [{#NAME}]: Volume size has been changed

Physical space occupied by the {#NAME} volume has been changed.

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.volume.size[{#SN}],#1)<>last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.volume.size[{#SN}],#2) Warning

LLD rule Certificate discovery

Name Description Type Key and additional info
Certificate discovery

Discovery of certificates from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.cert.discovery

Preprocessing

  • JSON Path: $.certs

  • Discard unchanged with heartbeat: 3h

Item prototypes for Certificate discovery

Name Description Type Key and additional info
Certificate [{#NAME}]: Get data

Collects data about the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.get[{#NAME}]

Preprocessing

  • JSON Path: $.certs[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Common name

The common name field listed in the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.cn[{#NAME}]

Preprocessing

  • JSON Path: $.common_name

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Issued to

Indicates the entity which holds the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.issued_to[{#NAME}]

Preprocessing

  • JSON Path: $.issued_to

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Issued by

Indicates the authority or organization that issued the {#NAME} certificate, typically including information such as the name of the Certificate Authority (CA) and its digital signature.

Dependent item purestorage.flasharray.cert.issued_by[{#NAME}]

Preprocessing

  • JSON Path: $.issued_by

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Valid from

Indicates the date and time when the {#NAME} certificate takes effect.

Dependent item purestorage.flasharray.cert.valid_from[{#NAME}]

Preprocessing

  • JSON Path: $.valid_from

  • Custom multiplier: 0.001

Certificate [{#NAME}]: Valid to

Indicates the expiration date and time of the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.valid_to[{#NAME}]

Preprocessing

  • JSON Path: $.valid_to

  • Custom multiplier: 0.001

Trigger prototypes for Certificate discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Certificate [{#NAME}]: SSL certificate expires soon

Consider reissuing and replacing the {#NAME} certificate.

last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.cert.valid_to[{#NAME}]) > 0 and (last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.cert.valid_to[{#NAME}]) - now()) / 86400 < {$PURE.FLASHARRAY.CERT.EXPIRY.WARN} Average

LLD rule Network interface discovery

Name Description Type Key and additional info
Network interface discovery

Discovery of storage hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.net_if.discovery

Preprocessing

  • JSON Path: $.interfaces

  • Discard unchanged with heartbeat: 3h

Item prototypes for Network interface discovery

Name Description Type Key and additional info
Interface [{#IFNAME}]: Get data

Collects data about the {#IFNAME} network interface.

Dependent item purestorage.flasharray.net_if.get[{#IFNAME}]

Preprocessing

  • JSON Path: $.interfaces[?(@.name == "{#IFNAME}")].first()

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: Speed

Current bandwidth of the interface.

Dependent item purestorage.flasharray.net_if.speed[{#IFNAME}]

Preprocessing

  • JSON Path: $.speed

Interface [{#IFNAME}]: IP address

Represents the IP address of the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.ip[{#IFNAME}]

Preprocessing

  • JSON Path: $.address

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: MAC address

Represents the MAC address of the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.mac[{#IFNAME}]

Preprocessing

  • JSON Path: $.hwaddr

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: Gateway

Represents the IP address of the gateway for the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.gateway[{#IFNAME}]

Preprocessing

  • JSON Path: $.gateway

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Trigger prototypes for Network interface discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Interface [{#IFNAME}]: Ethernet has changed to lower speed than it was before

This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Acknowledge to close the problem manually.

change(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.net_if.speed[{#IFNAME}])<0 and last(/Pure Storage FlashArray v1 by HTTP/purestorage.flasharray.net_if.speed[{#IFNAME}])>0 Info Manual close: Yes

Pure Storage FlashArray v2 by HTTP

Overview

This template is designed for the effortless deployment of Pure Storage FlashArray v2 monitoring by Zabbix via HTTP and doesn't require any external scripts.

Requirements

Zabbix version: 7.2 and higher.

Tested versions

This template has been tested on:

  • Pure Storage FlashArray FA-X20R4 (Purity//FA: 6.7.1)

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

  1. Create a host for the Pure Storage FlashArray device and assign to it the "Pure Storage FlashArray v2 by HTTP" template.
  2. Enter your API token from the FlashArray (Purity//FA) graphical user interface into the {$PURE.FLASHARRAY.API.TOKEN} macro.
  3. Set your FlashArray (Purity//FA) graphical user interface URL as the {$PURE.FLASHARRAY.API.URL} macro value.

Macros used

Name Description Default
{$PURE.FLASHARRAY.API.URL}

Pure Storage FlashArray Web interface URL.

{$PURE.FLASHARRAY.API.TOKEN}

Pure Storage FlashArray API token.

{$PURE.FLASHARRAY.API.VERSION}

Pure Storage FlashArray API version.

2.36
{$PURE.FLASHARRAY.CERT.EXPIRY.WARN}

Number of days until the certificate expires.

7
{$PURE.FLASHARRAY.DATA.TIMEOUT}

Response timeout for the API.

15s
{$PURE.FLASHARRAY.POD.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage pods by name.

.*
{$PURE.FLASHARRAY.POD.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage pods by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.CERT.LLD.FILTER.NAME.MATCHES}

Filter of discoverable certificates by name.

.*
{$PURE.FLASHARRAY.CERT.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable certificates by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.CTRL.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable controllers by index.

.*
{$PURE.FLASHARRAY.CTRL.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable controllers by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.TEMP.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable temperature sensors by index.

.*
{$PURE.FLASHARRAY.TEMP.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable temperature sensors by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.POWER.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable power supply components by index.

.*
{$PURE.FLASHARRAY.POWER.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable power supply components by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.FAN.LLD.FILTER.INDEX.MATCHES}

Filter of discoverable fans by index.

.*
{$PURE.FLASHARRAY.FAN.LLD.FILTER.INDEX.NOT_MATCHES}

Filter to exclude discoverable fans by index.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.DRIVE.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage drives by name.

.*
{$PURE.FLASHARRAY.DRIVE.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage drives by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HOST.LLD.FILTER.NAME.MATCHES}

Filter of discoverable hosts by name.

.*
{$PURE.FLASHARRAY.HOST.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable hosts by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HOST.LLD.FILTER.GROUP.MATCHES}

Filter of discoverable hosts by group.

.*
{$PURE.FLASHARRAY.HOST.LLD.FILTER.GROUP.NOT_MATCHES}

Filter to exclude discoverable hosts by group.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.NETIF.LLD.FILTER.NAME.MATCHES}

Filter of discoverable network interfaces by name.

.*
{$PURE.FLASHARRAY.NETIF.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable network interfaces by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.VOLUME.LLD.FILTER.NAME.MATCHES}

Filter of discoverable storage volumes by name.

.*
{$PURE.FLASHARRAY.VOLUME.LLD.FILTER.NAME.NOT_MATCHES}

Filter to exclude discoverable storage volumes by name.

CHANGE_IF_NEEDED
{$PURE.FLASHARRAY.HTTP_PROXY}

HTTP proxy for API requests. You can specify it using the format [protocol://][username[:password]@]proxy.example.com[:port]. For more details, see the documentation at https://www.zabbix.com/documentation/7.2/manual/config/items/itemtypes/http

Items

Name Description Type Key and additional info
Authentication

Pure Storage FlashArray authentication with API token usage.

Returns a session token; it is required only once and is used for all dependent script items.

A session will expire after 30 minutes. Check the template documentation for the details.

Script purestorage.flasharray.auth
Authentication item errors

Collects errors from the authentication item.

Dependent item purestorage.flasharray.auth.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get hardware data

Collects hardware from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.hardware.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage hardware item errors

Collects errors from hardware retrieval.

Dependent item purestorage.flasharray.hardware.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get hosts

Collects all hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.hosts.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage hosts item errors

Collects errors from host data retrieval.

Dependent item purestorage.flasharray.hosts.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get volumes

Collects all volumes from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.volumes.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage volumes item errors

Collects errors from volume retrieval.

Dependent item purestorage.flasharray.volumes.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get certificates

Collects all certificates from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.certificates.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Certificates item errors

Collects errors from certificate retrieval.

Dependent item purestorage.flasharray.certificates.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get pods

Collects all pods from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.pods.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage pods item errors

Collects errors from pod retrieval.

Dependent item purestorage.flasharray.pods.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get network interfaces

Collects all network interfaces from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.net_ifs.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage network interfaces item errors

Collects errors from network interface retrieval.

Dependent item purestorage.flasharray.net_ifs.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get array data

Collects array data from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.array.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Storage array item errors

Collects errors from array data retrieval.

Dependent item purestorage.flasharray.array.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get support information

Collects support information from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.support.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Support information item errors

Collects errors from support information retrieval.

Dependent item purestorage.flasharray.support.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get alerts data

Collects alert data from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.alert.get

Preprocessing

  • JavaScript: The text is too long. Please see the template.

Alerts data item errors

Collects errors from alert data retrieval.

Dependent item purestorage.flasharray.alert.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Critical alerts

Number of active alerts in the web interface of Pure Storage FlashArray with a severity level of Critical.

Dependent item purestorage.flasharray.alert.critical

Preprocessing

  • JSON Path: $..[?(@.severity == "critical")].length()

Warning alerts

Number of active alerts in the web interface of Pure Storage FlashArray with a severity level of Warning.

Dependent item purestorage.flasharray.alert.warning

Preprocessing

  • JSON Path: $..[?(@.severity == "warning")].length()

Array capacity

Total capacity of the array.

Dependent item purestorage.flasharray.array.capacity

Preprocessing

  • JSON Path: $.array.capacity

Array data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the array volume.

Dependent item purestorage.flasharray.array.drr

Preprocessing

  • JSON Path: $.array.space.data_reduction

Array total data reduction

The total reduction ratio of all data on the array volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.array.total_drr

Preprocessing

  • JSON Path: $.array.space.total_reduction

Array hostname

Host name of the array.

Dependent item purestorage.flasharray.array.hostname

Preprocessing

  • JSON Path: $.array.name

  • Discard unchanged with heartbeat: 1d

Array bytes written per second

Number of bytes written per second.

Dependent item purestorage.flasharray.array.written_bytes.rate

Preprocessing

  • JSON Path: $.array.performance.write_bytes_per_sec

Array bytes read per second

Number of bytes read per second.

Dependent item purestorage.flasharray.array.read_bytes.rate

Preprocessing

  • JSON Path: $.array.performance.read_bytes_per_sec

Array read requests per second

Number of read requests processed per second.

Dependent item purestorage.flasharray.array.read_requests.rate

Preprocessing

  • JSON Path: $.array.performance.reads_per_sec

Array write requests per second

Number of write requests processed per second.

Dependent item purestorage.flasharray.array.write_requests.rate

Preprocessing

  • JSON Path: $.array.performance.writes_per_sec

Array microseconds per read

Average time in microseconds required to process an I/O read request from the array. The average time does not include SAN time, queue time, or QoS rate limit time.

Dependent item purestorage.flasharray.array.usec_per_read

Preprocessing

  • JSON Path: $.array.performance.usec_per_read_op

Array microseconds per write

Average time in microseconds required to process an I/O write request to the array. The average time does not include SAN time, queue time, or QoS rate limit time.

Dependent item purestorage.flasharray.array.usec_per_write

Preprocessing

  • JSON Path: $.array.performance.usec_per_write_op

Array microseconds per operation

Average local queue time in microseconds for both read and write operations.

Dependent item purestorage.flasharray.array.usec_per_op

Preprocessing

  • JSON Path: $.array.performance.local_queue_usec_per_op

Array shared space

The physical space occupied by deduplicated data.

Dependent item purestorage.flasharray.array.shared_space

Preprocessing

  • JSON Path: $.array.space.shared

Array used space

The total space occupied by system, shared space, volume, and snapshot data.

Dependent item purestorage.flasharray.array.used_space

Preprocessing

  • JSON Path: $.array.space.total_used

    ⛔️Custom on fail: Discard value

Array physical size

The total physical space occupied by system, shared space, volume, and snapshot data.

Dependent item purestorage.flasharray.array.physical_size

Preprocessing

  • JSON Path: $.array.space.total_physical

Array snapshots size

The physical space occupied by snapshots.

Dependent item purestorage.flasharray.array.snapshots_size

Preprocessing

  • JSON Path: $.array.space.snapshots

Array system size

The physical space occupied by internal array metadata.

Dependent item purestorage.flasharray.array.system_size

Preprocessing

  • JSON Path: $.array.space.system

Array thin provisioning

The percentage of volume sectors that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.array.thin_provisioning

Preprocessing

  • JSON Path: $.array.space.thin_provisioning

  • Custom multiplier: 100

Array parity

The percentage of data that is protected.

Dependent item purestorage.flasharray.array.parity

Preprocessing

  • JSON Path: $.array.parity

  • Custom multiplier: 100

Array OS

Operating system of the array.

Dependent item purestorage.flasharray.array.os

Preprocessing

  • JSON Path: $.array.os

  • Discard unchanged with heartbeat: 1d

Array version

Version of the array.

Dependent item purestorage.flasharray.array.version

Preprocessing

  • JSON Path: $.array.version

  • Discard unchanged with heartbeat: 1d

Remote assist status

Status of the remote assist connection.

Dependent item purestorage.flasharray.remote_assist.status

Preprocessing

  • JSON Path: $.support.remote_assist_active

  • Boolean to decimal
  • Discard unchanged with heartbeat: 6h

Phone home status

Current status of a manually-initiated phone home.

Dependent item purestorage.flasharray.phone_home.status

Preprocessing

  • JSON Path: $.support.phonehome_enabled

  • Boolean to decimal
  • Discard unchanged with heartbeat: 6h

Triggers

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Authentication has failed

An error occurred when trying to perform authentication in the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.auth.errors))>0 Average
Pure Storage FlashArray: There are errors in the 'Get hardware data' metric

An error occurred when trying to get hardware data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.hardware.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get hosts' metric

An error occurred when trying to get host data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.hosts.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get volumes' metric

An error occurred when trying to get volume data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.volumes.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get certificates' metric

An error occurred when trying to get certificate data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.certificates.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get pods' metric

An error occurred when trying to get pod data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.pods.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get network interfaces' metric

An error occurred when trying to get network interface data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.net_ifs.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get storage array data' metric

An error occurred when trying to get array data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.array.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get support information' metric

An error occurred when trying to get support information from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.support.errors))>0 Warning
Pure Storage FlashArray: There are errors in the 'Get alerts data' metric

An error occurred when trying to get alert data from the Pure Storage FlashArray API.

length(last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.alert.errors))>0 Warning
Pure Storage FlashArray: Critical alerts have been detected

Recommended to refer to the Pure Storage FlashArray web interface to check the alert details.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.alert.critical)>0 High
Pure Storage FlashArray: Warning alerts have been detected

Recommended to refer to the Pure Storage FlashArray web interface to check the alert details.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.alert.warning)>0 Warning
Pure Storage FlashArray: RemoteAssist has been enabled

Purity's administrator-controlled RemoteAssist feature enables a Technical Support Engineer to communicate directly with the FlashArray via a secure link, effectively establishing an additional administrative session for the duration of the diagnosis and service.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.remote_assist.status)=1 High
Pure Storage FlashArray: Phone Home has been disabled

Phone Home connects to the Pure1 service and uploads logs for continuous health monitoring.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.phone_home.status)=0 Warning

LLD rule Pod discovery

Name Description Type Key and additional info
Pod discovery

Discovery of storage pods from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.pod.discovery

Preprocessing

  • JSON Path: $.pods

  • Discard unchanged with heartbeat: 3h

Item prototypes for Pod discovery

Name Description Type Key and additional info
Pod [{#NAME}]: Get data

Collects data about the {#NAME} pod.

Dependent item purestorage.flasharray.pod.get[{#NAME}]

Preprocessing

  • JSON Path: $.pods[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Pod [{#NAME}]: Quota

The quota limit of the {#NAME} pod.

Dependent item purestorage.flasharray.pod.quota[{#NAME}]

Preprocessing

  • JSON Path: $.quota_limit

    ⛔️Custom on fail: Discard value

Pod [{#NAME}]: Status

The current promotion status of the {#NAME} pod.

Dependent item purestorage.flasharray.pod.status[{#NAME}]

Preprocessing

  • JSON Path: $.promotion_status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Pod [{#NAME}]: Number of arrays

Number of arrays connected to the {#NAME} pod.

Dependent item purestorage.flasharray.pod.arrays[{#NAME}]

Preprocessing

  • JSON Path: $.array_count

    ⛔️Custom on fail: Set value to: 0

LLD rule Drive discovery

Name Description Type Key and additional info
Drive discovery

Discovery of storage drives from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.drive.discovery

Preprocessing

  • JSON Path: $.drives

  • Discard unchanged with heartbeat: 3h

Item prototypes for Drive discovery

Name Description Type Key and additional info
Drive [{#NAME}]: Get data

Collects data about the {#NAME} drive.

Dependent item purestorage.flasharray.drive.get[{#NAME}]

Preprocessing

  • JSON Path: $.drives[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Drive [{#NAME}]: Capacity

The capacity of the {#NAME} drive.

Dependent item purestorage.flasharray.drive.capacity[{#NAME}]

Preprocessing

  • JSON Path: $.capacity

    ⛔️Custom on fail: Discard value

Drive [{#NAME}]: Status

The current status of the {#NAME} drive.

Dependent item purestorage.flasharray.drive.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Drive [{#NAME}]: Serial number

Serial number of the {#NAME} drive device.

Dependent item purestorage.flasharray.drive.serial[{#NAME}]

Preprocessing

  • JSON Path: $.hardware.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Trigger prototypes for Drive discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Drive [{#NAME}]: Problem on the drive

Drive {#NAME} status is not "healthy", "updating", or "unused".

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>0 and last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>2 and last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.drive.status[{#NAME}])<>3 Average

LLD rule Controller discovery

Name Description Type Key and additional info
Controller discovery

Discovery of controllers from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.ctrl.discovery

Preprocessing

  • JSON Path: $.controllers

  • Discard unchanged with heartbeat: 3h

Item prototypes for Controller discovery

Name Description Type Key and additional info
Controller [{#NAME}]: Get data

Collects data about the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.get[{#NAME}]

Preprocessing

  • JSON Path: $.controllers[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Controller [{#NAME}]: Status

The current status of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Controller [{#NAME}]: Mode

The current mode of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.mode[{#NAME}]

Preprocessing

  • JSON Path: $.mode

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Controller [{#NAME}]: Serial number

Serial number of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.serial[{#NAME}]

Preprocessing

  • JSON Path: $.hardware.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Controller [{#NAME}]: Model

Model of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.model[{#NAME}]

Preprocessing

  • JSON Path: $.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Controller [{#NAME}]: Version

Version of the {#NAME} controller.

Dependent item purestorage.flasharray.ctrl.version[{#NAME}]

Preprocessing

  • JSON Path: $.version

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Trigger prototypes for Controller discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Controller [{#NAME}]: Controller is not ready

Controller {#NAME} status is not "ready" or "updating".

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.ctrl.status[{#NAME}])<>1 and last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.ctrl.status[{#NAME}])<>2 Average
Pure Storage FlashArray: Controller [{#NAME}]: Mode has been changed

The mode of the {#NAME} controller has changed.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.ctrl.mode[{#NAME}],#1)<>last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.ctrl.mode[{#NAME}],#2) Average

LLD rule Temperature sensor discovery

Name Description Type Key and additional info
Temperature sensor discovery

Discovery of temperature sensors from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.temp.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Temperature sensor discovery

Name Description Type Key and additional info
Sensor [{#NAME}]: Get data

Collects data about the {#NAME} temperature sensor.

Dependent item purestorage.flasharray.temp.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Sensor [{#NAME}]: Status

The current status of the {#NAME} temperature sensor.

Dependent item purestorage.flasharray.temp.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Sensor [{#NAME}]: Temperature

The current temperature value of the {#NAME} sensor.

Dependent item purestorage.flasharray.temp.value[{#NAME}]

Preprocessing

  • JSON Path: $.temperature

    ⛔️Custom on fail: Set value to: 0

Trigger prototypes for Temperature sensor discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Sensor [{#NAME}]: Sensor is not healthy

Temperature sensor {#NAME} status is not "ok".

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.temp.status[{#NAME}])<>0 Average

LLD rule Power supply discovery

Name Description Type Key and additional info
Power supply discovery

Discovery of power supply components from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.power.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Power supply discovery

Name Description Type Key and additional info
Power supply [{#NAME}]: Get data

Collects data about the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Power supply [{#NAME}]: Status

The current status of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Power supply [{#NAME}]: Serial number

Serial number of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.serial[{#NAME}]

Preprocessing

  • JSON Path: $.serial

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Power supply [{#NAME}]: Model

Model of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.model[{#NAME}]

Preprocessing

  • JSON Path: $.model

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1d

Power supply [{#NAME}]: Voltage

The current voltage value of the {#NAME} power supply component.

Dependent item purestorage.flasharray.power.value[{#NAME}]

Preprocessing

  • JSON Path: $.voltage

    ⛔️Custom on fail: Set value to: 0

Trigger prototypes for Power supply discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Power supply [{#NAME}]: Power supply is not healthy

Power supply component {#NAME} status is not "ok".

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.power.status[{#NAME}])<>0 Average

LLD rule Fan discovery

Name Description Type Key and additional info
Fan discovery

Discovery of fans from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.fan.discovery

Preprocessing

  • JSON Path: $.hardware

  • Discard unchanged with heartbeat: 3h

Item prototypes for Fan discovery

Name Description Type Key and additional info
Fan [{#NAME}]: Get data

Collects data about the {#NAME} fan.

Dependent item purestorage.flasharray.fan.get[{#NAME}]

Preprocessing

  • JSON Path: $.hardware[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Fan [{#NAME}]: Status

The current status of the {#NAME} fan.

Dependent item purestorage.flasharray.fan.status[{#NAME}]

Preprocessing

  • JSON Path: $.status

    ⛔️Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Trigger prototypes for Fan discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Fan [{#NAME}]: Fan is not healthy

Fan {#NAME} status is not "ok".

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.fan.status[{#NAME}])<>0 Average

LLD rule Host discovery

Name Description Type Key and additional info
Host discovery

Discovery of storage hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.host.discovery

Preprocessing

  • JSON Path: $.hosts

  • Discard unchanged with heartbeat: 3h

Item prototypes for Host discovery

Name Description Type Key and additional info
Host [{#NAME}]: Get data

Collects data about the {#NAME} host.

Dependent item purestorage.flasharray.host.get[{#NAME}]

Preprocessing

  • JSON Path: $.hosts[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Total space provisioned

The total provisioned space on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.size[{#NAME}]

Preprocessing

  • JSON Path: $.space.total_provisioned

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Used space provisioned

The provisioned space occupied on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.used_provisioned[{#NAME}]

Preprocessing

  • JSON Path: $.space.used_provisioned

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the {#NAME} host volume.

Dependent item purestorage.flasharray.host.drr[{#NAME}]

Preprocessing

  • JSON Path: $.space.data_reduction

Host [{#NAME}]: Total data reduction

The total reduction ratio of all data on the {#NAME} host volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.host.total_drr[{#NAME}]

Preprocessing

  • JSON Path: $.space.total_reduction

Host [{#NAME}]: Bytes written per second

Number of bytes written to the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.written_bytes.rate[{#NAME}]

Preprocessing

  • JSON Path: $.performance.write_bytes_per_sec

Host [{#NAME}]: Bytes read per second

Number of bytes read from the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.read_bytes.rate[{#NAME}]

Preprocessing

  • JSON Path: $.performance.read_bytes_per_sec

Host [{#NAME}]: Read requests per second

Number of read requests processed on the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.read_requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.performance.reads_per_sec

Host [{#NAME}]: Write requests per second

Number of write requests processed on the {#NAME} host volume per second.

Dependent item purestorage.flasharray.host.write_requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.performance.writes_per_sec

Host [{#NAME}]: Microseconds per read

Average time in microseconds required to process an I/O read request from the {#NAME} host volume.

Dependent item purestorage.flasharray.host.usec_per_read[{#NAME}]

Preprocessing

  • JSON Path: $.performance.usec_per_read_op

Host [{#NAME}]: Microseconds per write

Average time in microseconds required to process an I/O write request to the {#NAME} host volume.

Dependent item purestorage.flasharray.host.usec_per_write[{#NAME}]

Preprocessing

  • JSON Path: $.performance.usec_per_write_op

Host [{#NAME}]: Used space

The total physical space occupied by all data on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.used_space[{#NAME}]

Preprocessing

  • JSON Path: $.space.total_used

    ⛔️Custom on fail: Discard value

Host [{#NAME}]: Snapshots size

The physical space occupied by snapshots on the {#NAME} host volume.

Dependent item purestorage.flasharray.host.snapshots_size[{#NAME}]

Preprocessing

  • JSON Path: $.space.snapshots

Host [{#NAME}]: Thin provisioning

The percentage of sectors in the {#NAME} host volume that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.host.thin_provisioning[{#NAME}]

Preprocessing

  • JSON Path: $.space.thin_provisioning

  • Custom multiplier: 100

LLD rule Volume discovery

Name Description Type Key and additional info
Volume discovery

Discovery of storage volumes from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.volume.discovery

Preprocessing

  • JSON Path: $.volumes

  • Discard unchanged with heartbeat: 3h

Item prototypes for Volume discovery

Name Description Type Key and additional info
Volume [{#NAME}]: Get data

Collects data about the {#NAME} volume.

Dependent item purestorage.flasharray.volume.get[{#SN}]

Preprocessing

  • JSON Path: $.volumes[?(@.serial == "{#SN}")].first()

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Size

The physical space occupied by the {#NAME} volume.

Dependent item purestorage.flasharray.volume.size[{#SN}]

Preprocessing

  • JSON Path: $.provisioned

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Data reduction

The data reduction ratio (DRR) represents the efficiency of data reduction techniques such as compression and deduplication for the {#NAME} volume.

Dependent item purestorage.flasharray.volume.drr[{#SN}]

Preprocessing

  • JSON Path: $.space.data_reduction

Volume [{#NAME}]: Total data reduction

The total reduction ratio of all data on the {#NAME} volume that has been processed by the data deduplication and compression engines.

Dependent item purestorage.flasharray.volume.total_drr[{#SN}]

Preprocessing

  • JSON Path: $.space.total_reduction

Volume [{#NAME}]: Bytes written per second

Number of bytes written to the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.written_bytes.rate[{#SN}]

Preprocessing

  • JSON Path: $.performance.write_bytes_per_sec

Volume [{#NAME}]: Bytes read per second

Number of bytes read from the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.read_bytes.rate[{#SN}]

Preprocessing

  • JSON Path: $.performance.read_bytes_per_sec

Volume [{#NAME}]: Read requests per second

Number of read requests processed on the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.read_requests.rate[{#SN}]

Preprocessing

  • JSON Path: $.performance.reads_per_sec

Volume [{#NAME}]: Write requests per second

Number of write requests processed on the {#NAME} volume per second.

Dependent item purestorage.flasharray.volume.write_requests.rate[{#SN}]

Preprocessing

  • JSON Path: $.performance.writes_per_sec

Volume [{#NAME}]: Microseconds per read

Average time in microseconds required to process an I/O read request from the {#NAME} volume.

Dependent item purestorage.flasharray.volume.usec_per_read[{#SN}]

Preprocessing

  • JSON Path: $.performance.usec_per_read_op

Volume [{#NAME}]: Microseconds per write

Average time in microseconds required to process an I/O write request to the {#NAME} volume.

Dependent item purestorage.flasharray.volume.usec_per_write[{#SN}]

Preprocessing

  • JSON Path: $.performance.usec_per_write_op

Volume [{#NAME}]: Shared space

The physical space occupied by deduplicated data on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.shared_space[{#SN}]

Preprocessing

  • JSON Path: $.space.shared

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Set value to: 0

Volume [{#NAME}]: Provisioned space

The total provisioned space on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.provisioned[{#SN}]

Preprocessing

  • JSON Path: $.space.total_provisioned

Volume [{#NAME}]: Used provisioned

The total provisioned space occupied by all data on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.used_provisioned[{#SN}]

Preprocessing

  • JSON Path: $.space.used_provisioned

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Used space

The total physical space occupied by all data on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.used_space[{#SN}]

Preprocessing

  • JSON Path: $.space.total_used

    ⛔️Custom on fail: Discard value

Volume [{#NAME}]: Snapshots size

The physical space occupied by snapshots on the {#NAME} volume.

Dependent item purestorage.flasharray.volume.snapshots_size[{#SN}]

Preprocessing

  • JSON Path: $.space.snapshots

Volume [{#NAME}]: Thin provisioning

The percentage of sectors in the {#NAME} volume that do not contain host-written data because the hosts have not written data to them or the sectors have been explicitly trimmed.

Dependent item purestorage.flasharray.volume.thin_provisioning[{#SN}]

Preprocessing

  • JSON Path: $.space.thin_provisioning

  • Custom multiplier: 100

Trigger prototypes for Volume discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Volume [{#NAME}]: Volume size has been changed

Physical space occupied by the {#NAME} volume has been changed.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.volume.size[{#SN}],#1)<>last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.volume.size[{#SN}],#2) Warning

LLD rule Certificate discovery

Name Description Type Key and additional info
Certificate discovery

Discovery of certificates from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.cert.discovery

Preprocessing

  • JSON Path: $.certs

  • Discard unchanged with heartbeat: 3h

Item prototypes for Certificate discovery

Name Description Type Key and additional info
Certificate [{#NAME}]: Get data

Collects data about the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.get[{#NAME}]

Preprocessing

  • JSON Path: $.certs[?(@.name == "{#NAME}")].first()

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Common name

The common name field listed in the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.cn[{#NAME}]

Preprocessing

  • JSON Path: $.common_name

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Issued to

Indicates the entity which holds the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.issued_to[{#NAME}]

Preprocessing

  • JSON Path: $.issued_to

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Issued by

Indicates the authority or organization that issued the {#NAME} certificate, typically including information such as the name of the Certificate Authority (CA) and its digital signature.

Dependent item purestorage.flasharray.cert.issued_by[{#NAME}]

Preprocessing

  • JSON Path: $.issued_by

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^$

    ⛔️Custom on fail: Discard value

Certificate [{#NAME}]: Valid from

Indicates the date and time when the {#NAME} certificate takes effect.

Dependent item purestorage.flasharray.cert.valid_from[{#NAME}]

Preprocessing

  • JSON Path: $.valid_from

  • Custom multiplier: 0.001

Certificate [{#NAME}]: Valid to

Indicates the expiration date and time of the {#NAME} certificate.

Dependent item purestorage.flasharray.cert.valid_to[{#NAME}]

Preprocessing

  • JSON Path: $.valid_to

  • Custom multiplier: 0.001

Trigger prototypes for Certificate discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Certificate [{#NAME}]: SSL certificate expires soon

Consider reissuing and replacing the {#NAME} certificate.

last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.cert.valid_to[{#NAME}]) > 0 and (last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.cert.valid_to[{#NAME}]) - now()) / 86400 < {$PURE.FLASHARRAY.CERT.EXPIRY.WARN} Average

LLD rule Network interface discovery

Name Description Type Key and additional info
Network interface discovery

Discovery of storage hosts from the Pure Storage FlashArray API.

Dependent item purestorage.flasharray.net_if.discovery

Preprocessing

  • JSON Path: $.interfaces

  • Discard unchanged with heartbeat: 3h

Item prototypes for Network interface discovery

Name Description Type Key and additional info
Interface [{#IFNAME}]: Get data

Collects data about the {#IFNAME} network interface.

Dependent item purestorage.flasharray.net_if.get[{#IFNAME}]

Preprocessing

  • JSON Path: $.interfaces[?(@.name == "{#IFNAME}")].first()

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: Speed

Current bandwidth of the interface.

Dependent item purestorage.flasharray.net_if.speed[{#IFNAME}]

Preprocessing

  • JSON Path: $.speed

Interface [{#IFNAME}]: IP address

Represents the IP address of the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.ip[{#IFNAME}]

Preprocessing

  • JSON Path: $.eth.address

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: MAC address

Represents the MAC address of the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.mac[{#IFNAME}]

Preprocessing

  • JSON Path: $.eth.mac_address

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Interface [{#IFNAME}]: Gateway

Represents the IP address of the gateway for the {#IFNAME} interface.

Dependent item purestorage.flasharray.net_if.gateway[{#IFNAME}]

Preprocessing

  • JSON Path: $.eth.gateway

  • Discard unchanged with heartbeat: 1d

  • Does not match regular expression: ^null$

    ⛔️Custom on fail: Discard value

Trigger prototypes for Network interface discovery

Name Description Expression Severity Dependencies and additional info
Pure Storage FlashArray: Interface [{#IFNAME}]: Ethernet has changed to lower speed than it was before

This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Acknowledge to close the problem manually.

change(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.net_if.speed[{#IFNAME}])<0 and last(/Pure Storage FlashArray v2 by HTTP/purestorage.flasharray.net_if.speed[{#IFNAME}])>0 Info Manual close: Yes

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

Articles and documentation

+ Propose new article

Sie können die Integration nicht finden, die Sie benötigen?