---
title: Pure Storage FlashArray
description: Monitor the performance and utilization of Pure Storage FlashArrays
breadcrumbs: Docs > Integrations > Pure Storage FlashArray
---

# Pure Storage FlashArray
Supported OS Integration version1.3.0   Pure Storage FlashArray Dashboard - Overview (Top)Pure Storage FlashArray Dashboard - Overview (Middle)Pure Storage FlashArray Dashboard - Overview (Bottom)
## Overview{% #overview %}

This check monitors the [Pure Storage FlashArray](https://www.purestorage.com/products.html) through the [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) and the [Pure Storage OpenMetrics exporter](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter).

The integration can provide performance data at the array, host, volume and pod level, as well as high-level capacity and configuration information.

You can monitor multiple FlashArrays and aggregate these into a single dashboard, or group them together by customer defined environment.

**This integration requires the following**:

- Agent v7.26.x+ to utilize OpenMetricsBaseCheckV2
- Python 3
- The Pure Storage OpenMetrics exporter is installed and running in a containerized environment. Refer to the [GitHub repo](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter) for installation instructions.
  - On FlashArrays running Purity//FA version 6.7.0 and higher the OpenMetrics exporter natively runs on the array, see Configuration for details

## Setup{% #setup %}

Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the Autodiscovery Integration Templates for guidance on applying these instructions.

### Installation{% #installation %}

1. [Download and launch the Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest).
1. Manually install the Pure FlashArray integration. See [Use Community Integrations](https://docs.datadoghq.com/agent/guide/community-integrations-installation-with-docker-agent) for more details based on your environment.

#### Host{% #host %}

To configure this check for an Agent running on a host, run `sudo -u dd-agent -- datadog-agent integration install -t datadog-purefa==<INTEGRATION_VERSION>`.

Note: `<INTEGRATION_VERSION>` can be found within the [CHANGELOG.md](https://github.com/DataDog/integrations-extras/blob/master/purefa/CHANGELOG.md) for Datadog Integration Extras.

- e.g. `sudo -u dd-agent -- datadog-agent integration install -t datadog-purefa==1.3.0`

### Configuration{% #configuration %}

1. Create a local user on your FlashArray with the Read-Only role and generate an API token for this user.
1. Add the following configuration block to the `purefa.d/conf.yaml` file, in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your PureFA performance data. See the sample [purefa.d/conf.yaml](https://github.com/datadog/integrations-extras/blob/master/purefa/datadog_checks/purefa/data/conf.yaml.example) for all available configuration options.

**Note**: The `/array` endpoint is required as an absolute minimum when creating your configuration file.

#### (Preferred) For use with the native Pure Storage OpenMetrics Exporter (Purity//FA 6.7.0+){% #preferred-for-use-with-the-native-pure-storage-openmetrics-exporter-purityfa-670 %}

```yaml
init_config:
   timeout: 60

instances:

  - openmetrics_endpoint: https://<array_ip_or_fqdn>/metrics/array?namespace=purefa
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
    # If you have not configured your Purity management TLS certifcate, you may skip TLS verification. For other TLS options, please see conf.yaml.example.
    # tls_verify: false
    # tls_ignore_warning: true

  - openmetrics_endpoint: https://<array_ip_or_fqdn>/metrics/volumes?namespace=purefa
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
    # If you have not configured your Purity management TLS certifcate, you may skip TLS verification. For other TLS options, please see conf.yaml.example.
    # tls_verify: false
    # tls_ignore_warning: true

  - openmetrics_endpoint: https://<array_ip_or_fqdn>/metrics/hosts?namespace=purefa
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
    # If you have not configured your Purity management TLS certifcate, you may skip TLS verification. For other TLS options, please see conf.yaml.example.
    # tls_verify: false
    # tls_ignore_warning: true

  - openmetrics_endpoint: https://<array_ip_or_fqdn>/metrics/pods?namespace=purefa
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
    # If you have not configured your Purity management TLS certifcate, you may skip TLS verification. For other TLS options, please see conf.yaml.example.
    # tls_verify: false
    # tls_ignore_warning: true

  - openmetrics_endpoint: https://<array_ip_or_fqdn>/metrics/directories?namespace=purefa
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
    # If you have not configured your Purity management TLS certifcate, you may skip TLS verification. For other TLS options, please see conf.yaml.example.
    # tls_verify: false
    # tls_ignore_warning: true
```

#### For use with the external [Pure Storage OpenMetrics exporter](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter) (Purity //FA <6.7.0){% #for-use-with-the-external-pure-storage-openmetrics-exporter-purity-fa-670 %}

```yaml
init_config:
   timeout: 60

instances:

  - openmetrics_endpoint: http://<exporter_ip_or_fqdn>:<port>/metrics/array?endpoint=<array_ip_or_fqdn>
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120

  - openmetrics_endpoint: http://<exporter_ip_or_fqdn>:<port>/metrics/volumes?endpoint=<array_ip_or_fqdn>
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120

  - openmetrics_endpoint: http://<exporter_ip_or_fqdn>:<port>/metrics/hosts?endpoint=<array_ip_or_fqdn>
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120

  - openmetrics_endpoint: http://<exporter_ip_or_fqdn>:<port>/metrics/pods?endpoint=<array_ip_or_fqdn>
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120

  - openmetrics_endpoint: http://<exporter_ip_or_fqdn>:<port>/metrics/directories?endpoint=<array_ip_or_fqdn>
    tags:
       - env:<env>
       - fa_array_name:<full_fqdn>
       - host:<full_fqdn>
    headers:
       Authorization: Bearer <api_token>
    min_collection_interval: 120
```
[Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent).
### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information) and look for `purefa` under the Checks section.

### Upgrading to new versions of this integration{% #upgrading-to-new-versions-of-this-integration %}

#### From PureFA Agent Check 1.0.x to 1.1.x{% #from-purefa-agent-check-10x-to-11x %}

1.1.x supports both the [Pure Storage OpenMetrics exporter](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter) and the deprecated [Pure Storage Prometheus exporter](https://github.com/PureStorage-OpenConnect/pure-exporter).

The dashboard for the deprecated [Pure Storage Prometheus exporter](https://github.com/PureStorage-OpenConnect/pure-exporter) has been renamed to `Pure FlashArray - Overview (Legacy Exporter)`.

A listing of metrics that are both shared and unique to the different exporters are listed in [metrics.py](https://github.com/datadog/integrations-extras/blob/master/purefa/datadog_checks/purefa/metrics.py). You may need to update your dashboards and/or your alerts to match the new metric names when migrating from the [Pure Storage Prometheus exporter](https://github.com/PureStorage-OpenConnect/pure-exporter) to the [Pure Storage OpenMetrics exporter](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter). Please contact Pure Storage with the information in the Support tab if you have any questions.

When migrating from [Pure Storage Prometheus exporter](https://github.com/PureStorage-OpenConnect/pure-exporter) to the [Pure Storage OpenMetrics exporter](https://github.com/PureStorage-OpenConnect/pure-fa-openmetrics-exporter), the endpoints no longer have `/flasharray` in the endpoint URI.

In future versions of the PureFA Agent Check, the metric names from the Pure Storage Prometheus exporter will be removed.

### Troubleshooting{% #troubleshooting %}

#### Arrays are not showing in dashboard{% #arrays-are-not-showing-in-dashboard %}

The dashboards included in this integration use the tags `env`, and `fa_array_name`. Make sure that these are set per instance. `host` must also be set for the `/array` and `/pods` endpoints in `purefa.d/conf.yaml`.

```yaml
- tags:
   - env:<env>
   - fa_array_name:<full_fqdn>
   - host:<full_fqdn>
```

#### Increasing collection interval{% #increasing-collection-interval %}

The Pure Storage FlashArray check sets `min_collection_interval` to `120` by default, and the minimum recommended value is `20`. You may increase/decrease `min_collection_interval` in the `purefa.d/conf.yaml` file if necessary:

```yaml
min_collection_interval: 120
```

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **purefa.alerts.open**(gauge)                                       | FlashArray open alert events.                                                   |
| **purefa.alerts.total**(gauge)                                      | (Legacy) Number of alert events.                                                |
| **purefa.array.performance\_average\_bytes**(gauge)                 | FlashArray array average operations size in bytes.*Shown as byte*               |
| **purefa.array.performance\_avg\_block\_bytes**(gauge)              | (Legacy) FlashArray avg block size.*Shown as byte*                              |
| **purefa.array.performance\_bandwidth\_bytes**(gauge)               | FlashArray array throughput in bytes per second.*Shown as byte*                 |
| **purefa.array.performance\_iops**(gauge)                           | (Legacy) FlashArray IOPS.*Shown as operation*                                   |
| **purefa.array.performance\_latency\_usec**(gauge)                  | FlashArray array latency in microseconds.*Shown as microsecond*                 |
| **purefa.array.performance\_qdepth**(gauge)                         | (Legacy) FlashArray queue depth.                                                |
| **purefa.array.performance\_queue\_depth\_ops**(gauge)              | FlashArray array queue depth size.*Shown as operation*                          |
| **purefa.array.performance\_throughput\_iops**(gauge)               | FlashArray array throughput in iops.*Shown as operation*                        |
| **purefa.array.space\_bytes**(gauge)                                | FlashArray array space in bytes.*Shown as byte*                                 |
| **purefa.array.space\_capacity\_bytes**(gauge)                      | (Legacy) FlashArray overall space capacity.*Shown as byte*                      |
| **purefa.array.space\_data\_reduction\_ratio**(gauge)               | FlashArray array space data reduction.                                          |
| **purefa.array.space\_datareduction\_ratio**(gauge)                 | (Legacy) FlashArray overall data reduction.                                     |
| **purefa.array.space\_provisioned\_bytes**(gauge)                   | (Legacy) FlashArray overall provisioned space.*Shown as byte*                   |
| **purefa.array.space\_used\_bytes**(gauge)                          | (Legacy) FlashArray overall used space.*Shown as byte*                          |
| **purefa.array.space\_utilization**(gauge)                          | FlashArray array space utilization in percent.*Shown as percent*                |
| **purefa.directory.performance\_average\_bytes**(gauge)             | FlashArray directory average operations size in bytes.*Shown as byte*           |
| **purefa.directory.performance\_bandwidth\_bytes**(gauge)           | FlashArray directory throughput in bytes per second.*Shown as byte*             |
| **purefa.directory.performance\_latency\_usec**(gauge)              | FlashArray directory latency in microseconds.*Shown as microsecond*             |
| **purefa.directory.performance\_throughput\_iops**(gauge)           | FlashArray directory throughput in iops.*Shown as operation*                    |
| **purefa.directory.space\_bytes**(gauge)                            | FlashArray directory space in bytes.*Shown as byte*                             |
| **purefa.directory.space\_data\_reduction\_ratio**(gauge)           | FlashArray directory space data reduction.                                      |
| **purefa.drive.capacity\_bytes**(gauge)                             | FlashArray drive capacity in bytes.*Shown as byte*                              |
| **purefa.hardware.chassis\_health**(gauge)                          | (Legacy) FlashArray hardware chassis health status.                             |
| **purefa.hardware.component\_health**(gauge)                        | (Legacy) FlashArray hardware component health status.                           |
| **purefa.hardware.controller\_health**(gauge)                       | (Legacy) FlashArray hardware controller health status.                          |
| **purefa.hardware.power\_volts**(gauge)                             | (Legacy) FlashArray hardware power supply voltage.*Shown as volt*               |
| **purefa.hardware.temperature\_celsius**(gauge)                     | (Legacy) FlashArray hardware temperature sensors.*Shown as degree celsius*      |
| **purefa.host.connections\_info**(gauge)                            | FlashArray host volumes connections.                                            |
| **purefa.host.connectivity\_info**(gauge)                           | FlashArray host connectivity info.                                              |
| **purefa.host.performance\_average\_bytes**(gauge)                  | FlashArray host average operations size in bytes.*Shown as byte*                |
| **purefa.host.performance\_bandwidth\_bytes**(gauge)                | FlashArray host bandwidth in bytes per second.*Shown as byte*                   |
| **purefa.host.performance\_iops**(gauge)                            | (Legacy) FlashArray host IOPS.*Shown as operation*                              |
| **purefa.host.performance\_latency\_usec**(gauge)                   | FlashArray host latency in microseconds.*Shown as microsecond*                  |
| **purefa.host.performance\_throughput\_iops**(gauge)                | FlashArray host throughput in iops.*Shown as operation*                         |
| **purefa.host.space\_bytes**(gauge)                                 | FlashArray host space in bytes.*Shown as byte*                                  |
| **purefa.host.space\_data\_reduction\_ratio**(gauge)                | FlashArray host space data reduction.                                           |
| **purefa.host.space\_datareduction\_ratio**(gauge)                  | (Legacy) FlashArray host volumes data reduction ratio.                          |
| **purefa.host.space\_size\_bytes**(gauge)                           | FlashArray host volumes size.*Shown as byte*                                    |
| **purefa.hw.component\_status**(gauge)                              | FlashArray hardware component status.                                           |
| **purefa.hw.component\_temperature\_celsius**(gauge)                | FlashArray hardware component temperature in C.*Shown as degree celsius*        |
| **purefa.hw.component\_voltage\_volt**(gauge)                       | FlashArray hardware component voltage.*Shown as volt*                           |
| **purefa.hw.controller\_info**(gauge)                               | FlashArray controller info                                                      |
| **purefa.hw.controller\_mode\_since\_timestamp\_seconds**(gauge)    | FlashArray hardware controller uptime in seconds*Shown as second*               |
| **purefa.info**(gauge)                                              | FlashArray system information.                                                  |
| **purefa.network.interface\_performance\_bandwidth\_bytes**(gauge)  | FlashArray network interface bandwidth in bytes per second*Shown as byte*       |
| **purefa.network.interface\_performance\_errors**(gauge)            | FlashArray network interface errors in errors per second*Shown as error*        |
| **purefa.network.interface\_performance\_throughput\_pkts**(gauge)  | FlashArray network interface throughput in packets per second.*Shown as packet* |
| **purefa.network.interface\_speed\_bandwidth\_bytes**(gauge)        | FlashArray network interface speed in bytes per second*Shown as byte*           |
| **purefa.network.port\_info**(gauge)                                | FlashArray network port info                                                    |
| **purefa.pod.mediator\_status**(gauge)                              | (Legacy) FlashArray pod mediatorstatus.                                         |
| **purefa.pod.performance\_average\_bytes**(gauge)                   | FlashArray pod average operations size.*Shown as byte*                          |
| **purefa.pod.performance\_bandwidth\_bytes**(gauge)                 | FlashArray pod throughput in bytes per second.*Shown as byte*                   |
| **purefa.pod.performance\_iops**(gauge)                             | (Legacy) FlashArray pod IOPS.*Shown as operation*                               |
| **purefa.pod.performance\_latency\_usec**(gauge)                    | FlashArray pod latency in microseconds.*Shown as microsecond*                   |
| **purefa.pod.performance\_replication\_bandwidth\_bytes**(gauge)    | FlashArray pod replication bandwidth.*Shown as byte*                            |
| **purefa.pod.performance\_throughput\_iops**(gauge)                 | FlashArray pod throughput in iops.*Shown as operation*                          |
| **purefa.pod.replica\_links\_lag\_average\_msec**(gauge)            | FlashArray pod links average lag in milliseconds.*Shown as second*              |
| **purefa.pod.replica\_links\_lag\_average\_sec**(gauge)             | FlashArray pod links average lag in milliseconds.*Shown as second*              |
| **purefa.pod.replica\_links\_lag\_max\_msec**(gauge)                | FlashArray pod links max lag in milliseconds.*Shown as second*                  |
| **purefa.pod.replica\_links\_lag\_max\_sec**(gauge)                 | FlashArray pod links max lag in milliseconds.*Shown as second*                  |
| **purefa.pod.replica\_links\_performance\_bandwidth\_bytes**(gauge) | FlashArray pod links bandwidth.*Shown as byte*                                  |
| **purefa.pod.space\_bytes**(gauge)                                  | FlashArray pod space in bytes.*Shown as byte*                                   |
| **purefa.pod.space\_data\_reduction\_ratio**(gauge)                 | FlashArray pod space data reduction.                                            |
| **purefa.pod.space\_datareduction\_ratio**(gauge)                   | (Legacy) FlashArray pod data reduction ratio.                                   |
| **purefa.pod.space\_size\_bytes**(gauge)                            | (Legacy) FlashArray pod size.*Shown as byte*                                    |
| **purefa.pod.status**(gauge)                                        | (Legacy) FlashArray pod status.                                                 |
| **purefa.volume.performance\_average\_bytes**(gauge)                | FlashArray volume average operations size in bytes.*Shown as byte*              |
| **purefa.volume.performance\_bandwidth\_bytes**(gauge)              | FlashArray volume throughput in bytes per second.*Shown as byte*                |
| **purefa.volume.performance\_iops**(gauge)                          | (Legacy) FlashArray volume IOPS.*Shown as operation*                            |
| **purefa.volume.performance\_latency\_usec**(gauge)                 | FlashArray volume latency in microseconds.*Shown as microsecond*                |
| **purefa.volume.performance\_throughput\_bytes**(gauge)             | (Legacy) FlashArray volume throughput.*Shown as byte*                           |
| **purefa.volume.performance\_throughput\_iops**(gauge)              | FlashArray volume throughput in iops.*Shown as operation*                       |
| **purefa.volume.space\_bytes**(gauge)                               | FlashArray volume space in bytes.*Shown as byte*                                |
| **purefa.volume.space\_data\_reduction\_ratio**(gauge)              | FlashArray volume space data reduction.                                         |
| **purefa.volume.space\_datareduction\_ratio**(gauge)                | (Legacy) FlashArray volumes data reduction ratio.                               |
| **purefa.volume.space\_size\_bytes**(gauge)                         | (Legacy) FlashArray volumes size.*Shown as byte*                                |

### Events{% #events %}

The PureFA integration does not include any events.

### Service Checks{% #service-checks %}

**purefa.openmetrics.health**

Returns `CRITICAL` if the Agent is unable to connect to the OpenMetrics endpoint, otherwise returns `OK`.

*Statuses: ok, critical*

## Support{% #support %}

For support or feature requests, contact Pure Storage through the following methods:

- Email: [pure-observability@purestorage.com](mailto:pure-observability@purestorage.com)
- Slack: [Pure Storage Code// Observability Channel](https://code-purestorage.slack.com/messages/C0357KLR1EU).
