PRTG – Monitoring your PURE storage system

I just created a PRTG sensor for PURE storage devices for a customer and want to share it with all of you (thanks to Daniel J.). The PURE stooge system does a particularly decent job at providing a deep insight into its health state and performance information using its own web console. And using its call-home functions, hardware issues should be resolved in the twinkling of an eye. But: As an administrator of a system like this you should be aware if there was something going on. This is, why doing a basic monitoring using PRTG makes sense.

Using my sensor, you get a great overview of the health, capacity, and performance state of your PURE storage system.


The (PowerShell) script (found on GitHub) uses the PURE storage PowerShell module from PS Gallery, so installing it onto your PRTG probe server is quite easy. Open an elevated 32-Bit PowerShell console window and type the following command:

Install-Module -Name PureStoragePowerShellSDK

Be sure to set your execution policy (in the 32-Bit PowerShell) to unrestricted

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

or to unblock the script file using

Unblock-File -Path path\to\Get-PurityInfo.ps1

After that, you need the script (which is hosted on GitHub) to the Custom Sensors\EXEXML folder on your PRTG probe installation.

Finally, you need to retrieve an API token from your PURE storage web console to authenticate the REST requests, the PowerShell script will send to your storage. The token can be found in the user configuration.


In PRTG, add an EXE/Custom Advanced sensor to your PURE storage device in PRTG and select the Get-PurityInfo.ps1 script. You will need to provide two parameters:

  1. StorageAddress
    This is the IP address or hostname of your PURE storage system, which can be fetched from the parent object in your PRTG tree using the variable %host
  2. ApiToken
    The token to access the PURE storage system, mentioned in the prerequisites.

Parameter example:

-ApiToken "abcde-a9d7a87-000000" -StorageAddress %host

The sensor will provide the following channels:

  1. Hardware ok count: the script retrieves the count of devices that report the status ok.
  2. Hardware not installed count: This is the number of devices, reporting not installed.
  3. Hardware NOT ok count: Every other hardware state except for OK and NOT INSTALLED will be counted here.
  4. Volumes (Bytes): Reports the size in TB assigned to volumes in the PURE storage system.
  5. Total used space (Bytes): is the really occupied storage on the system.
  6. Total storage capacity (Bytes): represents the total capacity of the system. This value should only change, if there is a hardware extension.
  7. Free space (Bytes): shows the total capacity reduced by the total used storage in TB.
  8. Free space (%): The free space in percent.
  9. IOPS – Writes/sec: shows the current write operations per second.
  10. IOPS – Reads/sec shows the current read operations per second.
  11. Write latency (ms): represents the time in milliseconds, the write IO currently takes.
  12. Read latency (ms): represents the time in milliseconds, the read IO currently takes.

This should give you a nice overview of what is going on your device. Please share your experiences with the script.

Find the script on GitHub.

5 thoughts on “PRTG – Monitoring your PURE storage system

  • 08.05.2019 at 21:27

    Hi! This looks awesome, but I keep getting the following error:
    XML: The returned XML does not match the expected schema. (code: PE233) — JSON: The returned JSON does not match the expected structure (Invalid JSON.). (code: PE231)

    even after changing the default quotes for the parameters to ‘ or `

    Any idea why?

    • 12.05.2019 at 18:24

      this error normally occurs when the script encounters errors and the return value can’t be interpreted by PRTG. Please activate the option to save the sensor data to disk, locate the output file and use the information provided there to find out, what the problem is. You can send it to me, if you don’t know, how to handle it. From the error message you provided so far, I can only tell that “someting went wrong” 😉

  • 15.11.2019 at 08:53

    Hello, thanks for the great work.
    I think there’s one mistake in the script at line 114:
    “limitmaxerror” = 1;
    the value should be 0, because PRTG sets the sensor to error, once the returned value is BIGGER than the given limitmaxerror.
    besides this, it works like a charm!

    • 22.11.2019 at 09:14

      You are absolutelty right. I’ll set it to 0.5, as 0 doesn’t look well in PRTG (the gauge points to zero but all the scale is red).

      Thanks so much!

  • 14.08.2020 at 09:32

    Hi Marc. Thanks for the Powershell Script, works like a charm!


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.