监控CCE Turbo集群容器网络扩展指标
CCE容器网络扩展指标插件是一款容器网络流量监控管理插件,可支持CCE Turbo集群非主机网络容器的流量统计,以及节点内容器连通性健康检查。监控信息已适配Prometheus格式,可以通过调用Prometheus接口查看监控数据。
本文以实际示例介绍如何通过Prometheus查看CCE Turbo集群容器网络扩展指标,具体步骤如下:
前提条件
- 已创建一个CCE Turbo集群。
- 集群中存在足够的节点资源(不小于4U8G),用于安装云原生监控插件和CCE容器网络扩展指标插件。
- 使用kubectl连接集群,详情请参见通过kubectl连接集群。
安装插件
- 登录CCE控制台,单击CCE Turbo集群名称进入集群,单击左侧导航栏的“插件中心”。
- 在“插件中心”页面右侧找到云原生监控插件,单击“安装”。
在监控CCE Turbo集群容器网络扩展指标的场景下,建议您关注以下配置。该插件的其他配置可按需进行设置,详情请参见云原生监控插件。
- 本地数据存储:此处选择使用本地存储监控数据,监控数据可选择是否对接AOM或三方监控平台。
- 自定义指标采集:该配置在本实践中必须选择开启,否则将无法采集容器网络扩展指标。
- (可选)安装Grafana:选择安装Grafana后,可以使用图表查看指标。
该配置在3.9.0以下版本的插件中支持。对于3.9.0及以上版本的插件,如果存在使用Grafana的需求,请单独安装Grafana。
- 在“插件中心”页面右侧找到CCE容器网络扩展指标插件,单击“安装”。
当前该插件无可配置参数。
- (可选)对于3.9.0及以上版本的云原生监控插件,不再默认提供Grafana组件。您可以在“插件中心”页面右侧找到独立的Grafana插件,单击“安装”。
选择“公网访问”,将会在monitoring命名空间创建一条名为grafana-oss的LoadBalancer类型的服务。如果LoadBalancer服务对接的ELB绑定了EIP,可直接使用浏览器输入“eip:port”地址进行访问。
开启“公网访问”将会把开源Grafana服务暴露至公网访问,建议评估安全风险并做好访问策略的管控。
监控容器网络扩展指标
- 编辑容器网络扩展指标插件的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 ...
- 配置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查看指标
- 创建一个示例监控任务,详情请参见下发监控任务。
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粒度监控
- 为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
- 创建完成后在浏览器访问“负载均衡公网IP地址:服务端口”,访问Prometheus。您可以在Prometheus页面中搜索支持的监控项,验证指标是否采集成功。
图1 访问Prometheus
(可选)通过Grafana查看图表
- 在集群中安装Grafana后,在“插件中心”页面右侧找到Grafana插件,单击“访问”。
- 输入您的Grafana登录账号及密码。
- 单击Grafana页面左侧导航栏中的“Explore”,然后在页面上方选择“Prometheus”,输入PromQL查询指令,例如“rate(dolphin_ip4_send_pkt_internet[5m])”,然后单击右上角“Run query”即可获取指标图表。
图2 Grafana图表
- 您也可以将常用图表固定为Grafana Dashboard,详情请参见Create a dashboard。