Create Alert


创建告警记录。

请求格式

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

请求参数(URI)

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

请求参数(Body)

名称 必需/可选 数据类型 描述
alertVo 必选 AlertVo 结构体 告警记录的信息。

AlertVo 结构体

名称 必需/可选 数据类型 描述
eventType 必需 Integer
  • 0:告警解除,通过规则触发(历史告警)
  • 1:告警开始,通过规则触发(当前告警)
  • 2:告警解除,通过接口创建(历史告警)
  • 3:告警开始,通过接口创建(当前告警)
  • 4:离散告警(历史告警)
  • 5: 乱序告警(历史告警)

其中,在 Create Alert 接口中,只允许填 2、3、4。

orgId 可选 String 资产所属的组织 ID。
instanceId 必需 String 告警的实体,现阶段只有 asset,取值为 assetId。
metricId 必需 String 原始度量数据的 ID。
occurTime 必需 Long 告警发生的时间,以 UTC 时间表示,格式见 UTC 采用的 ISO8601 标准时间格式>>
localOccurTime 可选 String 告警发生的时间,以本地时间表示,格式见 localtime 采用的日期时间格式>>
recoverTime
  • 当前告警(实时告警):选填
  • 历史告警(恢复告警):必填
Long 触发告警的异常状况恢复正常的时间,以 UTC 时间表示,格式见 UTC 采用的 ISO8601 标准时间格式>>
localRecoverTime 可选 String 触发告警的异常状况恢复正常的时间,以本地时间表示,格式见 localtime 采用的日期时间格式>>
recoverReason 可选 String 异常状况恢复的原因。
value 必需 String 告警产生时的 metric value,对于高级的告警功能比如多测点告警或者时序告警,使用产生告警对应的那个 metric 的 value。
metricTags 可选 Map

原始度量数据的标签。Key 和 Value 为 String。标签的作用与表示方法>>

不同业务/系统会有不同的原始度量,定义的标签也会不同。EnOS 有以下可能出现在 metricTags 标准标签。 其中带有 __ 前缀和后缀的标签是通用的 key,没带 __ 的是与业务相关的 key。

{

__timezone__: 时区

__instance__: instanceId

__metric__: metricId

__alias__: metricId 的别名

modelIdPath: 模型路径

modelId: modelId

assetTreePath: 资产树路径

assetTreePath_${treeId}: 指定 treeId 的资产树路径

}

severityId 可选 String 告警级别编号。
severityDesc 可选 StringI18n 告警级别描述。结构参见 国际化名称结构体
typeId 可选 String 告警类型编号。
typeDesc 可选 StringI18n 告警类型描述。结构参见 国际化名称结构体
parentTypeId 可选 String 告警父类型编号。
parentTypeDesc 可选 StringI18n 告警父类型描述。结构参见 国际化名称结构体
content 可选 StringI18n 告警内容。结构参见 国际化名称结构体
ruleId 可选 String 告警规则编号。
ruleDesc 可选 StringI18n 告警规则描述。结构参见 国际化名称结构体
ruleTags 可选 Map 规则上的标签。
tags 可选 Map 标签,只支持全量更新。标签的作用与表示方法>>
inhibited 可选 Boolean
  • true:屏蔽
  • false:没被屏蔽

响应参数

名称 数据类型 描述
data String 生成的告警记录的 ID。

示例

请求示例

url: POST https://{apigw-address}/alert-service/v2.1/alerts?action=create&orgId=yourOrgId
method: POST
requestBody:
{
    "alertVo":{
        "eventType":1,
        "instanceId":"deviceId_37233",
        "metricId":"pointId_772",
        "occurTime":1547824973674,
        "localOccurTime":"2018-01-01 01:01:01",
        "recoverTime":1547824973674,
        "localRecoverTime":"2018-02-02 00:00:00",
        "recoverReason":"rpc",
        "value":"5",
        "metricTags":{
            "modelId":"modelId_11",
            "modelIdPath":"path"
        },
        "severityId":"42j",
        "severityDesc":{
            "i18nValue":{
                "en_US":"wow",
                "zh_CN":""
            }
        },
        "typeId":"11d",
        "typeDesc":{
            "i18nValue":{
                "en_US":"wow",
                "zh_CN":""
            }
        },
        "parentTypeId":"d1",
        "parentTypeDesc":{
            "i18nValue":{
                "en_US":"wow",
                "zh_CN":""
            }
        },
        "content":{
            "i18nValue":{
                "en_US":"wow",
                "zh_CN":""
            }
        },
        "ruleId":"5v7",
        "ruleDesc":{
            "i18nValue":{
                "en_US":"wow",
                "zh_CN":""
            }
        },
        "ruleTags":{
            "color":"red",
            "category":"note"
        },
        "tags":{
            "de":"haha"
        },
        "inhibited":false
    }
}

返回示例

{
    "code":0,
    "msg":"OK",
    "requestId":"dac2a872-b9b7-460c-992d-0a0c14ea36e9",
    "data":"2019101011ee0917bcd4f740decfaba8f27613c5"
}

Java SDK 调用示例

public void testCreateAlerts(){
  String accessKey = "yourAppAccessKey";
  String secretKey = "yourAppSecretKey";
  CreateAlertRequest request = new CreateAlertRequest();
  request.setOrgId("yourOrgId");
  request.setAlertVo(buildAlert());
  try {
    CreateAlertResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url("https://{apigw-address}")
            .getResponse(request, CreateAlertResponse.class);
    Gson gson = new Gson();
    System.out.println(gson.toJson(response));
  }catch(Exception e){
    System.out.print(e);
  }
}