# 通过Hubble监控集群TCP及UDP流量
Hubble是基于Cilium和eBPF的Kubernetes网络可观测性平台。通过安装Hubble Relay和Hubble UI/CLI，您可以实时查看集群流量拓扑、排查网络延迟、拦截（Dropped）数据包并生成服务依赖图。
在开启了DataPlane V2的集群中，部署开源的可观测项目Hubble，将容器网络流量进行可视化展示，结合Prometheus的监控能力，可以实现容器网络可观测性。
#### 前提条件
- 已经创建好开启DataPlane V2的CCE集群。
- 集群中已经安装好云原生监控插件，并开启监控数据上报至AOM服务。
- 集群中已经部署好hubble相关开源组件，详情请参见[部署Hubble实现DataPlane V2网络可观测性](https://support.huaweicloud.com/usermanual-cce/cce_10_1063.html)。
 
#### 更新cilium配置
为了节约集群资源，默认的cilium流量监控配置以节点为单位，监控指标无法定位到具体的工作负载，修改cilium-config的配置开启工作负载的指标标签。
1. 通过kubectl连接集群，具体请参见[kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 创建cilium-config.yaml文件。 
   ```
   apiVersion: v1 
   kind: ConfigMap 
   metadata: 
     name: cilium-config 
     namespace: kube-system 
   data: 
     enable-hubble: "true" 
     hubble-disable-tls: "true" 
     hubble-listen-address: :4244 
     hubble-metrics: dns drop tcp flow:labelsContext=source_ip,source_namespace,source_workload,source_pod,destination_ip,destination_namespace,destination_workload,destination_pod,traffic_direction port-distribution icmp http 
     hubble-metrics-server: :9965
   ```
   
   
3. 更新集群中的cilium-config配置，开启工作负载的指标标签。 
   ```
   kubectl apply -f cilium-config.yaml
   ```
   
   
4. 重新启动cilium负载，并等待重启完成。 
   ```
   kubectl rollout restart daemonset yangtse-cilium -n kube-system
   ```
   
   
 
#### 在AOM中配置指标监控
1. 进入AOM查看指标。 
   1. 登录[AOM控制台](https://console.huaweicloud.com/aom2/#/aom2/overviewNew)，单击左侧菜单的"指标浏览"，在右侧下拉菜单选择集群云原生监控插件上报的Prometheus实例。
   
   2. 在下方的指标栏中选择"交互模式"页签，指标栏中搜索hubble暴露的浏量指标，通过下方的"条件"栏，可以根据标签筛选要查看的数据。 ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002664023799.png "点击放大")
      hubble暴露的流量指标有：
      
      | 指标                                                                | 说明                |
      |:---|:---|
      | **hubble_drop_total**                                         | 被丢弃的请求总数        |
      | **hubble_flows_processed_total**                              | 总流量数              |
      | **hubble_icmp_total**                                            | icmp消息总数       |
      | **hubble_lost_events_total**                                    | 网络流数据或事件被丢弃总数     |
      | **hubble_metrics_http_handler_request_duration_seconds_bucket**  | HTTP请求处理耗时      |
      | **hubble_metrics_http_handler_request_duration_seconds_count** | HTTP请求总次数      |
      | **hubble_metrics_http_handler_request_duration_seconds_sum**    | HTTP请求的总持续时间     |
      | **hubble_metrics_http_handler_requests_total**                  | 接收到的HTTP请求总数      |
      | **hubble_port_distribution_total**                               | 按目标端口区分的数据流量分发总数 |
      | **hubble_relay_pool_peer_connection_status**                    | 各个节点的当前的连接状态与节点数 |
      | **hubble_tcp_flags_total**                                     | TCP标志位产生总数       |
         
      
   
   
   
   
2. 监控集群中的TCP流量 
   在AOM的"指标浏览"中选择"语法模式"，使用语句：
   ```
   sum(irate(hubble_flows_processed_total[1m])) by (destination_workload)
   ```
   此查询语句可以监控TCP协议下各个工作负载每秒被访问的次数。
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002633864586.png "点击放大")
   
   
3. 将监控模板添加到仪表盘 
   1. 在AOM左侧菜单选择"仪表盘"，在右侧仪表盘页面中选择已有的仪表盘。
   
   2. 在下拉菜单中选择集群云原生监控插件上报的Prometheus实例，单击页面中间的"添加图表"按钮。 ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002633704670.png "点击放大")
      
   
   3. 填写图表标题，在语法模式下填写查询语句。
      ```
      sum(irate(hubble_flows_processed_total[1m])) by (destination_workload)
      ```
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002663943743.png "点击放大")
      
   
   4. 单击右上角的"保存"按钮保存图表。
   
   
   
   
4. 在AOM仪表盘页面上可以直接看到监控图表。 
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002664023801.png "点击放大")
   
   
 
