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

您可以通过存储卷的监控仪表板定位分析客户端的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为过滤选项,存储重要指标的统计。

存储插件监控功能费用说明

启用存储插件CSI监控功能后,相关组件会自动将监控指标发送至阿里云Prometheus服务,这些指标将被视为自定义指标。使用自定义指标可能会引起额外的费用。

为了避免产生额外的费用,建议在启用此功能前,仔细阅读阿里云Prometheus的计费概述,了解自定义指标的收费策略。费用将根据您的集群规模和应用数量等因素产生变动。您可以通过资源消耗统计功能,监控和管理您的资源使用情况。

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

  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区域查看对应挂载失败问题及原因。