Update Alert Rule¶
更新告警规则。所有请求参数(Body)中包含的参数,只要不是null,都可以被更新。需要进行校验的字段有:模型 ID(modelId
)、测点(measurepointId
)、告警级别(severityId
)、告警内容(contentId
)、查询范围(scope
)。
请求格式¶
POST https://{apigw-address}/event-service/v2.1/alert-rules?action=update
请求参数(URI)¶
名称 |
位置(Path/Query) |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|---|
orgId |
Query |
必需 |
String |
资产所属的组织 ID。如何获取 orgId 信息>> |
isPatchUpdate |
Query |
必需 |
Boolean |
|
请求参数(Body)¶
备注
以下非必须字段中,必须提供 measurepointId
或 deviceStatus
作为告警触发条件。
- isPatchUpdate
= True
时,以下表格的 必需/可选 栏不适用:此时,只有 ruleId
为必选,其他参数都是可选
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
ruleId |
必需 |
String |
告警规则编号,由用户指定,是用于定位需要更新的告警规则的唯一标识。 |
ruleDesc |
必需 |
StringI18n |
国际化告警描述,只支持全量更新。其结构参见 国际化名称结构体。 |
modelId |
必需 |
String |
规则适用的模型。如何获取 modelId 信息>> |
measurepointId |
可选 |
String |
资产测点。如何获取测点(pointId)信息>> |
deviceStatus |
可选 |
String |
设备状态,如 “offline”。详情参见 设置由设备状态触发的告警。 |
condition |
必需 |
String |
类查询表达式。如 “${temperature} = 19” 表示 “测点 temperature 的值等于 19”。使用 “/” 表达层级关系,如 “${pointA/att1} = 18” 表示 “测点 A 的 att1 属性值为 18”。目前只支持最多向下一层。如何使用查询表达式>> |
severityId |
必需 |
String |
告警级别编号 |
contentId |
必需 |
String |
告警内容编号 |
tags |
可选 |
Map |
规则标签,只支持全量更新。详情参见 标签的作用与表示方法>> |
scope |
必需 |
AssetNode 结构体数组 |
指定资产树上的节点来表明告警规则的作用域。其结构参见 AssetNode 结构体。 |
isEnabled |
可选 |
Boolean |
是否启用,默认启用(true) |
triggeringDelayTimer |
可选 |
Integer |
延后告警触发时间。单位为秒,范围 [60 - 10800]。当发生匹配告警规则的异常状况,且该状况在所设定的时间内仍未恢复正常时,系统才会产生告警。若设为0则表示立即触发告警。参见 教程:设置异常持续一段时间后触发的告警>>。 |
AssetNode 结构体 ¶
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
treeId |
必需 |
String |
资产树 ID。若为 “all”,则这是一个特殊的节点,代表组织下的全局。 |
assetId |
必需 |
String |
资产ID。如何获取 asset ID 信息>> |
示例¶
请求示例¶
url: https://{apigw-address}/event-service/v2.1/alert-rules?action=update&orgId=yourOrgId&isPatchUpdate=false
method: POST
requestBody:
{
"alertRule": {
"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"
}],
"isEenabled": true
}
}
返回示例¶
{
"code": 0,
"msg": "OK",
"requestId": "4873095e-621d-4cfd-bc2c-edb520f574ea",
"data": null
}
Java SDK 调用示例¶
public void testUpdateAlertRule() {
private static String accessKey = "yourAppAccessKey";
private static String secretKey = "yourAppSecretKey";
private static String orgId = "yourOrgId";
private static String url = "https://{apigw-address}";
UpdateAlertRuleRequest request = new UpdateAlertRuleRequest();
request.setOrgId(orgId);
request.setRuleId("yourRuleID");
Map < String, String > map = new HashMap < > ();
map.put("yourTagKey", "yourTagValue");
request.setTags(map);
request.setIsPatchUpdate(true);
try {
UpdateAlertRuleResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
.url(url)
.getResponse(request, UpdateAlertRuleResponse.class);
System.out.println(response);
} catch (Exception e) {
System.out.print(e);
}
}