<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
span.E-MailFormatvorlage21
        {mso-style-type:personal;
        font-family:"Arial",sans-serif;
        color:windowtext;}
span.E-MailFormatvorlage22
        {mso-style-type:personal-reply;
        font-family:"Arial",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1126434903;
        mso-list-type:hybrid;
        mso-list-template-ids:-1132842032 -722423854 67567619 67567621 67567617 67567619 67567621 67567617 67567619 67567621;}
@list l0:level1
        {mso-level-start-at:185;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:DengXian;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=DE link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>Thanks Bernd,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>now I understand the new aggregation syntax. </span><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>J</span><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>In my setup <i>max</i> is not a valid aggregation method so I would use <i>mean</i> instead.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>Problem with my use case is that I don’t want the actual used cpu NS, but the reserved vcpus per hour.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>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.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>So I decided to correlate the cpu with the vcpus metrics. For that I have to write my own python scripts<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>Thanks again for your supportiv answer!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D'>Merlin<o:p></o:p></span></p></div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='color:windowtext'>Von:</span></b><span lang=EN-US style='color:windowtext'> Bernd Bausch <berndbausch@gmail.com> <br><b>Gesendet:</b> Dienstag, 6. August 2</span><span style='color:windowtext'>019 07:49<br><b>An:</b> openstack-discuss@lists.openstack.org<br><b>Betreff:</b> Re: [telemetry] Gnocchi: Aggregates Operation Syntax<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p>Yes, aggregate syntax documentation has room for improvement. However, Gnocchi's API documentation has a rather useful list of supported operations at <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__gnocchi.xyz_rest.html-23list-2Dof-2Dsupported-2Doperations&d=DwMD-g&c=vo2ie5TPcLdcgWuLVH4y8lsbGPqIayH3XbK3gK82Oco&r=hTUN4-Trlb-8Fh11dR6m5VD1uYA15z7v9WL8kYigkr8&m=s9-jJlo7pCXA4tDqYm7rnH9PmrmPxcPeNp3ldkJ3O5E&s=ZikNNpSMmr3eG3-z2HL8maF5zlpc4pyNFOLFy2R1-qs&e=">https://gnocchi.xyz/rest.html#list-of-supported-operations</a>. See also my recent issue <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_gnocchixyz_gnocchi_issues_1044&d=DwMD-g&c=vo2ie5TPcLdcgWuLVH4y8lsbGPqIayH3XbK3gK82Oco&r=hTUN4-Trlb-8Fh11dR6m5VD1uYA15z7v9WL8kYigkr8&m=s9-jJlo7pCXA4tDqYm7rnH9PmrmPxcPeNp3ldkJ3O5E&s=QSibXpyW3kfu6GWLdxb49Uzcny34vtChJaL4wNdHM3s&e=">https://github.com/gnocchixyz/gnocchi/issues/1044</a>, which helped me understand how aggregation works in Gnocchi. <span style='font-size:12.0pt'><o:p></o:p></span></p><p>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.<o:p></o:p></p><p>Regarding your use case, allow me to focus on CPU. Ceilometer'<i>s cpu</i> metric accumulates the nanoseconds an instance consumes. Try <i>max</i> aggregation to look at the CPU usage of a single instance:<o:p></o:p></p><p><tt><span style='font-size:10.0pt'>    gnocchi measures show --aggregation max --resource-id SERVER_UUID cpu</span></tt><o:p></o:p></p><p>which is equivalent to<o:p></o:p></p><p><tt><span style='font-size:10.0pt'>    gnocchi aggregates '(metric cpu max)' id=SERVER_UUID</span></tt><o:p></o:p></p><p>then use <i>sum</i> aggregation over all instances of a project:<o:p></o:p></p><p><tt><span style='font-size:10.0pt'>    gnocchi aggregates '(aggregate sum (metric cpu max))' project_id=PROJECT_UUID</span></tt><o:p></o:p></p><p>You can even divide the figures by one billion, which converts nanoseconds to seconds:<o:p></o:p></p><p><tt><span style='font-size:10.0pt'>    gnocchi aggregates '(/ (aggregate sum (metric cpu max)) 1000000000)' project_id=PROJECT_UUID</span></tt><o:p></o:p></p><p>If that works, it should not be too hard to do something equivalent for memory and storage.<o:p></o:p></p><p>Bernd.<o:p></o:p></p><div><p class=MsoNormal>On 8/5/2019 5:43 PM, Blom, Merlin, NMU-OI wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span lang=EN-US>Hey,</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I would like to aggregate data from the gnocchi database by using the gnocchi aggregates function of the CLI/API</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>The documentation does not cover the operations that are available nor the syntax that has to be used:</span><o:p></o:p></p><p class=MsoNormal><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__gnocchi.xyz_gnocchiclient_shell.html-3Fhighlight-3Dreaggregation-23aggregates&d=DwMD-g&c=vo2ie5TPcLdcgWuLVH4y8lsbGPqIayH3XbK3gK82Oco&r=hTUN4-Trlb-8Fh11dR6m5VD1uYA15z7v9WL8kYigkr8&m=s9-jJlo7pCXA4tDqYm7rnH9PmrmPxcPeNp3ldkJ3O5E&s=rBSJoFwYZ81qRuPWXModdF6yty_dDg4r25vGRsmXedc&e="><span lang=EN-US>https://gnocchi.xyz/gnocchiclient/shell.html?highlight=reaggregation#aggregates</span></a><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Searching for more information I found a GitHub Issue:</span><o:p></o:p></p><p class=MsoNormal><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_gnocchixyz_gnocchi_issues_393&d=DwMD-g&c=vo2ie5TPcLdcgWuLVH4y8lsbGPqIayH3XbK3gK82Oco&r=hTUN4-Trlb-8Fh11dR6m5VD1uYA15z7v9WL8kYigkr8&m=s9-jJlo7pCXA4tDqYm7rnH9PmrmPxcPeNp3ldkJ3O5E&s=YNehDG_-fPl8zG4_leiUOiiAW_y8jxRFazvQqcpXVQs&e="><span lang=EN-US>https://github.com/gnocchixyz/gnocchi/issues/393</span></a><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>But I cannot use the syntax from that ether.</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><b><span lang=EN-US>My use case:</span></b><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>I want to aggregate the vcpus hours per month, vram hours per month, … per server or project.</span><o:p></o:p></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]><span lang=EN-US>when an instance is stopped only storage is counted</span><o:p></o:p></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]><span lang=EN-US>the exact usage is used e.g. 2 vcpus between 1<sup>st</sup> and 7<sup>th</sup> day 4vcpus between 8<sup>th</sup> and last month no mean calculations</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Do you have detailed documentation about the gnocchi Aggregates Operation Syntax?</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Do you have complex examples for gnocchi aggregations? Especially when using the python bindings:</span><o:p></o:p></p><p class=MsoNormal><i><span lang=EN-US>conn_gnocchi.metric.aggregation(metrics="memory",  query=[XXXXXXXX], resource_type='instance', groupby='original_resource_id') </span></i><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Can you give me advice regarding my use case? Do's and don'ts…</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Thank you for your help in advance!</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US>Merlin Blom</span><o:p></o:p></p><p class=MsoNormal><span lang=EN-US> </span><o:p></o:p></p></blockquote></div></body></html>