通过 Func 自定义健康度函数¶
观测云支持通过 Func 平台 自定义系统健康度的计算逻辑。您可以编写自己的函数,通过 DQL、组成实体、事件等数据自由计算健康度,替代平台默认算法。
编写函数脚本¶
在 Func 中新建函数脚本,函数名称可自定义,但需满足以下输入输出约束。
输入参数:
| 字段 | 是否必填 | 说明 |
|---|---|---|
entity |
是 | 当前要计算健康度的 system 实体对象,包含实体名称、类型、标签等基础信息 |
输出参数:
| 字段 | 是否必填 | 说明 |
|---|---|---|
health_status |
是 | 健康状态。固定值:healthy(正常)、warning(关注)、critical(严重)、unknown(未知) |
health_score |
是 | 0–100 分的健康分数。无法计算时返回 null |
函数示例:
'''
自定义健康度函数示例
说明:
1. 函数名称可自定义,输入参数必须包含 entity
2. entity 为当前要计算健康度的 system 实体对象
3. 函数内部可通过 DQL、components、events 等自由查询数据并计算
4. 输出必须包含 health_status 和 health_score
'''
@DFF.API('自定义系统健康度', category='dataPlatform.entityHealthFunc')
def myCustomHealth(entity):
# 基于 entity 查询组成实体、关联告警等数据
# 自定义计算逻辑...
result = {
'health_status': 'healthy',
'health_score': 95
}
return result
添加函数分类¶
编写完成后,必须为函数添加分类标签,否则该函数不会出现在健康度配置的选择列表中。
分类标签固定为:
发布函数¶
代码编写完成后,点击发布。未发布的函数不会在健康度配置中展示。
在健康度配置中使用¶
发布成功后,进入统一目录 > 管理实体类型,点击 system 类型行的“健康度配置”,选择“自定义函数”。
此时下拉列表中将展示所有已发布且分类为 dataPlatform.entityHealthFunc 的函数,选择您创建的函数并保存即可生效。
常见问题¶
为什么我的函数没有出现在健康度配置的下拉列表中?
请检查以下三点:
- 函数是否已发布;
- 是否添加了
category='dataPlatform.entityHealthFunc'分类; - 函数是否通过
@DFF.API装饰器正确注册。
函数执行失败会怎样?
平台会对函数输出进行校验。若输出格式不符合要求或执行异常,该系统的健康度将显示为“未知”。
函数内部可以使用哪些数据?
函数内部可通过 DQL 查询指标、日志、事件等数据,也可读取 entity 的组成实体信息。具体查询方式请参考 Func 平台文档。