Thanks Bernd,
now I understand the new aggregation syntax. J
In my setup max is not a valid aggregation method so I would use mean instead.
Problem with my use case is that I don’t want the actual used cpu NS, but the reserved vcpus per hour.
Using the metric vcpus is no option, because it does not reflect the status of the VM. When you shut down the VM it is recorded anyway.
So I decided to correlate the cpu with the vcpus metrics. For that I have to write my own python scripts
Thanks again for your supportiv answer!
Merlin
Von: Bernd Bausch <berndbausch@gmail.com>
Gesendet: Dienstag, 6. August 2019 07:49
An: openstack-discuss@lists.openstack.org
Betreff: Re: [telemetry] Gnocchi: Aggregates Operation Syntax
Yes, aggregate syntax documentation has room for improvement. However, Gnocchi's API documentation has a rather useful list of supported operations at https://gnocchi.xyz/rest.html#list-of-supported-operations. See also my recent issue https://github.com/gnocchixyz/gnocchi/issues/1044, which helped me understand how aggregation works in Gnocchi.
Note that you can write an aggregate operation as a string using prefix notation, or as a JSON structure. On the command line, the string version is easier to use in my opinion.
Regarding your use case, allow me to focus on CPU. Ceilometer's cpu metric accumulates the nanoseconds an instance consumes. Try max aggregation to look at the CPU usage of a single instance:
gnocchi measures show --aggregation max --resource-id SERVER_UUID cpu
which is equivalent to
gnocchi aggregates '(metric cpu max)' id=SERVER_UUID
then use sum aggregation over all instances of a project:
gnocchi aggregates '(aggregate sum (metric cpu max))' project_id=PROJECT_UUID
You can even divide the figures by one billion, which converts nanoseconds to seconds:
gnocchi aggregates '(/ (aggregate sum (metric cpu max)) 1000000000)' project_id=PROJECT_UUID
If that works, it should not be too hard to do something equivalent for memory and storage.
Bernd.
On 8/5/2019 5:43 PM, Blom, Merlin, NMU-OI wrote:
Hey,
I would like to aggregate data from the gnocchi database by using the gnocchi aggregates function of the CLI/API
The documentation does not cover the operations that are available nor the syntax that has to be used:
https://gnocchi.xyz/gnocchiclient/shell.html?highlight=reaggregation#aggregates
Searching for more information I found a GitHub Issue:
https://github.com/gnocchixyz/gnocchi/issues/393
But I cannot use the syntax from that ether.
My use case:
I want to aggregate the vcpus hours per month, vram hours per month, … per server or project.
- when an instance is stopped only storage is counted
- the exact usage is used e.g. 2 vcpus between 1st and 7th day 4vcpus between 8th and last month no mean calculations
Do you have detailed documentation about the gnocchi Aggregates Operation Syntax?
Do you have complex examples for gnocchi aggregations? Especially when using the python bindings:
conn_gnocchi.metric.aggregation(metrics="memory", query=[XXXXXXXX], resource_type='instance', groupby='original_resource_id')
Can you give me advice regarding my use case? Do's and don'ts…
Thank you for your help in advance!
Merlin Blom