# 监控CCE Turbo集群容器网络扩展指标
CCE容器网络扩展指标插件是一款容器网络流量监控管理插件，可支持CCE Turbo集群非主机网络容器的流量统计，以及节点内容器连通性健康检查。监控信息已适配Prometheus格式，可以通过调用Prometheus接口查看监控数据。
本文以实际示例介绍如何通过Prometheus查看CCE Turbo集群容器网络扩展指标，具体步骤如下：
1. [安装插件]
2. [监控容器网络扩展指标]
3. [（可选）通过Grafana查看图表]
#### 前提条件
- 已创建一个CCE Turbo集群。
- 集群中存在足够的节点资源（不小于4U8G），用于安装[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)和[CCE容器网络扩展指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0371.html)插件。
- 使用kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
 
 #### 安装插件
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 单击左侧导航栏的"插件中心"，在页面右侧找到**云原生监控插件** ，单击"安装"。
   
   在监控CCE Turbo集群容器网络扩展指标的场景下，建议您关注以下配置。该插件的其他配置可按需进行设置，详情请参见[云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)。
   - 本地数据存储：此处选择使用本地存储监控数据，监控数据可选择是否对接AOM或三方监控平台。
   
   - 自动服务发现：该配置在本实践中必须选择开启，否则将无法采集容器网络扩展指标。
   
   - （可选）安装Grafana：选择安装Grafana后，可以使用图表查看指标。
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     该配置在3.9.0以下版本的插件中支持。对于3.9.0及以上版本的插件，如果存在使用Grafana的需求，请[单独安装Grafana]。
     
    
   
   
3. 在"插件中心"页面右侧找到**CCE** **容器网络扩展指标** 插件，单击"安装"。
   
   当前该插件无可配置参数。
   
   
4. （可选）对于3.9.0及以上版本的**云原生监控插件** ，不再默认提供Grafana组件。您可以在"插件中心"页面右侧找到独立的**Grafana** 插件，单击"安装"。
   
   选择"公网访问"，将会在monitoring命名空间创建一条名为grafana-oss的LoadBalancer类型的服务。如果LoadBalancer服务对接的ELB绑定了EIP，可直接使用浏览器输入"eip:port"地址进行访问。
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/notice_3.0-zh-cn.png)
   开启"公网访问"将会把开源Grafana服务暴露至公网访问，建议评估安全风险并做好访问策略的管控。
   
   
 
 #### 监控容器网络扩展指标
1. 编辑容器网络扩展指标插件的DaemonSet配置，添加Ports信息。 
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   1.3.10以下版本的容器网络扩展指标插件需手动操作，1.3.10及以上版本自动添加该配置，可跳过此步骤。
   ```
   kubectl edit ds -nkube-system dolphin
   ```
   添加如下配置：
   ```
   ...
   spec:
     containers:
       - name: dolphin
         ports:
         - containerPort: 10001
           name: dolphin
           protocol: TCP
   ...
   ```
   
   
2. 配置PodMonitor后，Prometheus就会自动采集CCE容器网络扩展指标。 
   pod-monitor.yaml文件配置参考如下：
   ```
   apiVersion: monitoring.coreos.com/v1
   kind: PodMonitor
   metadata:
     name: dolphin
     namespace: monitoring
   spec:
     namespaceSelector:
       matchNames:
       - kube-system
     jobLabel: podmonitor-dolphin
     podMetricsEndpoints:
     - interval: 15s
       path: /metrics
       port: dolphin
       tlsConfig:
         insecureSkipVerify: true
     selector:
       matchLabels:
         app: dolphin
   ```
   创建PodMonitor资源：
   ```
   kubectl apply -f pod-monitor.yaml
   ```
   
   
 
#### 通过Prometheus查看指标
1. 创建一个示例监控任务，详情请参见[下发监控任务](https://support.huaweicloud.com/usermanual-cce/cce_10_0371.html#cce_10_0371__section112539251411)。
   
   ```
   apiVersion: crd.dolphin.io/v1
   kind: MonitorPolicy
   metadata:
     name: example-task            #监控任务名
     namespace: kube-system        #必填，namespace必须为kube-system
   spec:
     selector:                     #选填，配置插件监控的后端，形如labelSelector格式，默认将监控本节点所有容器
       matchLabels:
         app: nginx
       matchExpressions:
         - key: app
           operator: In
           values:
             - nginx
     podLabel: []               #选填，用户标签
     ip4Tx:                        #选填，ipv4发送报文数和发送字节数这两个指标的开关，默认不开
       enable: true
     ip4Rx:                        #选填，ipv4接收报文数和接收字节数这两个指标的开关，默认不开
       enable: true
     ip4TxInternet:                #选填，ipv4发送公网报文数和发送公网字节数这两个指标的开关，默认不开
       enable: true
     healthCheck:                  #选填，本地节点 Pod 健康检查任务中最近一次健康检查是否健康、健康检查总健康&不健康次数这三个指标开关，默认不开
       enable: true                # true false
       failureThreshold: 3         #选填，健康检查不健康判定失败次数，默认1次健康检查失败即判定不健康
       periodSeconds: 5            #选填，健康检查任务检查间隔时间，单位秒，默认60
       command: ""                 #选填，健康检查任务检查命令，支持：ping、arping、curl，默认 ping
       ipFamilies: [""]            #选填，健康检查IP地址族，支持：ipv4，默认ipv4
       port: 80                    #选填，使用curl时必选，端口号
       path: ""                    #选填，使用curl时必选，http api 路径
     monitor:
       ip:
         ipReceive:
           aggregateType: flow       #选填，支持填写"pod"或"flow"，分别表示pod粒度监控或流粒度监控
         ipSend:
           aggregateType: flow       #选填，支持填写"pod"或"flow"，分别表示pod粒度监控或流粒度监控
       tcp:
         tcpReceive:
           aggregateType: flow       #选填，支持填写"pod"或"flow"，分别表示pod粒度监控或流粒度监控
         tcpSend:
           aggregateType: flow       #选填，支持填写"pod"或"flow"，分别表示pod粒度监控或流粒度监控
         tcpRetrans:
           aggregateType: flow       #选填，支持填写"pod"或"flow"，分别表示pod粒度监控或流粒度监控
         tcpRtt:
           aggregateType: flow       #选填，支持填写"flow"，表示流粒度监控，单位：微秒
         tcpNewConnection:
           aggregateType: pod        #选填，支持填写"pod"，表示pod粒度监控
   ```
   
   
2. 为Prometheus创建一个公网LoadBalancer类型的Service，提供公网访问。 
   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: prom-lb     #服务名称，可自定义
     namespace: monitoring
     labels:
       app: prometheus
       component: server
     annotations:
       kubernetes.io/elb.id: 038ff***     #请替换为集群所在VPC下的ELB实例ID，且ELB实例为公网访问类型
   spec:
     ports:
       - name: cce-service-0
         protocol: TCP
         port: 88             #服务端口号，可自定义
         targetPort: 9090     #Prometheus的默认端口号，无需更改
     selector:                #标签选择器可根据Prometheus Server实例的标签进行调整
       app.kubernetes.io/name: prometheus
       prometheus: server
     type: LoadBalancer
   ```
   
   
3. 创建完成后在浏览器访问"负载均衡公网IP地址:服务端口"，访问Prometheus。您可以在Prometheus页面中搜索[支持的监控项](https://support.huaweicloud.com/usermanual-cce/cce_10_0371.html#cce_10_0371__section7266162193912)，验证指标是否采集成功。
   
   图1访问Prometheus   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001796967600.png "点击放大")
   
   
 
 #### （可选）通过Grafana查看图表
1. 在集群中安装Grafana后，在"插件中心"页面右侧找到Grafana插件，单击"访问"。
2. 输入您的Grafana登录账号及密码。
3. 单击Grafana页面左侧导航栏中的"Explore"，然后在页面上方选择"Prometheus"，输入PromQL查询指令，例如"rate(dolphin_ip4_send_pkt_internet\[5m\])"，然后单击右上角"Run query"即可获取指标图表。 
   图2Grafana图表   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001796969328.png "点击放大")
   
   
4. 您也可以将常用图表固定为Grafana Dashboard，详情请参见[Create a dashboard](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/)。
 
