[openstack-dev] [nova][ceilometer] model for ceilo/nova interaction going forward

Julien Danjou julien at danjou.info
Thu Nov 15 10:16:52 UTC 2012


On Wed, Nov 14 2012, Eoghan Glynn wrote:

> 1. Extend the existing os-server-diagnostics API extension to expose
>    any additional stats that ceilo needs.
>
>    +  would allow the ceilo compute agent to be scaled independently
>       of the nova-compute node (i.e. no need for a 1:1 correspondence)
>    -  the diagnostics returned are currently hypervisor-specific

Fixable.

>    -  the additional nova-api-->nova-compute RPC call would add lag
>       and impact timeliness for metrics gathering

Unfixable.

Seems that's not the preferred option after all.

> 2. Call the nova get_diagnostics RPC directly (as per the experimental
>    patch proposed by Yunhong Jiang https://review.openstack.org/15952),
>    or use a new RPC message specifically designed for this purpose.

Still a good idea, also imposes a perpetual reply/request, like #1.

> 3. Have nova itself emit metering messages directly onto the ceilo
>    message bus, encompassing both lifecycle events and usage stats,
>    to be picked up and persisted by the ceilo collector or other agent.
>
>    - leaks ceilo concerns into nova

I'd disagree if you do this using notifications. :)

But this option is exactly what we do currently with
ceilometer-compute-agent.
If we just move this code into nova (compute-agent + libvirt pollster),
we just move the maintenance problem away into nova, which is probably a
better option. But for publishing we'll require Ceilometer RPC code,
which is just oslo.rpc actually.

> 4. Invert control and have the nova compute service itself call into a
>    ceilo-provided API that abstracts the conduit used for publication
>    (could be via the message bus, or UDP, or a direct call to a CW API)
>
>    - a loaded nova compute service may fall behind in this periodic
>      task, especially if the reporting cadence is configured high

This downside is a problem for all options actually.

Main downside for this is, IMHO, that you do leaks ceilo concerns into
nova here, because you're likely to use a special RPC, or UDP, or
anything.

And actually, option #4 you describe is option #3 with multi-publisher
on. That means option #3 where the only requirement for the
ceilometer-compute-agent (that would be moved into nova) is not oslo.rpc
only, but various publisher provided by Ceilometer.


So my final option would be #4 possibly described as:
Rename ceilometer-compute-agent to nova-compute-metering and move it
into nova with its pollster. Make it uses the multi-publisher code from
Ceilometer so it's able to publish to a variety of destination
(ceilometer-collector, CW…) according to configuration, and polling on
interval that is configured via the publisher (as already discussed on
the multi-publisher blueprints).

  + no request/reply (like option #1 and #2)
  + maintained by nova, so doesn't break
  + no need to have hypervizor specific code, possible to abstract
  + no lag
    option #1 do:
     -> request to nova-api via REST
        -> request to nova-compute via RPC
        <- reply to nova-api via RPC
     -> reply to ceilometer-agent-compute via REST
    option #2 do:
     -> request to nova-compute via RPC
     <- reply to nova-api via RPC
    option #3 do:
     -> notification emitted by nova-compute via RPC
      (on a time basis complicated to know and configure)
    option #4 do:
     -> something emitted by nova-compute via any media supported by
        ceilo publishers
      (on a time basis known by publishers configurations)

But is Nova ready to import (optionnaly) some ceilometer code?

-- 
Julien Danjou
;; Free Software hacker & freelance
;; http://julien.danjou.info
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20121115/3fc0e432/attachment.pgp>


More information about the OpenStack-dev mailing list