
# 数据订阅
AOM支持用户订阅指标或者告警信息，订阅后可以将数据转发到用户配置的kafka或DMS的Topic中，供消费者消费转发的订阅的信息。
![](https://support.huaweicloud.com/usermanual-aom/public_sys-resources/notice_3.0-zh-cn.png)
- 数据订阅功能当前受限开放，如有需求可以通过[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)，联系工程师为您开放此功能。
- 最多可创建10个数据订阅规则。
 
#### 创建订阅规则
1. 在左侧导航栏中选择"配置管理 \> 数据订阅"。
2. 单击"创建订阅规则"，设置相关参数后，单击"确定"。 
   您可根据实际需求，选择订阅目标类型为"自定义Kafka"或"分布式消息服务DMS"。
   - 订阅目标类型为"自定义Kafka"，请参考[表1]配置参数。
      表1数据订阅规则参数说明 
     | 参数       | 说明                                                                                                         | 示例                 |
     |:---|:---|:---|
     | 规则名称     | 订阅规则名称。                                                                                                    | 输入：aom-kafka-test。 |
     | 订阅内容     | 支持"指标"和"告警"。                                                                                               | 选择：指标。             |
     | 订阅目标类型   | 选择"自定义Kafka"或"分布式消息服务DMS"。                                                                                 | 自定义Kafka           |
     | 订阅目标连接地址 | 用户自己的kafka地址，需要打通网络。 格式为逗号分隔的ipv4:port。例如: 192.168.0.1:9092,192.168.0.2:9092 | 根据实际情况填写。          |
        
     1. （可选）进入到"规则详情"，单击![](https://support.huaweicloud.com/usermanual-aom/zh-cn_image_0000001208742219.png)，配置Kafka SASL_SSL，参数如[表2]所示。
        ![](https://support.huaweicloud.com/usermanual-aom/public_sys-resources/note_3.0-zh-cn.png)
        AOM当前仅支持Kafka SASL_SSL安全认证配置，如果目前实例已经开启Kafka SASL_SSL，请打开此开关。
         表2配置Kafka SASL_SSL参数 
        | 参数    | 说明                                     | 示例   |
        |:---|:---|:---|
        | 用户名   | SASL用户名用于实例访问认证。                       | demo |
        | 密码    | SASL密码用于实例访问认证，请妥善管理密码，系统无法获取您设置的密码内容。 | -    |
        | 客户端证书 | 请采用.pem格式的客户端证书                        | -    |
           
        
     
     2. 单击"验证并保存自定义Kafka配置信息"，验证自定义Kafka实例连通性。
     
     3. 选择数据发送topic后，单击"确定"。
      
   
   - 订阅目标类型选择"分布式消息服务DMS"，请参考[表3]配置参数。
      表3数据订阅规则参数说明 
     | 参数     | 说明                                     | 示例                 |
     |:---|:---|:---|
     | 规则名称   | 订阅规则名称                                 | 输入：aom-kafka-test。 |
     | 订阅内容   | 支持"指标"和"告警"。                           | 选择：指标。             |
     | 订阅目标类型 | 选择"自定义Kafka"或"分布式消息服务DMS"。             | 分布式消息服务DMS         |
     | 实例     | 选择DMS实例，如没有DMS实例，请单击"创建DMS实例"，创建DMS实例。 | kafka-aom-7160     |
        
     1. 进入到"规则详情"，单击"创建网络连接通道"。
     
     2. 验证DMS实例连通性。 您需要确保在安全组"入方向规则"中，放通9011端口，源地址为"198.19.128.0/20"的网络流量。设置安全组规则操作如下：
        1. 登录管理控制台。
        
        2. 在左侧导航栏，单击![](https://support.huaweicloud.com/usermanual-aom/zh-cn_image_0000001163348542.png)，选择"网络 \> 虚拟私有云 VPC"。
        
        3. 在左侧导航栏单击"访问控制 \> 安全组"，在使用DMS所在的安全组右侧，单击"配置规则"。
        
        4. 在"入方向规则"页签下，单击"添加规则"，放通9011端口、源地址为"198.19.128.0/20"的网络流量。
           图1添加入方向规则   
           ![](https://support.huaweicloud.com/usermanual-aom/zh-cn_image_0288872343.png "点击放大") 
         
     
     3. 单击"验证并保存DMS配置信息"。
     
     4. 选择数据发送topic后，单击"确定"。
      
   
   
   
   
 
#### 数据订阅格式说明
- AOM格式的指标JSON格式代码片断
  ```
  package metric
  type MetricDatas struct {
     Metrics   []Metrics `json:"metrics"`
     ProjectId string    `json:"project_id"`
  }
  type Metrics struct {
     Metric      Metric  `json:"metric"`
     Values      []Value `json:"values"`
     CollectTime int64   `json:"collect_time"`
  }
  type Metric struct {
     Namespace  string      `json:"namespace"`
     Dimensions []Dimension `json:"dimensions"`
  }
  type Value struct {
     Value           interface{} `json:"value"`
     Type            string      `json:"type"`
     Unit            string      `json:"unit"`
     StatisticValues string      `json:"statisticvalues"`
     MetricName      string      `json:"metric_name"`
  }
  type Dimension struct {
     Name  string `json:"name"`
     Value string `json:"value"`
  }
  ```
  
- kafka消息示例
  ```
  key:,
  value:{"metrics":[{"metric":{"namespace":"PAAS.NODE","dimensions":[{"name":"nodeName","value":"test-vss-cop-master-1"},{"name":"nodeIP","value":"1.1.1.1"},{"name":"hostID","value":"75d97111-4734-4c6c-ae9e-f6111111111"},{"name":"nameSpace","value":"default"},{"name":"clusterId","value":"46a7bc0d-1d8b-11ea-9b04-333333333333333"},{"name":"clusterName","value":"test-vss-111"},{"name":"diskDevice","value":"vda"},{"name":"master","value":"true"}]},"values":[{"value":0,"type":"","unit":"Kilobytes/Second","statisticvalues":"","metric_name":"diskReadRate"},{"value":30.267,"type":"","unit":"Kilobytes/Second","statisticvalues":"","metric_name":"diskWriteRate"}],"collect_time":1597821030037}],"project_id":"111111111111111111111"}
  ```
  
- 告警数据格式说明 示例：
  ```
  {
      "events": [{
          "id": "4346299651651991683",
          "starts_at": 1597822250194,
          "ends_at": 0,
          "arrives_at": 1597822250194,
          "timeout": 300000,
          "resource_group_id": "312313123112222222222232131312131",
          "metadata": {
              "kind": "Pod",
              "event_severity": "Major",
              "resource_type": "service",
              "clusterId": "6add4ef5-1358-11ea-a5bf-111111111",
              "event_type": "alarm",
              "clusterName": "cce-ief-4516140c-96ca-4a5f-8d85-1111111",
              "namespace": "PAAS.NODE",
              "name": "test15769793809553052-f5557bd7f-qnfkm",
              "event_name": "调度失败##FailedScheduling",
              "resource_id": "clusterName=cce-ief-4516140c-96ca-4a5f-8d85-111111;clusterID=6add4ef5-1358-11ea-a5bf-11111111111;kind=Pod;namespace=30d5758f166947c6b164af604a654b09;name=test15769793809553052-f5557bd7f-qnfkm;uid=589fc746-245d-11ea-a465-fa163e5fc15d",
              "nameSpace": "30d5758f166947c6b164af604a654b09",
              "resource_provider": "CCE",
              "nodeID": "589fc746-245d-11ea-a465-fa163e5fc15d"
          },
          "annotations": {
              "alarm_probableCause_zh_cn": "FailedScheduling",
              "alarm_probableCause_en_us": "FailedScheduling",
              "message": "0/110 nodes are available: 1 node(s) had taints that the pod didn't tolerate, 109 node(s) didn't match node selector."
          },
          "attach_rule": {
              
          }
      }],
      "project_id": "312313123112222222222232131312131"
  }
  ```
  参数说明：
  表4告警参数 
  | 参数         | 参数类型                                                        | 描述                             |
  |:---|:---|:---|
  | events     | Array ofobjects，详见 [表5]。 | 事件或者告警详情。                      |
  | project_id | String                                                      | 租户从IAM申请到的projectid，一般为32位字符串。 |
     
   表5EventModel 
  | 参数                | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  |:---|:---|:---|
  | id                | String | 事件或者告警id，系统自动生成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | starts_at         | Long   | 事件或者告警产生的时间，CST毫秒级时间戳。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | ends_at           | Long   | 事件或者告警清除的时间，CST毫秒级时间戳，为0时表示未删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | arrives_at        | Long   | 事件或者告警到达AOM的时间，CST毫秒级时间戳。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | timeout           | Long   | 告警自动清除时间。毫秒数，例如一分钟则填写为60000。默认清除时间为3天。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | resource_group_id | String | 资源组预留字段，当前默认和projectid的值一样。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | metadata          | Object | 事件或者告警的详细信息，为键值对形式。必须字段为： - event_name：事件或者告警名称,类型为String；  - event_severity：事件级别枚举值。类型为String，四种类型 "Critical", "Major", "Minor", "Info"；  - event_type：事件类别枚举值。类型为String，event为普通告警，alarm为告警事件；  - resource_provider：事件对应云服务名称。类型为String；  - resource_type：事件对应资源类型。类型为String；  - resource_id：事件对应资源信息。类型为String。   |
  | annotations       | Object | 事件或者告警附加字段，可以为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | attach_rule       | Object | 事件或者告警预留字段，为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     
  
 
#### 后续操作
数据订阅规则设置完成后，AOM会将数据发到配置的kafka或DMS的Topic中，您可以消费订阅的指标或者告警信息。
