Network Statistics From OpenDaylight¶
https://blueprints.launchpad.net/ceilometer/+spec/network-statistics-from-opendaylight
This feature proposes to add a ceilometer driver to collect network statistics information using REST APIs exposed by network-statistics module in OpenDaylight.
Problem description¶
OpenDaylight collects and stores network statistics information and exposes the same via its northbound REST APIs. An example of such statistics is number of packets received or transmitted by a port which may be created through neutron service.
A large portion of the network configuration received by OpenDaylight is from OpenStack. It will be good to have the network statistics readable from OpenDaylight via ceilometer APIs in a OpenStack-OpenDaylight deployment.
A driver already exists in ceilometer which collects statistics from OpenDaylight. But that ODL REST APIs used by the driver have been unfortunately removed or less maintained in current release of OpenDaylight which is Carbon.
We propose a v2 version of the driver which will utilize a new statistics module in OpenDaylight. To start with the v2 version of the driver will currently support only a subset of counters that were supported by old driver. Eventually this driver can be enhanced to support all counters. This v2 OpenDaylight ceilometer driver will enable counters to be stored with either MongoDB (or) with the Gnochhi collector thereby supporting both backends for ceilometer.
Proposed change¶
We propose to create a new driver in networking-odl in networking_odl/ceilometer/network/statistics/opendaylight_v2/
The driver will communicate with OpenDaylight to fetch statistics through REST APIs.
We wil support following meters:
* switch
* switch.ports
* switch.port
* switch.port.uptime
* switch.port.receive.drops
* switch.port.receive.errors
* switch.port.transmit.packets
* switch.port.receive.packets
* switch.port.transmit.bytes
* switch.port.receive.bytes
* port
* port.uptime
* port.receive.drops
* port.receive.errors
* port.transmit.packets
* port.receive.packets
* port.transmit.bytes
* port.receive.bytes
* switch.table.active.entries
New resource types will be added to /etc/ceilometer/gnocchi_resources.yaml:
- resource_type: switch
metrics:
- 'switch'
- 'switch.ports'
attributes:
controller: resource_metadata.controller
- resource_type: switch_port
metrics:
- 'switch.port'
- 'switch.port.uptime'
- 'switch.port.receive.drops'
- 'switch.port.receive.errors'
- 'switch.port.transmit.packets'
- 'switch.port.receive.packets'
- 'switch.port.transmit.bytes'
- 'switch.port.receive.bytes'
attributes:
switch: resource_metadata.switch
port_number_on_switch: resource_metadata.port_number_on_switch
neutron_port_id: resource_metadata.neutron_port_id
controller: resource_metadata.controller
- resource_type: port
metrics:
- 'port'
- 'port.uptime'
- 'port.receive.drops'
- 'port.receive.errors'
- 'port.transmit.packets'
- 'port.receive.packets'
- 'port.transmit.bytes'
- 'port.receive.bytes'
attributes:
controller: resource_metadata.controller
- resource_type: switch_table
metrics:
- 'switch.table.active.entries'
attributes:
controller: resource_metadata.controller
switch: resource_metadata.switch
Alternatives¶
None.
Data model impact¶
None.
REST API impact¶
None.
Security impact¶
None.
Pipeline impact¶
Users will have to configure OpenDaylight REST API endpoint information in resources attribute in configuration file of ceilometer ie /etc/ceilometer/polling.yaml. For eg:
sources:
- name: odl_source
interval: 600
resources:
- opendaylight.v2://127.0.0.1:8080/controller/statistics?
auth=basic&user=admin&password=admin&scheme=http
meters:
- "switch"
- "switch.ports"
- "switch.port"
- "switch.port.uptime"
- "switch.port.receive.drops"
- "switch.port.receive.errors"
- "switch.port.transmit.packets"
- "switch.port.receive.packets"
- "switch.port.transmit.bytes"
- "switch.port.receive.bytes"
- "port"
- "port.uptime"
- "port.receive.drops"
- "port.receive.errors"
- "port.transmit.packets"
- "port.receive.packets"
- "port.transmit.bytes"
- "port.receive.bytes"
- "switch.table.active.entries"
Other end user impact¶
None.
Performance/Scalability Impacts¶
None.
Other deployer impact¶
None.
Developer impact¶
None.
Implementation¶
Assignee(s)¶
- Primary assignee:
Deepthi V V
- Ongoing maintainer:
Deepthi V V
Work Items¶
Add new ceilometer driver for OpenDaylight in networking-odl
Add support for new driver in devstack.
Provide support for switch.* meters for gnocchi as backend in ceilometer.
Unit tests for new driver
Future lifecycle¶
None.
Dependencies¶
Statistics module should be available in OpenDaylight Nitrogen release.
Testing¶
Unit Tests will be added to test the new driver.
Documentation Impact¶
The added metrics will need to be documented in the measurements section.
References¶
https://blueprints.launchpad.net/ceilometer/+spec/network-statistics-from-opendaylight