Jump to: navigation, search

Difference between revisions of "User:Gibi"

(Blanked the page)
 
Line 1: Line 1:
  
= Horizon instance statistic query =
 
[http://paste.openstack.org/show/54676/ pastebin]
 
[http://people.redhat.com/~lsurette/OpenStack/Horizon%20Overview%20Pages_v1.0.pdf horizon pdf]
 
 
 
* fact1: "instance" meter reports 1 if the instance is _allocated_ regardless of the state of the instance. Except if the VM is in error state, in that case "instance" meter does not report sample.
 
* fact2: ceilometer does not have samples from the "instance" meter with counter_volume 0 for deleted instances obviously
 
* fact3: the state of the instance is not part of the metadata of the "instance" sample
 
 
== Problem 1 ==
 
So first you want to calculate avg(counter_volume) grouped by resource_id then make a sum(counter_volume) grouped by project_id.
 
The avg(counter_volume) will produce invalid result for example if we have 6 measurement in an hour but the instance was running only half of the time, as we will have only 3 samples instead of 6 so the avg will be 1 instead of 1/2 due to fact2. If it is not a problem to get 1 instead of 1/2 for this case then you can use distinct instead of avg. The other possibility is to make the measurement period available on the API and just get sum(counter_volume) from the statistics API and then on the client side calculate the avg for the known period.
 
 
== Problem 2 ==
 
Your query with two group bys cannot be expressed in one SELECT statement. We have to translate the first avg (or distinct) step to a subquery of the second step. Our original idea for complex query statistic will allow multiple group bys but we haven't planned to allow such group bys that needs subqueries.
 
 
== Problem with DISTINCT ==
 
SELECT count(*), project_id FROM ( SELECT DISTINCT resource_id, project_id FROM Meter) GROUP BY project_id
 
 
SELECT count(*), project_id FROM (SELECT avg(counter_volume), resource_id, project_id FROM Meter GROUP BY resource_id, project_id) GROUP BY project_id
 
 
==>>
 
 
SELECT count(DISTINCT(resource_id, project_id)) FROM Meter GROUP BY project_id
 
* Only the count function is meaningful
 
* Only the instance meter can be aggregated this way
 
* Only the resource_id, project_id seems a valid DISTINCT parameter ???
 
 
= TODO =
 
Gauge VM state counter  https://blueprints.launchpad.net/ceilometer/+spec/state-meter
 
Propose separate sub meter like instance:active, instance:stopped for clarity
 

Latest revision as of 16:03, 16 April 2014