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)¶
备注
以下非必须字段中,必须提供 measurepointId
或 deviceStatus
作为告警触发条件。
名称 |
必需/可选 |
数据类型 |
描述 |
---|---|---|---|
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);
}
}