程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知

269 阅读2分钟

程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知

一. 规则说明

这里我们要利用到阿里云的云监控的手段,有一个叫做事件监控的东西,可以通过自定义事件上传来进行监控报警。

流程: 程序发现错误 -> 调用事件上报 -> 阿里云事件中心接受到事件 -> 打电话、发短信、钉钉通知

二. 前置准备

前置条件:

  1. 阿里云账号
  1. 阿里云ram账号(带有事件监控权限),生成对应的key和secret
  1. 创建报警联系人组,购买短信、电话分钟数(需要什么就得买什么)
  1. 创建报警规则

完成前置条件后,如下图所示,已经配置好了相关事件

image-20220228160413430

这时候我们手上需要三个参数就可以进行事件通知了:ram用户的key和secret 以及 报警规则的 应用组ID。

三. 开始编码

  1. 添加Maven依赖。
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-cms</artifactId>
        <version>0.1.2</version>
    </dependency>
    
  2. 上报事件

  • java版本
public void uploadEvent() throws CMSException, InterruptedException {
        CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);
         CustomEventUploadRequest request = CustomEventUploadRequest.builder()
                    .append(CustomEvent.builder()
                            .setContent("abc,123")
                            .setGroupId(101l)
                            .setName("Event001").build())
                    .append(CustomEvent.builder()
                            .setContent("abc,123")
                            .setGroupId(101l)
                            .setName("Event002").build())
                    .build();
            CustomEventUploadResponse response = cmsClient.putCustomEvent(request);
            List<CustomEvent> eventList = new ArrayList<CustomEvent>();
            eventList.add(CustomEvent.builder()
                    .setContent("abcd,1234")
                    .setGroupId(101l)
                    .setName("Event001").build());
            eventList.add(CustomEvent.builder()
                    .setContent("abcd,1234")
                    .setGroupId(101l)
                    .setName("Event002").build());
            request = CustomEventUploadRequest.builder()
                    .setEventList(eventList).build();
            response = cmsClient.putCustomEvent(request);
    }
​
  • kotlin版本
fun main() {
    val cmsClient = CMSClient("https://metrichub-cms-cn-beijing.aliyuncs.com", "key", "secret")
    var request: CustomEventUploadRequest = CustomEventUploadRequest.builder()
        .append(
            CustomEvent.builder()
                .setContent("abc,123")
                .setGroupId(25350)
                .setName("test").build()
        )
        .append(
            CustomEvent.builder()
                .setContent("abc,123")
                .setGroupId(25350)
                .setName("test").build()
        )
        .build()
    var response: CustomEventUploadResponse = cmsClient.putCustomEvent(request)
    val eventList: MutableList<CustomEvent> = ArrayList<CustomEvent>()
    eventList.add(
        CustomEvent.builder()
            .setContent("abcd,1234")
            .setGroupId(25350)
            .setName("test").build()
    )
    eventList.add(
        CustomEvent.builder()
            .setContent("abcd,1234")
            .setGroupId(25350)
            .setName("test").build()
    )
    request = CustomEventUploadRequest.builder()
        .setEventList(eventList).build()
    response = cmsClient.putCustomEvent(request)
}

阿里云官方文档见