来自 OpenDaylight 的网络统计信息

https://blueprints.launchpad.net/ceilometer/+spec/network-statistics-from-opendaylight

此特性建议添加一个 ceilometer 驱动程序,使用 OpenDaylight 中 network-statistics 模块暴露的 REST API 来收集网络统计信息。

问题描述

OpenDaylight 收集并存储网络统计信息,并通过其北向 REST API 公开这些信息。例如,通过 neutron 服务创建的端口接收或发送的数据包数量就是此类统计信息之一。

OpenDaylight 接收的大部分网络配置都来自 OpenStack。在 OpenStack-OpenDaylight 部署中,能够通过 ceilometer API 从 OpenDaylight 读取网络统计信息将非常有益。

ceilometer 中已经存在一个驱动程序,可以从 OpenDaylight 收集统计信息。但是,该驱动程序使用的 ODL REST API 在 OpenDaylight 的当前版本(Carbon)中不幸地被移除或维护较少。

我们建议开发 v2 版本的驱动程序,该驱动程序将利用 OpenDaylight 中的一个新统计模块。作为开始,v2 版本的驱动程序当前仅支持旧驱动程序支持的计数器的一个子集。最终,可以增强此驱动程序以支持所有计数器。此 v2 OpenDaylight ceilometer 驱动程序将能够将计数器存储在 MongoDB(或)Gnochhi 收集器中,从而支持 ceilometer 的两种后端。

提议的变更

我们建议在 networking-odl 中创建一个新的驱动程序,路径为 networking_odl/ceilometer/network/statistics/opendaylight_v2/

该驱动程序将通过 REST API 与 OpenDaylight 通信以获取统计信息。

我们将支持以下计量器

* 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

新的资源类型将被添加到 /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

替代方案

无。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

Pipeline 影响

用户需要在 ceilometer 的配置文件(例如 /etc/ceilometer/polling.yaml)的 resources 属性中配置 OpenDaylight REST API 端点信息。例如:

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"

其他最终用户影响

无。

性能/可扩展性影响

无。

其他部署影响

无。

开发者影响

无。

实现

负责人

主要负责人

Deepthi V V

持续维护者

Deepthi V V

工作项

  • 在 networking-odl 中添加新的 OpenDaylight ceilometer 驱动程序

  • 在 devstack 中添加对新驱动程序的支持。

  • 为 ceilometer 中使用 gnocchi 作为后端的 switch.* 计量器提供支持。

  • 新驱动程序的单元测试

未来生命周期

无。

依赖项

统计模块应在 OpenDaylight Nitrogen 版本中可用。

测试

将添加单元测试来测试新的驱动程序。

文档影响

添加的指标需要在 测量部分 中记录。

参考资料

https://blueprints.launchpad.net/ceilometer/+spec/network-statistics-from-opendaylight

https://git.opendaylight.org/gerrit/#/c/59283/