文档首页/ 云容器引擎 CCE/ 用户指南/ 可观测性/ 可观测性最佳实践/ 监控CCE Turbo集群容器网络扩展指标
更新时间:2024-11-12 GMT+08:00

监控CCE Turbo集群容器网络扩展指标

CCE容器网络扩展指标插件(dolphin)是一款容器网络流量监控管理插件,可支持CCE Turbo集群非主机网络容器的流量统计,以及节点内容器连通性健康检查。监控信息已适配Prometheus格式,可以通过调用Prometheus接口查看监控数据。

本文以实际示例介绍如何通过Prometheus查看CCE Turbo集群容器网络扩展指标,具体步骤如下:

  1. 安装插件
  2. 监控容器网络扩展指标
  3. (可选)通过Grafana查看图表

前提条件

安装插件

  1. 登录CCE控制台,单击CCE Turbo集群名称进入集群,单击左侧导航栏的“插件中心”。
  2. 在“插件中心”页面右侧找到云原生监控插件,单击“安装”。

    在监控CCE Turbo集群容器网络扩展指标的场景下,建议您关注以下配置。该插件的其他配置可按需进行设置,详情请参见云原生监控插件
    • 本地数据存储:此处选择使用本地存储监控数据,监控数据可选择是否对接AOM或三方监控平台。
    • 自定义指标采集:该配置在本实践中必须选择开启,否则将无法采集容器网络扩展指标。
    • (可选)安装Grafana:选择安装Grafana后,可以使用图表查看指标。

      该配置在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”地址进行访问。

    开启“公网访问”将会把开源Grafana服务暴露至公网访问,建议评估安全风险并做好访问策略的管控。

监控容器网络扩展指标

  1. 编辑容器网络扩展指标插件的DaemonSet配置,添加Ports信息。

    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. 创建一个示例监控任务,详情请参见下发监控任务

    apiVersion: crd.dolphin.io/v1
    kind: MonitorPolicy
    metadata:
      name: example-task            #监控任务名
      namespace: kube-system        #必填,namespace必须为kube-system
    spec:
      selector:                     #选填,配置dolphin插件监控的后端,形如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页面中搜索支持的监控项,验证指标是否采集成功。

    图1 访问Prometheus

(可选)通过Grafana查看图表

  1. 在集群中安装Grafana后,在“插件中心”页面右侧找到Grafana插件,单击“访问”。
  2. 输入您的Grafana登录账号及密码。
  3. 单击Grafana页面左侧导航栏中的“Explore”,然后在页面上方选择“Prometheus”,输入PromQL查询指令,例如“rate(dolphin_ip4_send_pkt_internet[5m])”,然后单击右上角“Run query”即可获取指标图表。

    图2 Grafana图表

  4. 您也可以将常用图表固定为Grafana Dashboard,详情请参见Create a dashboard