事件监控功能为您提供上报事件的接口,方便您将业务产生的异常事件采集上报到云监控,通过对上报的事件配置报警规则来接收报警通知。

云监控为您提供 OpenAPI、Java SDK 和阿里云命令行工具(CLI) 三种方式上报数据。

使用限制

  • 单云账号QPS限制为20。
  • 单次最多上报100个事件。
  • 单次最多上报500KB数据。

OpenAPI上报数据

  • 请求语法
    POST /event/custom/upload HTTP/1.1 
    Authorization:<AuthorizationString>
    Content-Length:<Content Length>
    Content-MD5:<Content MD5>
    Content-Type:application/json
    Date:<GMT Date>
    Host: metrichub-cms-cn-hangzhou.aliyuncs.com
    x-cms-signature:hmac-sha1
    x-cms-api-version:1.0
    x-cms-ip:30.27.84.196
    User-Agent:cms-java-sdk-v-1.0
    [{"content":"EventContent","groupId":GroupId,"name":"EventName","time":"20171023T144439.948+0800"}]
  • 请求参数
    名称 类型 必选 描述
    name 字符串 事件名称
    groupId 数值 事件所属的应用分组Id
    time 字符串 事件发生时间
    content 字符串 事件详情

    请求头定义

    签名算法

  • 响应元素

    HTTP 状态码返回 200。

  • 示例
    • 请求示例
      POST /event/custom/upload HTTP/1.1 
      Host: metrichub-cms-cn-hangzhou.aliyuncs.com
      x-cms-api-version:1.0
      Authorization:YourAccKey:YourAccSecret 
      Host:metrichub-cms-cn-hangzhou.aliyuncs.com"
      Date:Mon, 23 Oct 2017 06:51:11 GMT
      Content-Length:180
      x-cms-signature:hmac-sha1
      Content-MD5:E9EF574D1AEAAA370860FE37856995CD
      x-cms-ip:30.27.84.196
      User-Agent:cms-java-sdk-v-1.0
      Content-Type:application/json
      [{"content":"123,abc","groupId":100,"name":"Event_0","time":"20171023T144439.948+0800"}]
    • 返回示例
      {
         "code":"200",
         "msg":""//正常上报时返回msg为空
      }

Java SDK上报数据

  • maven依赖
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-cms</artifactId>
        <version>0.1.2</version>
    </dependency>
  • 示例代码
    public void uploadEvent() throws CMSException, InterruptedException {
            //初始化客户端
            CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);
           //构建2个事件上报
             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);
        }

阿里云命令行(CLI)方式上报数据

拥有阿里云账号,并生成具有云监控权限的子账号AK(使用子账号安全性更好)。
  • 创建子账号。

  • 为子账号生成accesskeyid, accesskeysecrret。

  • 为子账号授权云监控权限。

操作流程

  1. 安装aliyuncli工具
    系统要求:Linux、UNIX 或 Mac OS。环境要求:已安装 Python 2.7.x。
    1. 安装 Python
      • 若您的设备已安装 Python 2.7.x 版本,请跳过此步骤。
      • 若您的设备没有安装 Python 2.7.x 版本,请在命令行窗口中执行下列命令,安装 Python。注意,请确保您的设备中已安装了 wget。
        wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz (或者通过其他方式下载后放在某个路径下)
        tar -zxvf Python-2.7.8.tgz
        cd Python-2.7.8
        ./configure
        make
        sudo make install
    2. 安装 pip
      • 若您的设备已安装 pip,请跳过此步骤。
      • 若您的设备没有安装 pip,在命令行窗口中执行如下命令,安装 pip。
        curl "https://bootstrap.pypa.io/get-pip.py" -o "pip-install.py"
        sudo python pip-install.py
      • 系统显示如下类似信息,则表明安装成功。
        Successfully installed pip-7.1.2 setuptools-18.7 wheel-0.26.0
    3. 安装命令行工具

      如果系统内的 pip 版本过低,会造成 CLI 安装出错。用户可以使用如下指令先对 pip 软件进行升级后再进行相关操作。请使用 pip 7.x 或更高版本。若已是最新版本的 pip,请跳过此步骤。

      1. 在命令行窗口中执行如下命令,升级 pip。
        sudo pip install -U pip

        系统显示如下类似信息,则表明升级成功。

        Successfully uninstalled pip-7.1.2
        Successfully installed pip-8.1.2
      1. 执行如下命令,安装阿里云命令行工具。
        sudo pip install aliyuncli

        系统显示如下类似信息,则表明安装成功。

        Successfully installed aliyuncli-2.1.2 colorama-0.3.3 jmespath-0.7.1
    4. 配置命令行工具
      ~ sudo aliyuncli configure
      Aliyun Access Key ID [*******************a]: youraccesskeyid
      Aliyun Access Key Secret [*******************b]: youraccesskeysecret
      Default Region Id [cn-hangzhou]: cn-hangzhou
      Default output format [json]: json
  2. 安装CmsSDK
    • Windows安装方式如下。
      cd C:\Python27\Scripts
      pip install aliyun-python-sdk-cms
    • 如果需要更新SDK,则使用如下命令。
      pip install --upgrade aliyun-python-sdk-cms
    • Linux 安装方式如下。
      sudo pip install aliyun-python-sdk-cms
    • 如果需要更新SDK,则使用如下命令。
      sudo pip install —upgrade aliyun-python-sdk-cms
  3. 上报监控数据

    使用PutEvent接口。

    • Windows上报示例
      aliyuncli.exe cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171013T170923.456+0800','name':'ErrorEvent','groupId':'27147'}]"
    • Linux 上报示例
      aliyuncli cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171023T180923.456+0800','name':'ErrorEvent','groupId':'27147'}]"
    • 上报成功后,返回200状态码。
      {
      "Code":"200"
      }

错误编码

错误代码 含义
200 正常
400 客户端请求中的语法错误
403 校验失败、限速、没有授权
500 服务器内部错误

子账号授权说明

使用子账号的AK上报事件数据时,需要对相应子账号授权云监控管理权限。如果子账号未授权云监控管理权限,上报数据时会提示“cannot upload event, please use ram to auth”。

  1. 登录访问控制RAM控制台。
  2. 进入用户管理 菜单。
  3. 选择需要上报数据的子账号,在操作中点击授权

  4. 在授权页面中选择管理云监控的权限,并点击确定保存授权。