通过容器存储卷可观测性定位客户端IO问题

更新时间: 2023-07-10 12:26:45

您可以通过存储卷的监控仪表板定位分析客户端的IO操作问题,并定位到问题所在的相关业务(Pod)。例如,哪些频繁的操作会导致系统繁忙、访问元数据繁忙或者产生热点文件(热点数据)占用大量带宽等常见的客户端IO问题。本文通过示例介绍如何使用存储卷的监控仪表板定位这些问题。

前提条件

  • 已创建Kubernetes集群,且集群版本大于1.20,存储插件选择为CSI。具体操作,请参见创建Kubernetes托管版集群
  • CSI-Plugin和CSI-Provisioner组件版本不低于v1.22.14-820d8870-aliyun。关于升级CSI-Plugin和CSI-Provisioner组件的操作,请参见安装与升级CSI组件

背景信息

存储卷的监控仪表板包含以下三个大盘:

  • Container Storage IO Monitoring (Cluster Level):容器存储IO监控(集群维度)的大盘,TOPN Pod的重要指标的统计。
  • Pod IO Monitoring (Pod Level):容器组IO监控(容器组维度)的大盘,以Pod为过滤选项,存储卷重要指标的统计。
  • OSS IO Monitoring (Cluster Level):对象存储IO监控(集群维度)的大盘,以OSS Bucket为过滤选项,存储重要指标的统计。

存储卷监控仪表板的大盘指标属于自定义类的指标,关于自定义指标的收费,请参见收费说明

查看存储卷的监控仪表板大盘

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus监控

  3. Prometheus监控页面,单击存储监控页签。
    • 存储监控页签下,单击OSS IO Monitoring (Cluster Level),即可查看对应大盘。
    • 存储监控页签下,单击Pod IO Monitoring (Pod Level),即可查看对应大盘。

定位容器内应用的IO问题

说明 以下问题定位的示例均以读操作为例进行说明。

问题1:哪些IO操作频繁会导致系统繁忙?

您可以通过以下操作定位当应用Pod的PVC读访问请求高时,可能触发的服务侧限流和不响应问题。

  1. 查看Container Storage IO Monitoring (Cluster Level)监控大盘,根据TopN_Pod_IOPS(IO/s)TopN_Pod_Throughput(IO/s)面板的read排序,找到高IO和高吞吐的Pod。
    PVC
    由示例可看出,oss-fio-test-deployment-696cd457f4-2dpt9对应的Pod产生了最多的IO和吞吐。
  2. 查看Pod IO Monitoring (Pod Level)监控大盘,选择Pod为oss-fio-test-deployment-696cd457f4-2dpt9,然后查看ThroughputPOSIX Operation(count/s)面板,找出执行POSIX Operation命令过高导致的高吞吐。
    podpox
  3. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 容器组

  4. 容器组页面,单击名称列下名为oss-fio-test-deployment-696cd457f4-2dpt9的Pod进入详情页面。
    在该页面下获取应用的镜像信息,根据以上获取的高IO和高吞吐信息,修改应用。

问题2:哪些元数据的操作频繁会导致后台系统繁忙?

您可以通过以下操作定位当Bucket元数据读访问请求过高时,可能触发的服务侧限流和不响应问题。

  1. 查看OSS IO Monitoring (Cluster Level)监控大盘,选择对应的Bucket,查看Aggregated Operation of OSS Operation (count/s)面板中的head请求数。
    oss
    由示例可看出,oss--1对应的Bucket产生了很多head请求。
  2. 查看Container Storage IO Monitoring (Cluster Level)监控大盘,根据TopN_Pod_Head_OSS_Operation面板的counter排序,找到head请求数过多的Pod,根据TopN_PV_Head_OSS_Operation面板,找到head请求数过多的数据卷。
    oss2
    由示例可看出,oss-fio-test-deployment-696cd457f4-bw275对应的Pod产生的head请求数过多;oss-pv3对应的数据卷产生的head请求数过多。
  3. 查看Pod IO Monitoring (Pod Level)监控大盘,选择Pod为oss-fio-test-deployment-696cd457f4-bw275,查看OSS Object Operation Ration(count/s)面板中Pod的IO情况。
    oss3
  4. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 容器组

  5. 容器组页面,单击名称列下名为oss-fio-test-deployment-696cd457f4-bw275的Pod进入详情页面。
    在该页面下获取应用的镜像信息,根据以上获取的head请求数和IO情况,修改应用。

问题3:有哪些数据操作频繁的热点文件和热点文件路径?

  1. 查看OSS IO Monitoring (Cluster Level)监控大盘。获取OSS的Bucket中频繁访问的文件和文件路径。
    1. 根据HotSpot Path of IOPS面板的read排序,找到Bucket中频繁访问的文件和文件路径。
      3
      由示例可看出,Bucket中频繁读取的文件是/test/data/5G.tmpfile,访问的路径为/test/data
    2. 根据HotSpot Path of Head Operation面板的read排序,查看Bucket中Head请求频繁访问的路径。
      2
      由示例可看出,Bucket中Head请求频繁访问的路径是/test/
  2. 查看Container Storage IO Monitoring (Cluster Level)监控大盘,根据TopN_Pod_Read_Path面板的counter排序,找到有问题的Pod。
    4
    由示例可看出,存在问题的Pod是oss-fio-test-deployment-696cd457f4-csqrf
  3. 查看Pod IO Monitoring (Pod Level)监控大盘,选择Pod为oss-fio-test-deployment-696cd457f4-csqrf,根据HotSpot Path of Top Read Operation面板的counter排序,找到Pod中频繁访问的文件和文件路径。
    5
    由示例可看出,Pod中频繁读取的文件/test/data/5G.tmpfile,访问的路径为/test/data

问题4:存储卷挂载失败,会触发事件中心告警

当存储卷挂载失败时,事件中心会发送报警事件通知,您可以通过以下方式查看当前挂载失败的PV及失败原因。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 事件中心

  3. 事件中心页面,单击核心组件事件页签,然后找到存储CSI区域查看对应挂载失败问题及原因。
阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈