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

必需

Scope结构体数组

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

triggeringDelayTimer

可选

Integer

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

AssetNode结构体

名称

必需/可选

数据类型

描述

treeId

必需

String

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

assetId

必需

String

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

响应参数

名称

数据类型

描述

data

String

ruleId.

示例

请求示例

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} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117) and  (${int1} = 1117)");
    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);
    }
}