Update oslo.metrics spec
Clarify on exposition format and information schema as well as fixing typos. Change-Id: Ia777b889f608ad03c522def0b9faed45fb3d5f92
This commit is contained in:
parent
71fe65ff6f
commit
8da8397dad
|
@ -7,7 +7,7 @@ This is a proposal to create a new library to collect metrics of oslo libraries.
|
||||||
Proposed library mission
|
Proposed library mission
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
The mission of oslo.metrics is exposing internal metrics infomation of oslo
|
The mission of oslo.metrics is exposing internal metrics information of oslo
|
||||||
libraries. OpenStack processes create a connection to other middleware using
|
libraries. OpenStack processes create a connection to other middleware using
|
||||||
oslo library, e.g. oslo.messaging to connect another OpenStack process and
|
oslo library, e.g. oslo.messaging to connect another OpenStack process and
|
||||||
oslo.db to connect DB. The oslo.messaging creates its own RPC protocol over the
|
oslo.db to connect DB. The oslo.messaging creates its own RPC protocol over the
|
||||||
|
@ -18,7 +18,7 @@ admin and operator to monitor usage of oslo libraries is the goal of
|
||||||
oslo.metrics.
|
oslo.metrics.
|
||||||
|
|
||||||
The oslo.metrics supports metrics of the oslo.messaging's RPC as first goal.
|
The oslo.metrics supports metrics of the oslo.messaging's RPC as first goal.
|
||||||
The metrics infomation of the RPC doesn't appear anywhere. For example, when
|
The metrics information of the RPC doesn't appear anywhere. For example, when
|
||||||
a user calls the Create New Instance API to Nova, there is no infomation about
|
a user calls the Create New Instance API to Nova, there is no infomation about
|
||||||
how many RPC calls are made, which RPC targets are used, and etc. And for another
|
how many RPC calls are made, which RPC targets are used, and etc. And for another
|
||||||
case, if operator adds 10 compute nodes to their OpenStack cluster, how may RPC
|
case, if operator adds 10 compute nodes to their OpenStack cluster, how may RPC
|
||||||
|
@ -27,9 +27,9 @@ will be increased, and etc.
|
||||||
Consuming projects
|
Consuming projects
|
||||||
==================
|
==================
|
||||||
|
|
||||||
There are two type of cosumers. One is the OpenStack services, which use
|
There are two type of consumers. One is the OpenStack services, which use
|
||||||
oslo.messaging as its internal communication. Another is Monitoring systems,
|
oslo.messaging as its internal communication. Another is Monitoring systems,
|
||||||
which consume the metcis exposed by the oslo.metrics.
|
which consume the metrics exposed by the oslo.metrics.
|
||||||
|
|
||||||
Alternatives library
|
Alternatives library
|
||||||
====================
|
====================
|
||||||
|
@ -39,12 +39,12 @@ oslo.messaging can be a one of alternatives. However, the notification is
|
||||||
also implemented over the RabbitMQ. It makes cross reference in the metrics
|
also implemented over the RabbitMQ. It makes cross reference in the metrics
|
||||||
so it's not good idea to do.
|
so it's not good idea to do.
|
||||||
|
|
||||||
The rpc_monitor is also another alternatives. This library focuses on
|
The rpc_monitor is also another alternatives. This library focuses on collecting
|
||||||
collecting oslo.messaging metrics, and exposes its metrics to Prometheus.
|
oslo.messaging metrics, and exposes its metrics to Prometheus. The rpc_monitor
|
||||||
The rpc_monitor has not been developed long time. And the oslo.metrics will
|
has not been developed long time. And the oslo.metrics will support multi type
|
||||||
support multi type of monioring system as an official library. So it's difficult
|
of monitoring system as an official library. So it's difficult to use the
|
||||||
to use the rpc_monitor itself. However, the goal of rpc_monitor is similar to
|
rpc_monitor itself. However, the goal of rpc_monitor is similar to the
|
||||||
the oslo.metrics's first goal. When implementing the oslo.metrics the Prometheus
|
oslo.metrics's first goal. When implementing the oslo.metrics the Prometheus
|
||||||
support, it's better to consult the rpc_monitor's implementation.
|
support, it's better to consult the rpc_monitor's implementation.
|
||||||
|
|
||||||
Proposed adoption model/plan
|
Proposed adoption model/plan
|
||||||
|
@ -56,7 +56,7 @@ The existing oslo libraries send original metrics information through
|
||||||
a unix socket, then the oslo.metrics gathers the metrics information
|
a unix socket, then the oslo.metrics gathers the metrics information
|
||||||
and exposes the data.
|
and exposes the data.
|
||||||
|
|
||||||
The oslo.metrics listens to unix sockets to recieve metrics data from
|
The oslo.metrics listens to unix sockets to receive metrics data from
|
||||||
each of the OpenStack processes. The reason oslo.metrics uses the socket
|
each of the OpenStack processes. The reason oslo.metrics uses the socket
|
||||||
is to collect messaging metrics information from multiple processes which
|
is to collect messaging metrics information from multiple processes which
|
||||||
runs on the same node. One metrics process represents one node or one
|
runs on the same node. One metrics process represents one node or one
|
||||||
|
@ -70,20 +70,24 @@ library.
|
||||||
|
|
||||||
If we have a control server, then both Neutron-Server and Nova-API running
|
If we have a control server, then both Neutron-Server and Nova-API running
|
||||||
in the controller would share their metrics to one unix socket which can
|
in the controller would share their metrics to one unix socket which can
|
||||||
get data from other Openstack processes as well. The Unix Socket running
|
get data from other OpenStack processes as well. The Unix Socket running
|
||||||
in one Node would handle all openstack processes of that node
|
in one Node would handle all OpenStack processes of that node
|
||||||
|
|
||||||
The oslo.messaging sends the RPC information one by one to oslo.metrics
|
The oslo.messaging sends the RPC information one by one to oslo.metrics
|
||||||
with oslo.metrics's format. All information sent by oslo.messaging are
|
with oslo.metrics's format. All information sent by oslo.messaging are
|
||||||
put together into one metrics data in oslo.metrics. Then oslo.metrics
|
put together into one metrics data in oslo.metrics. Then oslo.metrics
|
||||||
exposes the one data to any monitoring system.
|
exposes the one data to any monitoring system.
|
||||||
|
|
||||||
The monitoring system is really depending on operator. So oslo.metrics
|
The monitoring system is really depending on operator. So oslo.metrics exposes
|
||||||
exposes the data by common format. For example, Prometheus takes PULL
|
the data by common format. The de facto standard is `the Prometheus exposition
|
||||||
approach to get a metrics. To support Prometheus, oslo.metrics exposes
|
format
|
||||||
the metrics data over HTTP.
|
<https://prometheus.io/docs/instrumenting/exposition_formats/#text-based-format>`_.
|
||||||
|
We decide to use this format and expose the metrics on the HTTP endpoint. It
|
||||||
|
allows integration with most monitoring systems, like e.g. Prometheus or
|
||||||
|
Monasca.
|
||||||
|
|
||||||
The data oslo.messaging sends to the oslo.metrics includes:
|
The data oslo.messaging sends to the oslo.metrics includes but is not limited
|
||||||
|
to:
|
||||||
|
|
||||||
* topic
|
* topic
|
||||||
* namespace
|
* namespace
|
||||||
|
@ -93,9 +97,15 @@ The data oslo.messaging sends to the oslo.metrics includes:
|
||||||
* timeout
|
* timeout
|
||||||
* type of call: call or cast
|
* type of call: call or cast
|
||||||
* timestamp of the call
|
* timestamp of the call
|
||||||
|
* project_id
|
||||||
|
|
||||||
Hostname are added by oslo.metrics side.
|
Hostname are added by oslo.metrics side.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The actual information schema is WIP and can be changed during the
|
||||||
|
implementation.
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
+--------------+ +--------------+ +-------------+
|
+--------------+ +--------------+ +-------------+
|
||||||
|
@ -121,13 +131,13 @@ Reviewer activity
|
||||||
For the changes in oslo.messaging, the support from oslo.messaging core is needed.
|
For the changes in oslo.messaging, the support from oslo.messaging core is needed.
|
||||||
For the oslo.metrics, the member of Large Scale SIG could review the patches.
|
For the oslo.metrics, the member of Large Scale SIG could review the patches.
|
||||||
|
|
||||||
Perfomance Impact
|
Performance Impact
|
||||||
=================
|
==================
|
||||||
|
|
||||||
The oslo.metrics requests oslo.messaing to send another information. This may
|
The oslo.metrics requests oslo.messaing to send another information. This may
|
||||||
cause a perfomance impact to the RPC request. After implementing first spec,
|
cause a performance impact to the RPC request. After implementing first spec,
|
||||||
this library should be tested how much the additional informaion sending cause
|
this library should be tested how much the additional information sending cause
|
||||||
perfomance impact.
|
performance impact.
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
==============
|
==============
|
||||||
|
@ -146,7 +156,7 @@ Work Items
|
||||||
* Create a new library named oslo.metrics
|
* Create a new library named oslo.metrics
|
||||||
* The implementation includes unit tests and functional tests as well as its codes
|
* The implementation includes unit tests and functional tests as well as its codes
|
||||||
* Change oslo.messaging to support metrics sending
|
* Change oslo.messaging to support metrics sending
|
||||||
* Investigation of perfomance impact of oslo.messaging RPC
|
* Investigation of performance impact of oslo.messaging RPC
|
||||||
|
|
||||||
References
|
References
|
||||||
==========
|
==========
|
||||||
|
@ -170,4 +180,3 @@ Revision History
|
||||||
This work is licensed under a Creative Commons Attribution 3.0
|
This work is licensed under a Creative Commons Attribution 3.0
|
||||||
Unported License.
|
Unported License.
|
||||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue