Comments (15)
Hi @s-kuchi
The metrics for all volumes in a volume group is already collected using the /volumes
endpoint.
The volume name is prefixed with the volume group name
volume-group-name/volume-name
The volume group is also included as a label volume_group
.
# HELP purefa_volume_performance_throughput_iops FlashArray volume throughput
# TYPE purefa_volume_performance_throughput_iops gauge
purefa_volume_space_bytes{naa_id="naa.624a9370200000000000000000000000",name="test-vol-group/test-vol",pod="",space="total_physical",volume_group="test-vol-group"} 0
I would aggregate these at the observability platform level, for example in Prometheus we could use the following queries in PromQL.
Prometheus Example
PromQL to sum all volumes by volume group and return only volumes with name 'vol-group'
sum(purefa_volume_space_bytes{instance="array01", space="total_provisioned", name=~".+vol-group.+"}) by (volume_group) /1024/1024/1024
Volume Group | Sum of Volumes (GiB) |
---|---|
{volume_group="JL-VolGroup-02"} | 2 |
{volume_group="JL-VolGroup-01"} | 3 |
PromQL sum provisioned capacity by volume group not equal to "".
sum(purefa_volume_space_bytes{instance="array01", space="total_provisioned", name!=""}) by (volume_group) /1024/1024/1024
If this solution doesn't work for you, can you provide us with a bit more context of your use case?
from pure-fa-openmetrics-exporter.
Hi @james-laing : Thank you for that info. I am trying to grab the performance data (read,write, latency, iops and bandwidth) for "Volume groups" which is available on Pure GUI/web console. Currently, I am running the following query to collect read latency for all the volumes in the volume group, sum them and average them, but i am 100% sure if that is how Pure GUI is displaying it and i want to match what Pure GUI is showing me.
avg(sum(purefa_volume_performance_latency_usec{instance=~"vapdsms",name=~"PP3SMS/.+",dimension="usec_per_read_op"}) by (name))
from pure-fa-openmetrics-exporter.
@s-kuchi, you're almost there.
Instead of averaging all datapoints, take a sum
of the avg_over_time of the defined interval.
If you are using the Pure Storage FlashArray Overview Grafana dashboard you can take a look at how we developed the queries.
Try this:
sum(avg_over_time(purefa_volume_performance_latency_usec{instance="vapdsms",dimension="usec_per_read_op",name=~"PP3SMS/.+"}[2m])) by (name)
If you are using Grafana consider using the $__interval
variable to set a dynamic interval to the timeframe.
Don't try to match the graphs exactly like-for-like between monitoring platforms as they all aggregate differently and therefore will never match.
from pure-fa-openmetrics-exporter.
@james-laing : I did try the query you mentioned, but it gives me one line for each volume in the volume group, which is not what Pure GUI volume group metric shows. The GUI shows one aggregated datapoint for all the volumes in the volume group which I am assuming is the average of the sum. I agree that I shouldn't try to match but I was trying to get to as close to the GUI's metric as possible and sum(avg_over_time...) is not it.
from pure-fa-openmetrics-exporter.
Just remove 'by (name)' from the end of the query and it will sum all the averages for the entire volume group.
from pure-fa-openmetrics-exporter.
Tried that but the value of each datapoint is not accurate. As you see compare Grafana shows 7.5 ish msec vs Pure GUI One shows < 0.6 ish msec
from pure-fa-openmetrics-exporter.
The difference is the units of measurement.
FlashArray GUI is in milliseconds (msec).
The metrics from the exporter are in microseconds (usec).
Grafana looks to be configured to apply milliseconds (msec) to the data points.
In Grafana GUI, right panel are all the options to customise the graph. Scroll down to 'Standard Options' and change the units to microseconds (μs).
![grafana_units](https://private-user-images.githubusercontent.com/102221031/256651803-504aa73b-d98b-4043-a5eb-bb2597a9a39d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTMwMDkxODYsIm5iZiI6MTcxMzAwODg4NiwicGF0aCI6Ii8xMDIyMjEwMzEvMjU2NjUxODAzLTUwNGFhNzNiLWQ5OGItNDA0My1hNWViLWJiMjU5N2E5YTM5ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQxM1QxMTQ4MDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hN2M2ZDMzYmJjMWY3MWNhYmIyODZiODdhMTdjMzBiNTRhOWRjZDE2NmE1OWI0M2NkYzUxZDhjNDNkMTc5MmVkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.CGkI0Mizij9_oJgFT6s9BBwsvnbjrRAZmVsy-xVw_28)
Also consider using the $__interval
variable in Grafana to set a dynamic interval to the timeframe.
https://grafana.com/docs/grafana/latest/dashboards/variables/add-template-variables/#__interval
from pure-fa-openmetrics-exporter.
@james-laing : It was/is set to microseconds.
from pure-fa-openmetrics-exporter.
Excellent - thanks for confirming. Let me recreate this and get back to you.
from pure-fa-openmetrics-exporter.
@s-kuchi please could you provide me with all the versions of software you are running in this environment?
- Pure Storage FA OpenMetrics Exporter version
- Prometheus version
- Grafana version
- Purity version
from pure-fa-openmetrics-exporter.
Openmetrics version is the latest
[root@pdgllvsanmgt01 ~]# docker image inspect quay.io/purestorage/pure-fa-om-exporter:latest
"RepoTags": [
"quay.io/purestorage/pure-fa-om-exporter:latest"
"DockerVersion": "20.10.12",
Prometheus version :
prometheus, version 2.44.0-rc.0 (branch: HEAD, revision: d70688038e5d444ab8beac53722df15d244038e4)
build user: root@c3e52c6dd464
build date: 20230426-09:46:54
go version: go1.20.3
platform: linux/amd64
Grafana version: 9.5.1
Purity version : 6.2.13
from pure-fa-openmetrics-exporter.
Apologies for the radio silence, it's holiday season. I have been trying to recreate this issue in the lab but so far unsuccessful. I have built an environment similar to your own using the same versions of each platform.
![Screenshot 2023-08-15 at 16 37 39](https://private-user-images.githubusercontent.com/102221031/260769357-25f29b99-e61a-4340-ad72-32ad5e77f487.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTMwMDkxODYsIm5iZiI6MTcxMzAwODg4NiwicGF0aCI6Ii8xMDIyMjEwMzEvMjYwNzY5MzU3LTI1ZjI5Yjk5LWU2MWEtNDM0MC1hZDcyLTMyYWQ1ZTc3ZjQ4Ny5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQxM1QxMTQ4MDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iYzZiN2NhYWQxNjg3ZTFlMDZiYjE2OTZlZjgzNTg5NDUxN2E5ZDJhMTAyOTgyM2U5ODY2YWM3YTVmNzkwNjY2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.LAal00vsG8xKzQSwFTrhNZM3G8ASVC7Dt47TdnK0cD4)
Perhaps you could reach out to your Pure Storage Account Manager and ask them to setup a meeting with you and I and we could take a look at this problem together?
from pure-fa-openmetrics-exporter.
The only version I could not test was Purity 6.2.13 as 6.2.x was a standard release with a short life cycle which has gone end of life.
I managed to test on Purity releases:
- 6.1.23
- 6.3.8
- 6.4.5
The best way to test this accurately is to run PromQL query in Prometheus to see the raw output against the //FA GUI.
Reach out to your Pure Storage Account Manager or System Engineer if you wish to setup a call with me.
from pure-fa-openmetrics-exporter.
@james-laing : Can you provide me your query which generated the above graphs in Grafana?
from pure-fa-openmetrics-exporter.
Sure - these are just slightly modified versions of ones in the dashboard.
https://grafana.com/grafana/dashboards/18515-pure-storage-flasharray-overview/
Latency:
sum(avg_over_time(purefa_volume_performance_latency_usec{instance=~"^$instance",env=~"^$env",dimension=~"usec_per_read_op|usec_per_write_op|san_usec_per_read_op|san_usec_per_write_op",name=~"JL-VolGroup-01.+"}[$__interval])) by (dimension)
IOps
sum(avg_over_time(purefa_volume_performance_throughput_iops{instance=~"^$instance",env=~"^$env",dimension=~"reads_per_sec|writes_per_sec",name=~"JL-VolGroup-01.+"}[$__interval])) by (dimension)
Bandwidth Utilisation
sum(avg_over_time(purefa_volume_performance_bandwidth_bytes{instance=~"^$instance",env=~"^$env",dimension=~"read_bytes_per_sec|write_bytes_per_sec",name=~"JL-VolGroup-01.+"}[$__interval])) by (dimension)
from pure-fa-openmetrics-exporter.
Related Issues (20)
- CVE-2023-45286 is causing issues with Quay Scanner
- Update useragent string to reflect calling platform HOT 3
- Collect Frontent WWPN Information HOT 9
- Array Load Statistics metric HOT 5
- purefa_alerts_open not reporting correctly HOT 4
- Add better error handling when the API token is incorrect. HOT 2
- PodReplicaLink is not in seconds HOT 3
- Add vendor directory to manage deps
- [new metric label proposal] - Add subscription info
- Add OME version to user_agent string
- [new metrics proposal] Volume snapshot metrics HOT 1
- File system metrics using Pure-fa-opemmetrics-exporter HOT 8
- Сonnection path state HOT 3
- fatal error: concurrent map writes HOT 5
- The OpenMetrics exporter is incorrectly calling the /hardware endpoint HOT 3
- [new metric proposal] - Drive capacity metrics - purefa_drive_capacity HOT 1
- Enhancements to purefa_alerts_open, collect additional fields. HOT 5
- Inquiry regarding the “Purestorage” version supported by the current “exporter” and the previous “exporter” HOT 8
- Grafana not showing data as expected with multiple arrays HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pure-fa-openmetrics-exporter.