添加新的 nova-manage 命令以列出计算节点指标

https://blueprints.launchpad.net/nova/+spec/compute-node-metrics-list

我们需要一种方式来列出数据库中存储的、由计算监控插件报告的可用指标,以便管理员可以轻松配置调度器的 MetricWeigher 设置。

问题描述

随着 Icehouse 蓝图的实现 https://blueprints.launchpad.net/nova/+spec/utilization-aware-scheduling,现在可以配置各种监控插件来定期报告虚拟机监控程序指标。这些指标可以通过管理员配置的 MetricsWeigher 在调度过程中使用。

当管理员想要配置 MetricsWeigher 的设置时,他/她需要知道确切的指标才能使设置正常工作。目前,我们没有一种方法可以让管理员知道有哪些可用的指标,除非要求管理员查看监控插件的代码或在某些数据库表中查找。

我们需要一种方式来列出 nova 计算监控器当前报告的并存储在数据库中的可用指标,以便管理员可以更轻松地配置 MetricWeigher。

用例

管理员将使用这种方式列出所有可用的指标名称,以便配置 MetricsWeigher 以按预期工作。

提议的变更

将添加一个新的 nova-manage 命令

nova-manage host_metric [--host=<host>] { list | show }

该命令将从 nova 数据库加载有关所有可用计算节点指标的信息。‘list’ 操作将列出所有可用的计算节点指标名称,‘show’ 操作将显示每个指标的所有详细信息。

备选方案

另一种方法是在 nova.compute.monitors.base.MonitorBase 类中添加一种新方法,该方法将返回每个插件支持的指标名称列表。

将添加一个新的顶级 REST API 资源,它只是列出由上述新方法返回的指标名称

GET /v2.1/host-metrics

此 API 的响应将返回一个 ‘metrics’ 数组,其中列出了所有指标名称。响应将如下所示

200 OK
{
    "host_metrics": [
        'cpu.kernel.time',
        'cpu.user.time',
        ......
    ]
}

默认情况下,此新 API 仅供管理员使用。

另一种方法是扩展当前的 os-hypervisors API 扩展,该扩展列出有关计算节点虚拟机监控程序的所有信息。它从数据库中提取信息,但忽略与指标相关的信息。

我们需要修改 os-hypervisors API 扩展,通过以下 restful API 调用列出每个计算节点虚拟机监控程序的指标

GET /v2.1/os-hypervisors/{hypervisor_id}/metrics

上述 API 将查询数据库并返回为指定计算节点虚拟机监控程序存储在数据库中的指标。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

lianhao-lu

其他贡献者

工作项

  • 添加新的 nova-manage 命令

依赖项

测试

将添加新的单元测试用例。

文档影响

需要更新管理员配置文档。

参考资料