跳转至

通过 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

添加函数分类

编写完成后,必须为函数添加分类标签,否则该函数不会出现在健康度配置的选择列表中。

分类标签固定为:

category='dataPlatform.entityHealthFunc'

发布函数

代码编写完成后,点击发布。未发布的函数不会在健康度配置中展示。

在健康度配置中使用

发布成功后,进入统一目录 > 管理实体类型,点击 system 类型行的“健康度配置”,选择“自定义函数”。

此时下拉列表中将展示所有已发布且分类为 dataPlatform.entityHealthFunc 的函数,选择您创建的函数并保存即可生效。

常见问题

为什么我的函数没有出现在健康度配置的下拉列表中?

请检查以下三点:

  1. 函数是否已发布;
  2. 是否添加了 category='dataPlatform.entityHealthFunc' 分类;
  3. 函数是否通过 @DFF.API 装饰器正确注册。

函数执行失败会怎样?

平台会对函数输出进行校验。若输出格式不符合要求或执行异常,该系统的健康度将显示为“未知”。

函数内部可以使用哪些数据?

函数内部可通过 DQL 查询指标、日志、事件等数据,也可读取 entity 的组成实体信息。具体查询方式请参考 Func 平台文档

文档评价

文档内容是否对您有帮助? ×