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 2
019 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