Search Alert Rule


查询告警规则。

请求格式

POST https://{apigw-address}/event-service/v2.1/alert-rules?action=search

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
orgId Query 必需 String 资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

名称 必需/可选 数据类型 描述
modelId 可选 String 告警规则适用的模型
measurepointId 可选 String 资产测点。如何获取测点(pointId)信息>>
expression 可选 String

查询表达式,支持类 SQL 的查询。目前支持的逻辑运算是 and 和 or,查询的字段和对应的运算符清单如下。

  • ruleIdmodelId: = 和 in
  • measurepointIddeviceStatus: is null、= 和 in
  • tags.*: =

字段描述参见 AlertRule 结构体

如何使用查询表达式>>

pagination 可选 Pagination 请求结构体 分页的参数。如未指定,默认每页 10 条。每页最大记录数为 1000 条,但为获得最佳性能,建议每页不超过 50 条。支持使用 sorters ,根据 ruleIdmodelIdmeasurepointIddeviceStatusorgId 进行排序。字段描述参见 AlertRule 结构体Pagination 请求结构体>>

响应参数

名称 数据类型 描述
data AlertRule 结构体 告警规则,AlertRule 结构体

AlertRule 结构体

名称 数据类型 描述
orgId String 规则所属的组织 ID。
ruleId String 告警规则编号。
ruleDesc StringI18n 国际化告警描述。
modelId String 规则适用的模型。
measurepointId String 资产测点
deviceStatus String 设备状态。
condition String 类查询表达式。如“${temperature} = 19”表示“测点 temperature 的值等于 19”。使用“/”表达层级关系,如“${pointA/att1} = 18”表示“测点 A 的 att1 属性值为 18”。目前只支持最多向下一层。
isEnabled Boolean 是否启用。
severityId String 告警级别编号。
severityDesc StringI18n 国际化告警级别描述。
contentId String 告警内容编号。
contentDesc StringI18n 国际化告警级别描述。
typeId String 告警类型
typeDesc StringI18n 告警类型描述。
tags Map 规则标签。
isRoot Boolean 是否是根源告警。
scope AssetNode 结构体 告警规则的作用域。以资产树上的节点来表示。见 AssetNode 结构体
triggeringDelayTimer Integer 延后告警触发时间。单位为秒,范围 [60 - 10800]。当发生匹配告警规则的异常状况,且该状况在所设定的时间内仍未恢复正常时,系统才会产生告警。当为0时表示立即触发告警。

AssetNode 结构体

名称 必需/可选 数据类型 描述
treeId 必需 String 资产树 ID。若为“all”,则这是一个特殊节点,代表组织下的全局。
assetId 必需 String 资产ID。

示例

请求示例

url: https://{apigw-address}/event-service/v2.1/alert-rules?action=search&orgId=yourOrgId
method: POST
requestBody:
{
    "modelId": "EnOS_Solar_CombinerBox",
    "measurepointId": "CBX.BranchStateAttr"
}

返回示例

{
    "pagination": {
        "pageNo": 1,
        "pageSize": 10,
        "totalSize": 2,
        "sortedBy": [{
            "field": "update_time",
            "order": "DESC"
        }]
    },
    "code": 0,
    "msg": "OK",
    "requestId": "a9689b9f-0cb6-4e47-a41c-bd459b687309",
    "data": [{
        "orgId": "yourOrgId",
        "ruleId": "zh_model_struct",
        "ruleDesc": {
            "defaultValue": "Grid is connected from converter",
            "i18nValue": {
                "en_US": "Grid is connected from converter",
                "zh_CN": "电网由变频器连接"
            }
        },
        "modelId": "zh_model",
        "measurepointId": "aa",
        "condition": "aa = 18",
        "isEnabled": true,
        "severityId": "WARN",
        "severityDesc": {
            "defaultValue": "WARN"
        },
        "contentId": "planetTemperature",
        "contentDesc": {
            "defaultValue": "连接"
        },
        "typeId": "warning_Type",
        "typeDesc": {
            "defaultValue": "connected"
        },
        "tags": {
            "key1": "v1"
        },
        "isRoot": false,
        "scope": [{
            "treeId": "ptde66nd",
            "assetId": "FbFy8qyz"
        }]
    },{
        "orgId": "yourOrgId",
        "ruleId": "zh_model_struct2",
        "ruleDesc": {
            "defaultValue": "Grid is connected from converter",
            "i18nValue": {
                "en_US": "Grid is connected from converter",
                "zh_CN": "电网由变频器连接"
            }
        },
        "modelId": "zh_model",
        "measurepointId": "aa",
        "condition": "aa = 18",
        "isEnabled": true,
        "severityId": "WARN",
        "severityDesc": {
            "defaultValue": "WARN"
        },
        "contentId": "planetTemperature",
        "contentDesc": {
            "defaultValue": "连接"
        },
        "typeId": "warning_Type",
        "typeDesc": {
            "defaultValue": "connected"
        },
        "tags": {
            "key1": "v1"
        },
        "isRoot": false,
        "scope": [{
            "treeId": "ptde66nd",
            "assetId": "FbFy8qyz"
        }]
    }]
}

Java SDK 调用示例

public void testSearchAlertRule() {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    SearchAlertRuleRequest request = new SearchAlertRuleRequest();
    request.setOrgId(orgId);
    request.setExpression("deviceStatus = 'offline'");
    try {
        SearchAlertRuleResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url(url)
            .getResponse(request, SearchAlertRuleResponse.class);
        System.out.println(response);
    } catch (Exception e) {
        System.out.print(e);
    }
}