
# 订阅AOM指标或告警数据
AOM支持用户订阅指标或者告警信息。订阅后可以将数据转发到用户配置的DMS或Webhook的Topic中，供消费者消费转发订阅的信息。
#### 约束与限制
- 最多可创建10个数据订阅规则。
- Webhook订阅类型当前受限开放，如有需求可以通过[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)，为您开放此功能。
- 使用数据订阅功能前，需要先进行云服务授权，详情请参考[授权AOM访问其他云服务](https://support.huaweicloud.com/usermanual-aom2/mon_01_0056.html)。
 
#### 创建数据订阅规则
1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
2. 在左侧导航栏中选择"设置 \> 全局设置"，进入全局设置页面。
3. 在左侧导航栏中选择"数据订阅"，单击"创建订阅规则"，根据实际需求，选择订阅内容为"分布式消息DMS订阅"或"Webhook"。 
   - 订阅内容选择"分布式消息 DMS 订阅"。
     1. 请参考[表1]配置参数，设置相关参数后，单击"确定"。
         表1数据订阅规则参数说明 
        | 参数   | 说明                                                                                    |
        |:---|:---|
        | 规则名称 | 订阅规则名称。 只能由大小写字母、数字、中划线和下划线组成，且必须以英文字母开头，最多不能超过64个字符。 |
        | 订阅内容 | 选择"分布式消息DMS订阅"。                                                                       |
        | 数据类型 | 支持"指标"和"告警"。                                                                          |
        | 实例   | 从下拉列表中选择合适的DMS实例。如现有DMS实例均不满足需要，请单击"创建DMS实例"创建。                                       |
           
        
     
     2. 进入"规则详情"页面，单击"创建网络连接通道"。（如果该区域需要通过网络连接通道来实现AOM服务与DMS实例跨VPC资源通信，则支持创建网络连接通道。）
     
     3. 验证DMS实例连通性。 数据订阅至DMS需要在IAM委托界面增加名为"apm_admin_trust"委托，请确认是否已经创建。创建"apm_admin_trust"委托的详细操作请参见[如何创建委托apm_admin_trust]。
        - 当待验证DMS实例的接入方式配置的是"密文接入"时，数据订阅只支持kafka安全协议为SASL_SSL，且同时开启了SASL PLAIN机制的DMS实例。
        
        - 创建DMS实例时设置的跨VPC访问协议类型后续不会随着接入方式的修改而变化。如果修改了DMS实例的接入方式，会导致创建数据订阅规则时，验证DMS实例连通性失败。
        
        - 如果支持创建网络连接通道，您需要确保在安全组"入方向规则"中，放通9011端口，源地址为"198.19.128.0/20"的网络流量。设置安全组规则操作如下：
          1. 登录[管理控制台](https://console.huaweicloud.com/console/#/home)。
          
          2. 在左侧导航栏，单击![](https://support.huaweicloud.com/usermanual-aom2/zh-cn_image_0000002248005848.png)，选择"网络 \> 虚拟私有云 VPC"。
          
          3. 在左侧导航栏单击"访问控制 \> 安全组"，在使用DMS所在的安全组右侧，单击"配置规则"。
          
          4. 在"入方向规则"页签下，单击"添加规则"，放通9011端口、源地址为"198.19.128.0/20"的网络流量。
             图1添加入方向规则   
             ![](https://support.huaweicloud.com/usermanual-aom2/zh-cn_image_0000002282963337.png "点击放大") 
           
         
     
     4. 输入DMS用户名和密码。如果DMS实例的接入方式配置的是"密文接入"，需要输入DMS实例的用户名和密码；否则不展示输入DMS用户名和密码配置项。
     
     5. 单击"验证并保存DMS配置信息"。
     
     6. 选择数据发送topic后，单击"确定"。
      
   
   - 订阅内容选择"Webhook"。
     请参考[表2]配置参数，设置相关参数后，单击"确定"。
      表2数据订阅规则参数说明 
     | 参数                  | 说明                                                                                                                                                                                                                                                                                                                                                                                   |
     |:---|:---|
     | 规则名称                | 订阅规则名称。 只能由大小写字母、数字、中划线和下划线组成，且必须以英文字母开头，最多不能超过64个字符。                                                                                                                                                                                                                                                                                                  |
     | 订阅内容                | 选择"webhook"。                                                                                                                                                                                                                                                                                                                                                                         |
     | 自建普罗 Remote Write地址 | 请输入用户侧Prometheus实例的Remote Write地址，作为指标发送的目标地址。 传输请求的协议，请根据实际情况从下拉列表中选择，推荐使用HTTPS协议。                                                                                                                                                                                                                                                                    |
     | 数据类型                | 默认为"指标"。                                                                                                                                                                                                                                                                                                                                                                             |
     | Prometheus实例        | 从下拉列表中选择需要转发指标的Prometheus实例。下拉列表中显示当前账号下的所有通用实例类型Prometheus实例。                                                                                                                                                                                                                                                                                                                       |
     | 鉴权方式                | 访问用户侧Prometheus实例的认证方式。 - 基础认证：输入用户侧Prometheus实例的用户名和密码。  - Token：输入访问用户侧Prometheus实例的Token。  - 无认证：无需认证，即可访问用户侧Prometheus实例。   |
        
     规则创建成功后，即可在规则列表中查看当前创建的数据订阅规则。
     
   
   
   
   
 
#### 数据订阅格式说明
- 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-aom-4-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-aom-4-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"
  }
  ```
  参数说明：
  表3告警参数 
  | 参数         | 参数类型                                                         | 描述                             |
  |:---|:---|:---|
  | events     | Array of objects，详见 [表4]。 | 事件或者告警详情。                      |
  | project_id | String                                                       | 租户从IAM申请到的projectid，一般为32位字符串。 |
     
   表4EventModel 
  | 参数                | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  |:---|:---|:---|
  | id                | String | 事件或者告警id，系统自动生成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | starts_at         | Long   | 事件或者告警产生的时间，UTC毫秒级时间戳。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | ends_at           | Long   | 事件或者告警清除的时间，UTC毫秒级时间戳，为0时表示未删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | arrives_at        | Long   | 事件或者告警到达AOM的时间，UTC毫秒级时间戳。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | timeout           | Long   | 告警自动清除时间。毫秒数，例如一分钟则填写为60000。默认清除时间为5天。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | 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 | 事件或者告警预留字段，为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
     
  
 
 #### 创建委托apm_admin_trust
1. 登录[IAM控制台](https://console.huaweicloud.com/iam/#/iam/users)。
2. 在左侧导航栏，单击"委托"，进入委托页面。
3. 单击右上角"创建委托"，进入创建委托页面。
4. 参考[表5]设置创建委托的参数。
   
    表5创建委托 
   | 名称   | 说明                                 | 样例  |
   |:---|:---|:---|
   | 委托名称 | 标识该委托代理的名称。委托名称必须为apm_admin_trust。 | -   |
   | 委托类型 | 选择"云服务"。                           | 云服务 |
   | 云服务  | 请选择"应用运维管理 AOM"。                   | -   |
   | 持续时间 | 选择"永久"。                            | 永久  |
   | 描述   | 可选参数，用于补充说明该委托代理的详细信息。             | -   |
      
   
   
5. 单击"完成"，在授权的确认弹窗中，单击"立即授权"，进入"授权"页面。
6. 在"选择策略"页签选择"DMS UserAccess"策略，并单击"下一步"。 
   DMS UserAccess策略：分布式消息服务普通用户权限（无实例创建、修改、删除、扩容、转储）。
   
   
7. 在"设置最小授权范围"页签设置授权范围方案为"指定区域项目资源"，并在下方"项目\[所属区域\]"选定生效区域。
8. 单击"确定"，委托关系创建成功。
 
#### 后续操作
数据订阅规则设置完成后，AOM会将数据发到配置的"分布式消息DMS"或"Webhook"的Topic中，您可以消费订阅的指标或者告警信息。
