在 Hyper-V Inspector 中添加磁盘 IOPS 指标实现

https://blueprints.launchpad.net/ceilometer/+spec/hyper-v-disk-iops-metrics

I/O 请求之间的高延迟可能是问题的征兆。收集磁盘延迟指标可以帮助我们检测这些问题。Hyper-V Inspector 可以收集这些指标。

问题描述

目前,在检查磁盘指标时,Hyper-V Inspector 无法发布 read_requests 或 write_requests 的任何值,因为 Hyper-V 不支持这种类型的指标。相反,Hyper-V Inspector 可以收集磁盘 IOPS 指标,这将为用户提供一个有用的替代方案。

提议的变更

添加 DiskIOPSPollster 和 PerDeviceDiskIOPSPollster 轮询器,它们创建具有以下属性的样本:* name: ‘disk.iops’ * type: ‘gauge’ * unit: ‘count/second’

创建命名元组 DiskIOPSStats,包含字段 ‘iops_count’。

在 Inspector 中添加方法 ‘inspect_disk_iops’ 并将其在 HyperVInspector 中实现。该方法将返回一个 DiskIOPSStats 对象。

指标值将从 Hyper-V 虚拟机中获取,位于与虚拟机关联的 Msvm_AggregationMetricValue 对象(以下简称指标对象)中。指标对象的 ‘MetricDefinitionId’ 必须等于具有 Caption ‘Average Normalized Disk Throughput’ 的 Msvm_AggregationMetricDefinition 对象的 ‘Id’。

Hyper-V 磁盘指标是在 Windows / Hyper-V Server 2012 R2(内核版本 6.3)中引入的。它们在早期版本中不受支持。

替代方案

数据模型影响

REST API 影响

安全影响

Pipeline 影响

用户需要在 pipeline.yaml 中的 disk_source 源中添加指标 ‘disk.iops’,而不是 ‘disk.read.requests’ 和 ‘disk.write.requests’。

在 pipeline.yaml 中包含 ‘disk.read.requests’ 和 ‘disk.write.requests’ 没有效果,HyperVInspector 将为这些指标返回零,因为 Hyper-V 无法收集这些指标,因此需要 ‘disk.iops’ 指标。

其他最终用户影响

性能/可扩展性影响

其他部署影响

默认情况下,Nova 中启用了磁盘使用情况指标收集,我们只需要从 Hyper-V API 中收集数据即可。

开发者影响

实现

负责人

主要负责人

<cbelu@cloudbasesolutions.com>

工作项

  • 添加 DiskIOPSPollster 和 PerDeviceDiskIOPSPollster 轮询器

  • 在 DiskStats 中添加 ‘iops_count’。

  • 添加命名元组 ‘DiskIOPSStats’,包含字段 ‘iops_count’。

  • 在 Inspector 中添加方法 ‘inspect_disk_iops’ 并将其在 HyperVInspector 中实现。该方法将返回一个 DiskIOPSStats 对象。

  • 添加相关的单元测试。

  • 更新 ceilometer 测量文档。

未来生命周期

一旦此功能启用,需要在接下来的 2 个版本中进行测试和错误修复,以避免回归。

依赖项

测试

需要单元测试来测试新的轮询器以及 Hyper-V 侧的实现。

文档影响

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

参考资料