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.
Prerequisites
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.
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:
- 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
- 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:
- Hardware ok count: the script retrieves the count of devices that report the status ok.
- Hardware not installed count: This is the number of devices, reporting not installed.
- Hardware NOT ok count: Every other hardware state except for OK and NOT INSTALLED will be counted here.
- Volumes (Bytes): Reports the size in TB assigned to volumes in the PURE storage system.
- Total used space (Bytes): is the really occupied storage on the system.
- Total storage capacity (Bytes): represents the total capacity of the system. This value should only change, if there is a hardware extension.
- Free space (Bytes): shows the total capacity reduced by the total used storage in TB.
- Free space (%): The free space in percent.
- IOPS – Writes/sec: shows the current write operations per second.
- IOPS – Reads/sec shows the current read operations per second.
- Write latency (ms): represents the time in milliseconds, the write IO currently takes.
- 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.
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?
Hi,
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” đ
Cheers,
Marc
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!
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!
Hi Marc. Thanks for the Powershell Script, works like a charm!
Hi
Thanks, heaps for this, very helpful script.
Thanks very much for the helpful script, it works great.
Hi
It’s necessary to set firewall allow TCP port 80/443 from PRTG probe(where has Get-PurityInfo.ps1) to PURE storage.
Hi, does anyone know if this method still works with the latest version of Pure currently? 04/2024
Hi, we have recently updated our Pure Arrays, and this has now stopped working:
Login Failed: The remote server returned an error: (400) Bad Request.
Can somebody confirm this works with Purity 6.5.7? and advise?