检查策略需求

https://blueprints.launchpad.net/watcher/+spec/check-strategy-requirements

问题描述

运行 策略 需要不同类型的数据资源来计算 解决方案。指定策略的首次运行在大多数情况下都会导致错误。管理员必须查看日志以获取有关错误的更多信息。这需要花费大量时间,而且信息不够明确。

用例

作为一个 OpenStack 管理员,我希望能够在策略启动之前检查策略需求。

作为一个 OpenStack 管理员,我希望能够查看策略需求列表及其状态。此列表应该让我得出结论,我是否可以执行所选策略。

提议的变更

有一些需要完成的要求

  • 计量服务应该可访问。(强制)

  • 与策略关联的一个或多个指标应该存在于计量服务中。(可选)

  • 策略使用的集群数据模型应该被加载。(强制)

可以使用命令 ‘watcher strategy state {name_of_strategy}’ 调用策略检查。它将显示以下表格

需求类型

强制

State

注释

计量服务

Gnocchi: 可用

指标

no

cpu_util: 可用
memory.used: 不可用

cpu_util 超出范围 (144.2 > 100)

集群数据模型

Compute: 可用

可以通过调用以下 API 资源来验证计量服务(响应应返回 HTTP 状态码 200)

  • GET /v1/status 用于 Gnocchi

  • GET /v2/resources 用于 Ceilometer API

  • GET /v2.0/metrics 用于 Monasca API

API 版本通过 conf/{metering_serice}_client.py 设置

每个策略的计量服务在 watcher.conf 文件中定义。如果所选计量服务不可用,计量服务状态应标记为“不可用”。否则,状态将为“可用”。

Watcher 应该知道请求的策略使用哪些指标。这可以通过使用 METRIC_NAMES 字典来实现。该字典包含数据源作为键,以及策略指标名称:数据源指标名称对的子字典。这种形式的已用策略指标已经被 basic_consolidationoutlet_temp_controluniform airflowvm_workload_consolidation 策略使用。其他策略应该调整为使用 METRIC_NAMES。我还建议为指标设置最小值和最大值,以确保请求的指标以预期的单位形式出现(例如,cpu_util 的 0.00-100.00)。

可以通过向计量服务发送适当的请求来验证指标的可用性。例如,gnocchi 将在响应 GET /v1/metric 请求时返回指标列表。并非需要计量服务中包含所有策略指标,因为某些策略允许使用一些指标,而不是全部。

集群数据模型 将在 CollectorManager 类的 _collectors 结构中加载,如果 collector_plugins 选项中定义了适当的 collector。默认情况下,只有 compute CDM。

备选方案

无。

数据模型影响

无。

REST API 影响

GET /v1/strategies/(strategy)/state

参数

  • strategy (unicode) - 策略的 UUID 或名称。

返回:策略需求及其状态的列表。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

alexchadin <a.chadin@servionica.ru>

工作项

需要完成以下步骤

  • 向策略 API 添加一个新命令,该命令将检查需求。

  • 调整现有策略以使用 METRIC_NAMES 字典。

  • 更新 python-watcherclient 以支持新命令。

依赖项

无。

测试

应该添加新的单元测试,并更新旧的单元测试。

文档影响

应该添加相关的文档。

参考资料