跳转到: 导航, 搜索

Ceilometer/blueprints/support-resources-pipeline-item

以通用方式指定要轮询的端点

相关蓝图


在 OpenStack 香港峰会上关于如何改进中央代理的讨论中,大家一致认为应该允许管理员指定从哪里轮询数据,以便中央代理使用。这将为管理员提供更大的灵活性和对部署的精细控制。我们在此提出以下设计来支持这一点。

YAML 管道定义文件和管道管理器的更改

  • 在管道定义中添加新的可选列表项 'resources'

“resources”列表的内容解释应取决于不同的 pollsters。内容可以直接指定 pollster 应从哪些端点轮询,或者指定包含 pollster 要轮询的端点列表的文件。管道管理器只会从管道文件中加载资源并执行一个简单的类型检查。

新的管道文件可能如下所示

-
name: meter_pipeline
interval: 600
meters:
        - "meterFoo"
resources:
        - snmp://10.4.4.4
        - ipmi://10.5.5.5
        - file:///foo/bar/resources_file
transformers:
publishers:
       - rpc://

问题:我们是否应该明确要求 “resources” 的内容必须与 URI 兼容?

Pollster 类的更改

  • 为 get_samples 方法添加新的参数,以指定从哪里获取数据
def get_samples(self, manager, cache, resources=[]):
  • 为 pollster 添加新的方法,以验证资源是否对此 pollster 合法
def verify_resources(self, manager, resources):
    '''Verify if the resources are legal to this pollster'''
    return True

AgentManger 和 PollingTask 的更改

  • PollingTasks 类应修改为支持将管道配置中定义的资源传递给相应的 pollsters,并验证这些资源。

问题:我们是否应该只对中央管理器的 PollingTask 进行更改,还是对基础 PollingTask 类进行更改?

检测资源的变化

我们希望在资源递增地添加到管道配置文件中时,避免重启中央代理。有 2 种方法可以实现这一点

  • 在管道管理器中添加重新加载功能,以检测管道文件的更改。PollingTask 应该尝试“重新加载”新的资源,然后在每个间隔迭代中将它们传递给 pollsters。
问题:如果管道的其他内容发生更改,例如间隔、发布者、计量器等怎么办?这肯定需要重启以设置一组完全不同的 PollingTasks。
  • 将所有端点定义放在 pipeline.yaml 之外的单独文件中,并将该文件的文件名作为资源传递给 pollsters。让 pollsters 检测内容的变化并重新加载新的端点定义。
问题:我们是否应该只允许以这种方式设置端点,或者也应该允许将端点直接放入资源列表中?