On 05/06/2012 10:36 PM, Tomasz Paszkowski wrote:
> Hi,
>
> I'd like to share my thoughts on metering openstack resources usage.
> Except those data available from SystemUsageData and those mentioned
> in blueprints some of the cloud providers charge for I/O on disk
> drives (to prevent users from dd if=/dev/zero nosense and to teach
> them properly implementing cache strategies). 
Hi Tomasz,

I could not agree more and this is the reason why I/O shows in the list of 
meters shown in http://wiki.openstack.org/EfficientMetering (c5) "disk IO in 
megabyte per second has a high impact on the service availability and could be 
billed separately ".


> Those data along with
> network card usage can be gathered from libvirt using domblkstat and
> domifstat. 
Thanks for the hint
http://wiki.openstack.org/EfficientMetering?action=diff&rev2=60&rev1=59
> My idea is to gather data using agent (or modified
> nova-compute)  and send them to messaging queue using following jsoned
> data schema:
>
> {'instance': 'instance-0000003b',
> 'host':'tytan-1','zone':'r4cz1','counters': {'interface': {'vnet0':
> (80796L, 1212L, 0L, 0L, 53403L, 621L, 0L, 0L)}, 'disk': {'vda': (629L,
> 11699200L, 58L, 219136L, 0L)}}}
>
> interface is a result of: interfaceStats(), disk is a result of: blockStats()
>
>
> Those messages are consumed from queue and stored in mysql tables. I
> assume that instance is a parent resource for each disk (ephemeral or
> volume) and for each network interface.
>
> So for message mentioned earlier we have three resources:
>
> 1) instances resource: instance-0000003b
> 2) child resource: vnet0 (network)
> 3) child resource: vda 'ephemeral
>
>
> Mysql table for resources is like below:
>
> CREATE TABLE resources (
>     id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
>     parent  BIGINT UNSIGNED,
>     type VARCHAR(255) NOT NULL,
>     value VARCHAR(255) NOT NULL,
>     zone VARCHAR(255) NOT NULL,
>     added TIMESTAMP,
> ) ENGINE=INNODB;
>
> Counters are stored also in Mysql using following table:
>
>
> CREATE TABLE counters (
>     resource BIGINT UNSIGNED NOT NULL,
>     type VARCHAR(255) NOT NULL,
>     value BIGINT UNSIGNED,
>     delta BIGINT UNISGNED,
>     added TIMESTAMP NOT NULL,
>     prev TIMESTAMP NOT NULL,
> ) ENGINE=INNODB;
>
> Where prev is a reference to previous counter value. Process which is
> reading data from queue is puting raw counter value into the table and
> if possible (reference to previous entry present) evaluates delta
> value.
>
>
> By using this model of stroing usage counter's it very easy for
> billing system to evaluate charges. We just run SUM(delta) on each
> counter for given time range.
>
> This model could be very easy adopted to other counters (IP Traffic
> external/internal counters from iptables).
>

It looks like you already have a codebase that could be useful for the metering 
implementation. Would you be willing to share it ?

Cheers
>
>
>
> On Mon, Apr 30, 2012 at 12:15 PM, Loic Dachary <l...@enovance.com> wrote:
>> Hi,
>>
>> To prepare for the next meeting ( thursday 3rd, may 2012 
>> http://wiki.openstack.org/Meetings/MeteringAgenda ) I cleaned up and 
>> reorganized the Metering blueprint so that it ( hopefully ) incorporates all 
>> the information temporarily stored in the etherpad ( 
>> http://etherpad.openstack.org/EfficientMetering revision 67 in case it is 
>> vandalized ).
>>
>> We could start a discussion from the content of the following sections:
>>
>> http://wiki.openstack.org/EfficientMetering#Counters
>> http://wiki.openstack.org/EfficientMetering#Storage
>>
>> and come up with a list of the counters that should exist by default and how 
>> they should be stored.
>>
>> This morning we had a discussion with Zhongyue Luo on 
>> irc.freenode.net#openstack-metering about how Dough could use the metering 
>> service. Since it already knows about instance creations, counter c1 that 
>> records how long a given instance was up is of no interest. However, other 
>> counters such as the external bandwidth used would be useful. I advocated 
>> that one of the advantages for Dough to rely on metering to collect counters 
>> is that it does not need to know about each OpenStack component and can rely 
>> on metering to figure out how to extract such counters from nova-compute, 
>> nova-network soon to be quantum, nova-volume soon to be cinder, swift, 
>> glance and free it from the burden of tracking structural changes.
>>
>> Cheers
>>
>> --
>> Loïc Dachary         Chief Research Officer
>> // eNovance labs   http://labs.enovance.com
>> // ✉ l...@enovance.com  ☎ +33 1 49 70 99 82
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Loïc Dachary         Chief Research Officer
// eNovance labs   http://labs.enovance.com
// ✉ l...@enovance.com  ☎ +33 1 49 70 99 82


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to