PM 接口中的支持阈值资源¶
https://blueprints.launchpad.net/tacker/+spec/support-auto-lcm
问题描述¶
本规范提供了“阈值”资源的实现,以支持使用外部监控工具(如 Prometheus [4])的性能管理接口。Tacker Zed 版本已支持 ETSI NFV-SOL 002 v3.3.1 [1] 和 ETSI NFV-SOL 003 v3.3.1 [2] 基于的故障管理和性能管理接口,但是,Tacker 中尚未为性能管理接口实现阈值资源。Tacker 需要支持阈值资源,以提高 ETSI NFV 标准的合规性和功能性。
- 表格:性能管理接口的操作和 Tacker 支持状态
PM 接口的操作
在 (Zed) 中支持
在 (Antelope) 中支持
创建 PM 作业
是
是
查询 PM 作业
是
是
读取单个 PM 作业
是
是
更新 PM 作业回调
是
是
删除 PM 作业
是
是
读取单个性能报告
是
是
创建阈值
否
是
查询阈值
否
是
读取单个阈值
否
是
更新阈值回调
否
是
删除阈值
否
是
通知 PM 相关事件
仅提供性能信息
同时提供性能信息和阈值越界
测试通知端点
仅 PM 作业
同时支持 PM 作业和阈值
提议的变更¶
需要进行以下更改
为 SOL002/003 中指定的性能管理接口添加支持阈值资源。
在 VNF 性能管理接口中添加阈值资源
创建和更新阈值
POST /vnfpm/v2/thresholds 以创建阈值。
PATCH /vnfpm/v2/thresholds/{thresholdId} 以更新指定的阈值回调。
获取阈值
GET /vnfpm/v2/thresholds 以获取所有阈值。
GET /vnfpm/v2/thresholds/{thresholdId} 以获取指定的阈值。
删除阈值
DELETE /vnfpm/v2/thresholds/{thresholdId} 以删除指定的阈值。
增强对客户端的通知
POST <Client URI for notifications> 以通知客户端 Tacker 收到与 PM 阈值相关的事件。
GET <Client URI from subscriptions> 确认客户端的 URI 正确。
添加 Tacker 与外部监控工具之间通信的 RESTful API 支持
POST /pm_threshold 以接收来自外部监控工具发送的 PM 阈值事件。
为 PM 阈值创建一个新的 DB 表。
注意
外部监控工具是一种监控服务,不包含在 Tacker 中。运营商实施外部监控工具。外部监控工具使用指标服务,例如 Prometheus,并使用 Prometheus 插件接口 [3] 通知 PM 事件。
基于 PM 阈值事件触发的自动伸缩¶
Tacker 在元数据中具有一个配置值,指示警报管理器的 URI。Prometheus 插件在创建 PM 阈值时将 PM 阈值模式转换为 Prometheus 模式。
当外部监控工具检测到 CNF 存在一些 PM 阈值事件时,它会将事件消息发送到 Tacker。在 Tacker 接收到事件后,它会将事件转换为存储在 DB 中。
PM 阈值中缩放操作的设计¶
以下是缩放的示意图
+------------------------+
| | 9. Send threshold notification
| Client (NFVO/EM) <-------------------+
| | |
+--+---------+-----------+ |
| | 1. Create threshold |
10. Scale | | |
+------|---------|-------------------------------|----------------------------+
| | | | VNFM |
| +---|---------|---------+ +-------------------|-------------+ |
| | | | Tacker | | | Tacker | |
| | | | Server | | | Conductor | |
| | | +-------v------+ | | | | +--------+ |
| | | | VnfPm +------------------------+-----------------> Tacker | |
| | | | ControllerV2 | | | +---------+----+ | | DB | |
+----------------+ | | | +---------+----+ | | +------> VnfPm +------------> | |
| External | | | | 2. Set | | | | | DriverV2 | | +--------+ |
| Monitoring | 5. POST | | | threshold | | | | +--------------+ | |
| Tool | event | | | +-------v----+ | | | 8. Create threshold | |
| (based on +---------------------> Prometheus +-------+ notification | |
| Prometheus) <---------------------+ Plugin | | | | |
| | 6. Get related data +------------+ | | | |
| | | | | 7.Evaluate | | | |
+--+-------------+ 3. Set | | | threshold | | | |
^ threshold | | | crossing | | | |
| 4. Trigger event | | | +------------+ | | +--------------+ | |
| | | +---> Vnflcm +--------------> VmfLcmDriver +---+ | |
| | | | Controller | | | +--------------+ | | |
| | | +------------+ | | +---------v--+ | |
| | | | | | Infra | | |
| | | | | | Driver | | |
| | | | | +----+-------+ | |
| | +-----------------------+ +-----------------------|---------+ |
| +----------------------------------------------------|------------------------+
| |
| +----------------------------------------------------|------------+
| | CISM/CIS | |
| | +---------------+-----------------+ |
| | | | 11. Create or Delete |
| | | | CNF |
| | +--------v----+ +------v------+ +-------------+ |
| | | +--------+ | | +--------+ | | | |
+----------------------------------> | CNF | | | | CNF | | | | |
| | +--------+ | | +--------+ | | | |
| | Worker | | Worker | | Master | |
| +-------------+ +-------------+ +-------------+ |
+-----------------------------------------------------------------+
客户端向 Tacker 发送请求以创建阈值。
VnfPmControllerV2 将阈值信息发送到 Prometheus 插件。
Prometheus 插件将阈值设置为外部监控工具。
外部监控工具收集指标并触发事件。
外部监控工具向具有指定 URI 的 Tacker 发送 POST 请求。
Tacker 收集与 PM 事件相关的数据。从步骤 4-5 获得的数据中,确定与阈值越界相对应的数值和上下文。Prometheus 插件还会更新 DB 中的相应资源。
Prometheus 插件评估事件。如果存在可以成功匹配的阈值越界条件,则将事件发送到客户端的指定路径。如果评估不成功,则处理结束。
VnfPmDriverV2 创建阈值通知并将阈值信息保存到 DB。
VnfPmDriverV2 将阈值通知发送到客户端。
客户端请求通知的上下文,然后做出缩放决策。
触发缩放操作,在缩放时创建新的 CNF,或在缩减时删除旧的 CNF。
PM 阈值操作的请求参数¶
API 详细信息在 REST API 影响 中描述。
PM 阈值操作的序列¶
以下序列图描述了客户端通过 PM 阈值自动缩放 Tacker 的处理流程。
客户端向 Tacker 发送请求以创建阈值。在 Tacker 接收到阈值后,它将获取其中的 callback_uri。为了验证 callback_uri 的正确性,Tacker 会向客户端的 callback_uri 地址发送请求。在从客户端获得正常的响应 HTTP 204 No Content 后,Tacker 会将订阅保存到 DB。
Tacker 将阈值发送到 Prometheus 插件。Prometheus 插件将其转换为 Prometheus 格式,然后将其发送到外部监控工具。Tacker 将阈值保存到 DB 并向客户端响应 HTTP 201 Created。
外部监控工具接收到来自 Prometheus 发送的事件并告知事件到指定的 URI(Tacker)。
Prometheus 插件从 cfg.CONF.tacker.prometheus_plugin 获取值以确定是否启用此功能。Prometheus 插件根据事件中标签的 function_type 字段判断执行什么处理。当
labels.function_type为vnfpm时,执行自动缩放。Prometheus 插件根据事件中节点标签的值找到相应的资源信息。
Prometheus 插件评估阈值越界条件,如果未匹配,则处理结束。
Prometheus 插件执行 VnfPmDriverV2。
VnfPmDriverV2 向客户端的 callback_uri 地址发送通知阈值事件请求。在客户端接收到请求并处理后,默认返回 HTTP 204 No Content。
客户端从通知中获取 VNFC 信息。
客户端向 Tacker 发送请求以缩放 VNFC。
从这一步开始,与默认缩放操作完全相同。
备选方案¶
无
数据模型影响¶
在 ‘Tacker’ 数据库中添加以下新数据库表。
- 表格:ThresholdV2
名称
类型
约束
id
varchar(255)
Pri
objectType
varchar(32)
NOT NULL
objectInstanceId
varchar(255)
NOT NULL
subObjectInstanceIds
JSON
NULL
criteria
JSON
NOT NULL
callbackUri
varchar(255)
NOT NULL
authentication
JSON
NULL
metadata
JSON
NOT NULL
此表具有 id 作为主键。
REST API 影响¶
以下 RESTful API 符合 SOL002/003 [1] [2] 6.VNF 性能管理接口。
- 名称:创建阈值描述:创建阈值。阈值分组性能信息的详细信息方法类型: POST资源的 URL:/vnfpm/v2/thresholds请求:
数据类型
基数
描述
CreateThresholdRequest
1
阈值创建请求
属性名称 (CreateThresholdRequest)
数据类型
基数
描述
objectType
字符串
1
要测量对象的类型。适用于测量的对象类型在 ETSI GS NFV-IFA 027 的 7.2 条中定义 [6]。
objectInstanceId
标识符
1
与此阈值关联的被测量对象实例的标识符。
subObjectInstanceIds
IdentifierInVnf
0..N
在结构化被测量对象的情况下,被测量对象实例的标识符。
criteria
ThresholdCriteria
1
定义此阈值的标准。
>performanceMetric
字符串
1
这定义了与阈值关联的性能指标的类型。有效值在 ETSI GS NFV-IFA 027 的 7.2 条中指定为“测量名称”值 [6]。
>thresholdType
Enum
1
阈值的类型。此属性确定数据结构中存在哪些其他属性。在 ETSI NFV-SOL 002 v3.3.1 [1] 和 ETSI NFV-SOL 003 v3.3.1 [2] 中,允许“SIMPLE:单值静态阈值”。
>simpleThresholdDetails
结构
0..1
简单阈值的详细信息。如果 thresholdType=”SIMPLE”,则必须存在。
>>thresholdValue
数字
1
阈值。必须表示为浮点数。
>>hysteresis
数字
1
阈值的滞后。必须表示为非负浮点数。
callbackUri
Uri
1
用于发送通知的端点的 URI。
authentication
SubscriptionAuthentication
0..1
配置使用授权进行通知时,需要身份验证参数。参见 ETSI GS NFV-SOL 013 的 8.3.4 条 [5]。
metadata
结构
1
创建阈值的附加参数(Tacker 原始属性)
>monitoring
结构
1
处理方式,例如监控系统和驱动程序信息。
>>monitorName
字符串
1
如果指定“prometheus”,则监控功能的后端为 Prometheus。
>>driverType
字符串
1
“external”:SCP/SFTP 用于配置文件传输。
>>targetsInfo
结构
1..N
目标监控系统的信息。
>>>prometheusHost
字符串
1
目标 PrometheusServer 的 FQDN 或 IP 地址。
>>>prometheusHostPort
Int
1
目标 PrometheusServer 的 ssh 端口。
>>>alertRuleConfigPath
字符串
1
目标 Prometheus 的 alertRuleConfig 路径。
>>>prometheusReloadApiEndpoint
字符串
1
目标 Prometheus 的重新加载 API 的端点 URL。
>>>authInfo
结构
1
定义访问主机的身份验证信息。
>>>>ssh_username
字符串
1
目标主机用于 ssh 的用户名。
>>>>ssh_password
字符串
1
目标主机用于 ssh 的密码。
响应:数据类型
基数
响应代码
描述
阈值
1
成功: 201
应在成功创建阈值时返回。
ProblemDetails
1
错误: 422
有效负载体的内容类型受支持,并且请求的有效负载体包含语法上正确的数据,但无法处理该数据。
ProblemDetails
参见 [5] 的 6.4 条
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的 6.4 条中定义的任何常见错误响应代码 [5]。
属性名称 (Threshold)
数据类型
基数
描述
id
标识符
1
此阈值的标识符。
objectType
字符串
1
要测量对象的类型。适用于测量的对象类型在 ETSI GS NFV-IFA 027 的 7.2 条中定义 [6]。
objectInstanceId
标识符
1
与此阈值关联的被测量对象实例的标识符。
subObjectInstanceIds
IdentifierInVnf
0..N
在结构化被测量对象的情况下,被测量对象实例的标识符。
criteria
ThresholdCriteria
1
定义此阈值的标准。
>performanceMetric
字符串
1
这定义了与阈值关联的性能指标的类型。有效值在 ETSI GS NFV-IFA 027 的 7.2 条中指定为“测量名称”值 [6]。
>thresholdType
Enum
1
阈值的类型。此属性确定数据结构中存在哪些其他属性。在 ETSI NFV-SOL 002 v3.3.1 [1] 和 ETSI NFV-SOL 003 v3.3.1 [2] 中,允许“SIMPLE:单值静态阈值”。
>simpleThresholdDetails
结构
0..1
简单阈值的详细信息。如果 thresholdType=”SIMPLE”,则必须存在。
>>thresholdValue
数字
1
阈值。必须表示为浮点数。
>>hysteresis
数字
1
阈值的滞后。必须表示为非负浮点数。
callbackUri
Uri
1
用于发送通知的端点的 URI。
_links
结构
1
此资源的链接。
>self
链接
1
此资源的 URI。
>object
链接
0..1
链接到表示收集性能信息的被测量对象实例的资源。如果被测量对象实例信息可以作为资源访问,则必须存在。
注意
在处理创建阈值的请求时,应通过覆盖该值或拒绝该请求来强制执行此属性的适当最小值。
注意
“滞后”基于 thresholdType,“单值静态阈值”实现。如果被测量值达到或超过“thresholdValue”+“hysteresis”,则将生成方向为“UP”的通知。如果被测量值达到或低于“thresholdValue” - “hysteresis”,则将生成方向为“DOWN”的通知。这些方法需要在 Tacker DB 中存储先前的值以检测越界方向。
- 名称:查询阈值描述:允许用户根据请求中的查询参数过滤阈值方法类型: GET资源的 URL:/vnfpm/v2/thresholds查询参数:
名称
基数
描述
filter
0..1
基于属性的过滤表达式。根据 ETSI GS NFV-SOL 013 的 5.2 条 [5]。
例如,以下 URI 查询参数将匹配 objectType=VNFC 的阈值。
GET /vnfpm/v2/thresholds?filter=(eq,objectType,VNFC)nextpage_opaque_marker
0..1
标记以获取分页响应的下一页。根据 ETSI GS NFV-SOL 013 的 5.4 条 [5]。
请求:数据类型
基数
描述
n/a
响应:数据类型
基数
响应代码
描述
阈值
0..N
成功: 200
应在成功查询零个或多个阈值的信息时返回。
ProblemDetails
1
错误: 400
无效的基于属性的过滤表达式。响应主体应包含 ProblemDetails 结构,其中“detail”属性应传达有关错误的更多信息。
ProblemDetails
1
错误: 400
响应过大。
ProblemDetails
参见 [5] 的 6.4 条
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的 6.4 条中定义的任何常见错误响应代码 [5]。
属性名称 (Threshold)
数据类型
基数
描述
id
标识符
1
此阈值的标识符。
objectType
字符串
1
要测量对象的类型。适用于测量的对象类型在 ETSI GS NFV-IFA 027 的 7.2 条中定义 [6]。
objectInstanceId
标识符
1
与此阈值关联的被测量对象实例的标识符。
subObjectInstanceIds
IdentifierInVnf
0..N
在结构化被测量对象的情况下,被测量对象实例的标识符。
criteria
ThresholdCriteria
1
定义此阈值的标准。
>performanceMetric
字符串
1
这定义了与阈值关联的性能指标类型。有效值如ETSI GS NFV-IFA 027 第 7.2 条中指定的“测量名称”值。[6]。
>thresholdType
Enum
1
阈值的类型。此属性决定数据结构中存在哪些其他属性。在 ETSI NFV-SOL 002 v3.3.1 [1] 和 ETSI NFV-SOL 003 v3.3.1 [2] 中,允许使用“SIMPLE: 单值静态阈值”。
>simpleThresholdDetails
结构
0..1
简单阈值的详细信息。如果 thresholdType=”SIMPLE”,则必须存在。
>>thresholdValue
数字
1
阈值。必须表示为浮点数。
>>hysteresis
数字
1
阈值的滞后。必须表示为非负浮点数。
callbackUri
Uri
1
用于发送通知的端点的 URI。
_links
结构
1
此资源的链接。
>self
链接
1
此资源的 URI。
>object
链接
0..1
链接到表示收集性能信息的被测量对象实例的资源。如果被测量对象实例信息可以作为资源访问,则必须存在。
- 名称:读取单个阈值描述:获取单个阈值方法类型: GET资源的 URL:/vnfpm/v2/thresholds/{thresholdId}路径参数:
名称
基数
描述
thresholdId
1
阈值 ID。
请求:数据类型
基数
描述
n/a
响应:数据类型
基数
响应代码
描述
阈值
1
成功: 200
当成功读取单个阈值的信息时,应返回此信息。
ProblemDetails
请参阅 [5] 的第 6.4 条。
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的第 6.4 条中定义的任何常见错误响应代码 [5]。
属性名称 (Threshold)
数据类型
基数
描述
id
标识符
1
此阈值的标识符。
objectType
字符串
1
被测量对象的类型。测量的适用被测量对象类型在 ETSI GS NFV-IFA 027 的第 7.2 条中定义。[6]。
objectInstanceId
标识符
1
用于收集性能信息的被测量对象实例的标识符。
subObjectInstanceIds
IdentifierInVnf
0..N
在结构化被测量对象的情况下,被测量对象实例的标识符。
criteria
ThresholdCriteria
1
定义此阈值的标准。
>performanceMetric
字符串
1
这定义了与阈值关联的性能指标类型。有效值如ETSI GS NFV-IFA 027 第 7.2 条中指定的“测量名称”值。[6]。
>thresholdType
Enum
1
阈值的类型。此属性决定数据结构中存在哪些其他属性。在 ETSI NFV-SOL 002 v3.3.1 [1] 和 ETSI NFV-SOL 003 v3.3.1 [2] 中,允许使用“SIMPLE: 单值静态阈值”。
>simpleThresholdDetails
结构
0..1
简单阈值的详细信息。如果 thresholdType=”SIMPLE”,则必须存在。
>>thresholdValue
数字
1
阈值。必须表示为浮点数。
>>hysteresis
数字
1
阈值的滞后。必须表示为非负浮点数。
callbackUri
Uri
1
用于发送通知的端点的 URI。
_links
结构
1
此资源的链接。
>self
链接
1
此资源的 URI。
>object
链接
0..1
链接到表示收集性能信息的被测量对象实例的资源。如果被测量对象实例信息可以作为资源访问,则必须存在。
- 名称:更新阈值回调描述:修改单个阈值的资源方法类型: PATCH资源的 URL:/vnfpm/v2/thresholds/{thresholdId}Content-Type:application/mergepatch+json路径参数:
名称
基数
描述
thresholdId
1
阈值 ID。
请求:数据类型
基数
描述
ThresholdModifications
1
阈值修改的参数。
属性名称 (ThresholdModifications)
数据类型
基数
描述
callbackUri
Uri
0..1
“callbackUri”属性的新值。不允许使用值“null”。
authentication
SubscriptionAuthentication
0..1
“authentication”属性的新值,或“null”以删除该属性。如果存在于请求体中,这些修改应根据 JSON Merge Patch 的规则应用。
响应:数据类型
基数
响应代码
描述
ThresholdModifications
1
成功: 200
当请求已成功处理时,应返回此信息。
ProblemDetails
1
422
有效负载体的内容类型受支持,并且请求的有效负载体包含语法上正确的数据,但无法处理该数据。
ProblemDetails
请参阅 [5] 的第 6.4 条。
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的第 6.4 条中定义的任何常见错误响应代码 [5]。
注意
由于当前的 Tacker 不支持 http Etag,因此不支持错误代码:412 前置条件失败。根据 ETSI NFV SOL 文档,尚未定义 Etag 的 API 请求/响应规范,并且使用 Etag 的事务尚未通过标准化定义。在 ETSI NFV 规范定义相关事务后,Tacker 将支持 Etag。
属性名称 (ThresholdModifications)
数据类型
基数
描述
callbackUri
Uri
0..1
“callbackUri”属性的新值。不允许使用值“null”。
响应体中不应存在 authentication 参数。
- 名称:删除阈值描述:在 Tacker 中删除阈值方法类型:DELETE资源的 URL:/vnfpm/v2/thresholds/{thresholdId}路径参数:
名称
基数
描述
thresholdId
1
阈值 ID。
请求:数据类型
基数
描述
n/a
响应:数据类型
基数
响应代码
描述
n/a
成功:204
当阈值已成功删除时,应返回此信息。
ProblemDetails
请参阅 [5] 的第 6.4 条。
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的第 6.4 条中定义的任何常见错误响应代码 [5]。
- 名称:通知 PM 相关事件描述:传递有关阈值交叉事件的通知。方法类型: POST资源的 URL:<Client URI for notifications>请求:
数据类型
基数
描述
ThresholdCrossedNotification
1
阈值交叉通知
属性名称 (ThresholdCrossedNotification)
数据类型
基数
描述
id
标识符
1
此通知的标识符。如果由于多次订阅而多次发送通知,则所有这些通知的“id”属性应具有相同的值。
notificationType
字符串
1
不同通知类型的区分符。对于此通知类型,应设置为“ThresholdCrossedNotification”。
timeStamp
DateTime
1
生成通知的日期和时间。
thresholdId
标识符
1
已交叉阈值的阈值标识符。
crossingDirection
CrossingDirectionType
1
指示阈值是向上还是向下交叉。
objectType
字符串
1
被测量对象的类型。测量的适用被测量对象类型在 ETSI GS NFV-IFA 027 的第 7.2 条中定义。[6]。
objectInstanceId
标识符
1
根据 ETSI GS NFV-IFA 027 的第 6.2 条,用于收集性能信息的被测量对象实例的标识符。[6]。
subObjectInstanceId
IdentifierInVnf
0..1
被测量对象实例的子对象实例的标识符,用于收集性能测量。如果相关的阈值设置为仅测量被测量对象实例的所有子对象实例的子集,并且在 ETSI GS NFV-IFA 027 的第 6.2 条中定义了子对象,则应存在此信息。否则,应不存在此信息。
performanceMetric
字符串
1
收集的指标名称。此属性应包含 ETSI GS NFV-IFA 027 的第 7.2 条中定义的相关的“测量名称”值。[6]。
performanceValue
(任何类型)
1
导致阈值交叉的指标值。此属性应包含 ETSI GS NFV-IFA 027 的第 7.2 条中定义的相关的“测量名称”值。[6]。与测量值相关的测量上下文信息。适用的密钥集由 ETSI GS NFV-IFA 027 的第 7.2 条中相关“测量上下文”中针对每个测量定义的。
context
KeyValuePairs
0..1
与测量值相关的测量上下文信息。适用的密钥集由 ETSI GS NFV-IFA 027 的第 7.2 条中相关“测量上下文”中针对每个测量定义的。[6]。
_links
结构
1
与此通知相关的资源的链接。
>objectInstance
NotificationLink
0..1
指向表示应用通知的被测量对象实例的资源的链接。如果被测量对象实例信息可以作为资源访问,则应存在此信息。
>threshold
NotificationLink
1
指向表示已交叉阈值的资源的链接。
响应:数据类型
基数
响应代码
描述
n/a
成功:204
当通知已成功传递时,应返回此信息。
ProblemDetails
请参阅 [5] 的第 6.4 条。
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的第 6.4 条中定义的任何常见错误响应代码 [5]。
- 名称:测试通知端点描述:确认客户端的 URI 是否正确。方法类型: GET资源的 URL:<Client URI for notifications>请求:
数据类型
基数
描述
n/a
响应:数据类型
基数
响应代码
描述
n/a
成功:204
应返回此信息,以指示已成功测试通知端点。
ProblemDetails
请参阅 [5] 的第 6.4 条。
错误: 4xx/5xx
除了上述响应代码外,还可以返回 ETSI GS NFV-SOL 013 的第 6.4 条中定义的任何常见错误响应代码 [5]。
以下 RESTful API 是 Tacker 特定的接口,用于 Tacker 和外部监控工具之间的 PM 阈值。
- 名称:发送 PM 阈值事件描述:接收来自外部监控工具发送的 PM 阈值事件方法类型: POST资源的 URL:/pm_threshold请求:
数据类型
基数
描述
ThresholdEvent
1
来自外部监控工具发送的 PM 阈值事件
属性名称 (ThresholdEvent)
数据类型
基数
描述
alerts
结构
1..N
此组中所有警报对象的列表。
>status
字符串
1
定义警报是 resolved 还是当前 firing。
>labels
结构
1
要附加到警报的一组标签。
>>receiver_type
字符串
1
接收器类型:tacker
>>function_type
字符串
1
函数类型:vnfpm-threshold
>>threshold_id
标识符
1
PM 阈值的标识符
>>object_instance_id
标识符
1
报告性能指标的被测量对象实例的标识符。
>>sub_object_instance_id
标识符
0..1
报告性能指标的被测量对象子实例的标识符。
>annotations
结构
1
警报的一组注释。
>>value
(任何类型)
0..1
收集的指标值。
>startsAt
DateTime
1
警报开始触发的时间。
>endsAt
DateTime
0..1
警报的结束时间。
>fingerprint
字符串
1
可用于标识警报的指纹。
安全影响¶
无
通知影响¶
- 性能管理
Tacker 向 NFVO 或 EM 发送 POST <Client URI for notifications>,以通知客户端 Tacker 收到与 PM 阈值相关的事件。
Tacker 向 NFVO 或 EM 发送 GET <Client URI for notifications>,以确认客户端的 URI 是否正确。
Tacker 创建与 PM 阈值请求相关的 prometheus 规则文件,并使用 SSH 上传这些文件。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Yuta Kazato <yuta.kazato.nw@hco.ntt.co.jp>
Kenta Fukaya <kenta.fukaya.xv@hco.ntt.co.jp>
- 其他贡献者
Koji Shimizu <shimizu.koji@fujitsu.com>
Yoshiyuki Katada <katada.yoshiyuk@fujitsu.com>
工作项¶
实现 Tacker 以支持
性能管理接口
添加新的 Rest API
POST /vnfpm/v2/thresholds以创建阈值。添加新的 Rest API
GET /vnfpm/v2/thresholds以获取所有阈值。添加新的 Rest API
GET /vnfpm/v2/thresholds/{thresholdId}以获取指定的阈值。添加新的 Rest API
PATCH /vnfpm/v2/thresholds/{thresholdId}以更新目标阈值回调。添加新的 Rest API
DELETE /vnfpm/v2/thresholds/{thresholdId}以删除指定的阈值。添加新的请求
POST <Client URI for notifications>以通知客户端 Tacker 收到阈值警报。添加新的请求
GET <Client URI for notifications>以确认客户端的 URI 是否正确。
外部监控接口
添加新的 Rest API
POST /pm_threshold以接收来自外部监控工具发送的 PM 阈值事件。
添加新的单元和功能测试。
依赖项¶
无。
测试¶
将添加单元和功能测试,以涵盖规范所需的用例。
文档影响¶
在 Tacker 用户指南中添加阈值检查。
更新 REST API 影响 中提到的 API 添加项的 API 文档。