声明式 SNMP 指标¶
https://blueprints.launchpad.net/ceilometer/+spec/declarative-snmp-metrics
此蓝图旨在添加一种机制,以便我们可以以声明式的方式添加新的 SNMP 指标,而不是为新的轮询器编写新的源代码。
问题描述¶
目前,我们使用通用的 SNMP 硬件检查器和一个 Python 字典,该字典定义了 SNMP OID/操作与调用者想要指标值的映射关系(有关该映射关系的描述,请参见以下链接)。
https://github.com/openstack/ceilometer/blob/stable/kilo/ceilometer/hardware/inspector/snmp.py#L112
在通用的 SNMP 检查器的基础上,我们仍然有单独的硬件轮询器执行诸如在 Sample 对象中设置多个字段之类的操作。添加一打新的指标是可以的。但是,如果想添加数百个新的 SNMP 指标,我们需要以声明式的方式进行,而不是为每个新的 SNMP 指标添加新的轮询器代码。
提议的变更¶
在保持当前 SNMP 相关 hardware.* 轮询器不变以保持向后兼容性的同时,我们将添加一个新的通用 SNMP 轮询器,它可以根据用户请求返回不同类型的 SNMP 相关指标。
此通用 SNMP 轮询器将从 YAML 定义文件加载定义,该文件定义了用于调用通用 SNMP 检查器的参数,以及轮询器返回的最终 Sample 对象中的其他字段,例如名称/单位/类型。但是,resource_id/user_id/project_id 仍然会从发现返回的资源中读取,就像我们今天所做的那样。
YAML 定义可能如下所示
---
- counter_name: hardware.cpu.load.15min
unit: process
type: gauge
snmp_inspector:
matching_type: type_exact,
oid: "1.3.6.1.4.1.2021.10.1.3.1",
type: float
metadata: { }
post_op:
- counter_name: hardware.network.incoming.bytes
unit: B
type: cumulative
snmp_inspector:
matching_type: type_prefix
metric_oid: "1.3.6.1.2.1.2.2.1.10"
metadata: {
name: {
oid: "1.3.6.1.2.1.2.2.1.2",
type: "str",
},
speed: {
oid: "1.3.6.1.2.1.2.2.1.5",
type: "lambda x: int(x) / 8",
},
}
post_op: "_post_op_net"
有关定义中 snmp_inspector 字典的详细说明,请参见以下链接
https://github.com/openstack/ceilometer/blob/stable/kilo/ceilometer/hardware/inspector/snmp.py#L112
添加新的 SNMP 指标时,我们只需要将新的定义添加到 YAML 定义中即可。无需编写新代码。
由于新的通用 SNMP 轮询器可以返回多种不同类型的计量器,它将给当前的轮询代理实现带来以下变化
1. 目前,由于计量器轮询器插件与一个计量器的映射关系,在确定给定管道是否需要轮询器时,我们使用轮询器插件的入口点名称。这将被更改。我们将添加一个新的辅助函数,该函数可以返回轮询器可以返回的所有计量器,并在上述过程中使用该辅助函数来确定给定管道是否需要轮询器。
2. 在调用轮询器插件获取样本时,我们将把管道定义作为新的参数传递给 get_samples() 调用。因此,轮询器不必返回所有样本,而只能返回管道源请求的内容。
替代方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
Pipeline 影响¶
管理员配置管道 YAML 文件的方式没有变化。
其他最终用户影响¶
无
性能/可扩展性影响¶
无
其他部署影响¶
需要在运行轮询代理的系统上部署一个新的 YAML 定义文件。
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
<lianhao-lu>
- 持续维护者
<lianhao-lu>
工作项¶
增强管道以支持新的源定义
实现通用的 SNMP 轮询器及其 YAML 定义文件
未来生命周期¶
由 <lianhao-lu> 维护
依赖项¶
N/A
测试¶
功能测试应在 Intel Hradware-Meters CI 的第三方 CI 中覆盖。
文档影响¶
需要更新 openstack-manual 管理手册,说明管道定义的变化。
参考资料¶
N/A