Create Alert Rule


创建一条告警规则。

约束条件

  • 模型 ID(modelId)在组织下可用

  • 测点(measurepointId)有效

  • 告警级别(severityId)已创建

  • 告警内容(contentId)已创建

  • 查询范围(scope)中的作用域的节点已创建

请求格式

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

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

备注

以下非必须字段中,必须提供 measurepointIddeviceStatus 作为告警触发条件。

名称

必需/可选

数据类型

描述

ruleId

必需

String

告警规则编号,由用户指定。

ruleDesc

必需

StringI18n

告警描述。

modelId

必需

String

告警规则适用的模型。

measurepointId

可选

String

资产测点。如何获取测点(pointId)信息>>

deviceStatus

可选

String

设备状态,如“offline”。参见 设置由设备状态触发的告警

condition

必需

String

类查询表达式。如“${temperature} = 19”表示“测点 temperature 的值等于19”。使用“/”表达层级关系,如“${pointA/att1} = 18”表示“测点 A 的 att1 属性值为 18”。目前只支持最多向下一层。如何使用查询表达式>>

severityId

必需

String

告警级别编号。

contentId

必需

String

告警内容编号。

tags

可选

Map

告警规则标签。

isEnabled

可选

Boolean

是否启用,默认启用(true)。

isRoot

可选

Boolean

是否是根源告警,默认为 false。

scope

必需

AssetNode 结构体数组

指定资产树上的节点来表明告警规则的作用域。参见 AssetNode 结构体

triggeringDelayTimer

可选

Integer

延后告警触发时间。单位为秒,范围[60 - 10800]。当发生匹配告警规则的异常状况,且该状况在所设定的时间内仍未恢复正常时,系统才会产生告警。若设为 0 则表示立即触发告警。参见 教程:设置异常持续一段时间后触发的告警

AssetNode 结构体

名称

必需/可选

数据类型

描述

treeId

必需

String

资产树 ID。若为“all”,则这是一个特殊的节点,代表组织下的全局。

assetId

必需

String

资产 ID。如何获取 asset ID 信息>>

响应参数

名称

数据类型

描述

data

String

规则的 ID。

示例

请求示例

url: https://{apigw-address}/event-service/v2.1/alert-rules?action=create&orgId=yourOrgId
method: POST
requestBody:
{
    "ruleId": "user BID",
    "ruleDesc": {
        "defaultValue": "Grid is connected from converter",
        "i18nValue": {
            "en_US": "Grid is connected from converter",
            "zh_CN": "电网由变频器连接"
        }
    },
    "modelId": "EnOS_Solar_CombinerBox",
    "measurepointId": "CBX.BranchStateAttr",
    "condition": "${CBX.BranchStateAttr} = 18",
    "severityId": "WARN",
    "contentId": "planetTemperature",
    "tags": {
        "key1": "v1"
    },
    "scope": [{
        "treeId": "ptde66nd",
        "assetId": "FbFy8qyz"
    }],
    "isEnabled": true,
    "isRoot": true,
    "triggeringDelayTimer": 120
}

返回示例

{
    "code": 0,
    "msg": "OK",
    "requestId": "4873095e-621d-4cfd-bc2c-edb520f574ea",
  "data": "user BID"
}

Java SDK 调用示例

public void testCreateAlertRule() {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    CreateAlertRuleRequest request = new CreateAlertRuleRequest();
    request.setOrgId(orgId);
    request.setRuleId("yourRuleId");
    request.setTriggeringDelayTimer(86400);
    request.setSeverityId("yourSeverityId");
    request.setContentId("yourContentId");
    StringI18n desc = new StringI18n();
    desc.setDefaultValue("hah");
    Map < String, String > mapString = new HashMap < > ();
    mapString.put("zh_CN", "中文");
    mapString.put("en_US", "english");
    desc.setI18nValue(mapString);
    request.setRuleDesc(desc);
    request.setModelId("yourModelId");
    request.setMeasurepointId("int1");
    request.setCondition("(${int1} = 1117) and  (${int1} > 888)");
    Map < String, String > map = new HashMap < > ();
    map.put("yourTagKey", "yourTagValue");
    request.setTags(map);
    request.setIsEnabled(true);
    request.setIsRoot(false);
    AssetNode assetNode = new AssetNode();
    assetNode.setAssetId("all");
    assetNode.setTreeId("all");
    List < AssetNode > list = new LinkedList < > ();
    list.add(assetNode);
    request.setScope(list);
    try {
        CreateAlertRuleResponse response = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
            .url(url)
            .getResponse(request, CreateAlertRuleResponse.class);
        System.out.println(response);
    } catch (Exception e) {
        System.out.print(e);
    }
}