跳转到: 导航, 搜索

Ceilometer/blueprints/multi-publisher

  • Launchpad 条目: CeilometerSpec:multi-publisher
  • 创建时间: 2012年12月05日
  • 贡献者: Yunhong Jiang

总结

Ceilometer 中的多个发布者将收集到的测量数据转换为不同的格式,例如计量、指标等,并通过不同的通道(例如 RPC、UDP 等)发布到不同的目标,例如数据存储、synaps 等。

为了支持不同发布者的不同需求,将一组转换器组织成管道,将数据从计数器转换为计量、指标等。

发布说明

原理

用户故事

磁盘使用数据通过消息总线作为计量发布到 ceilometer 收集器,并通过 PutMetricData API 作为指标发布到 synaps。

计量系统以每 vnic 的使用信息形式发布网络使用数据,而 CW 将网络使用数据作为一个整体发布。

前提条件

设计

这只是此功能的一种可能设计(请记住这一点)。

支持多个发布者的五个组件:数据收集器、转换器、发布者和管道、管道管理器。

  • 数据收集器从其他 OpenStack 项目收集测量数据。目前 ceilometer 中有两种类型的数据收集器:pollster 和通知处理程序。
  • 转换器将数据从数据收集器或来自其他转换器进行转换。它们可以更改计数器名称,转换为另一种数据格式,删除一些数据等。
  • 发布者通过通道将数据发布到世界。
  • 管道是一个逻辑组件,将数据收集器、转换器和发布者连接在一起,以便测量数据从不同的数据收集器流向不同的发布者。系统中存在多个管道。
  • 管道管理器管理系统中的管道。系统中只有一个管道管理器。从收集器收集到的测量数据将被分发到管道管理器。

实现

以下是管道定义。

顶层是管道定义数组。

每个管道项定义一个目标计数器列表、一个包含其对应参数(作为字典)的转换器列表以及发布者。

[
    {
         "counter_names" : ["counter_1", "counter_2"], 

         "tranformers":[
                           {"Transformer_name": "Transformer_1",
                            "Transformer_param": {}},
                           {"Transformer_name": "Transformer_2",
                            "Transformer_param": {}}
                       ],

         "publishers": ["publisher_1", "publisher_2"]

     },

     {

         "counter_names" : ["counter_3", "counter_4"], 


         "tranformers":  [

                              {"Transformer_name": "Transformer_1",

                               "Transformer_param": {}},

                              {"Transformer_name": "Transformer_2",

                               "Transformer_param": {}}

                         ],

         "publishers": ["publisher_1", "publisher_2"]

     }

]


目标计数器名称格式:“*”、“counter_name”或“!counter_name”。它来自 Counter 命名元组中的“name”字段。

Transformer_name 来自 setup.py 中的命名空间定义。

Publisher_name 来自 setup.py 中的命名空间定义。

UI 变更

用户应提供一个用于管道定义的配置文件。目前我们支持 yaml 文件格式。

YAML 中的另一种语法可能是


---
  -
    counters: counter_1, counter_2
    transformers:
      -
        name: Transformer_1
        parameters:
          p1: value
    publishers:
      - publisher_1
      - publisher_2

  -
    counters: counter_3, counter_4
    transformers:
      -
        name: Transformer_2
        parameters:
          p1: value
    publishers:
      - publisher_1
      - publisher_2


或者更简洁地


- counters: counter_1, counter_2
  publishers: [publisher_1, publisher_2]
  transformers:
  - name: Transformer_1
    parameters: {p1: value}
- counters: counter_3, counter_4
  publishers: [publisher_1, publisher_2]
  transformers:
  - name: Transformer_2
    parameters: {p1: value}


代码变更

对代理管理器、中央管理器、收集服务进行更改,以加载转换器和发布者,以设置管道管理器。

添加转换器、发布者等的实现。

迁移

包括

  • 数据迁移(如果有)
  • 从旧 URL 到新 URL 的重定向(如果有)
  • 如何引导用户使用新的操作方式(如果需要)。

测试/演示计划

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

这应该突出显示需要在进一步的规范中解决的任何问题,而不是规范本身的问题;因为任何存在问题的规范都无法获得批准。

BoF 议程和讨论

使用本节记录 BoF 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。