Prometheus的container_fs_usage_bytes是否包含PVC用量及本地卷查询
问题答复
container_fs_usage_bytes是否包含PVC使用量
- 这个指标默认包含PVC挂载卷的使用量。它由节点上的cAdvisor采集,统计容器挂载命名空间内所有已挂载文件系统的已用字节数,覆盖范围包括容器可写层、emptyDir、hostPath、挂载到容器内的PVC等所有存储类型的空间占用。
- 指标自带
device、mountpoint标签可用于区分不同存储类型:PVC对应的挂载点通常匹配Pod定义中声明的PVC挂载路径,块类型PVC对应的设备名也不会是节点本地系统盘、数据盘的常规设备名(比如/dev/sda、/dev/vda这类)。
排除PVC的本地卷使用量统计、本地卷最大容量查询方法
- 要精准排除PVC的占用,需要结合三类指标匹配过滤:cAdvisor提供的容器文件系统指标、kubelet自带的PVC卷统计指标、kube-state-metrics提供的Pod卷和PVC绑定关系指标。
- 排除PVC后,单Pod本地卷已用空间查询语句:
sum by (namespace, pod) ( container_fs_usage_bytes{container!="", pod!=""} - on(namespace, pod, device) group_left() ( kubelet_volume_stats_used_bytes * on(namespace, persistentvolumeclaim) group_left() kube_pod_spec_volumes_persistentvolumeclaim_info{volume_name!=""} ) )
- 排除PVC后,单Pod本地卷最大总容量查询语句:
sum by (namespace, pod) ( container_fs_limit_bytes{container!="", pod!=""} - on(namespace, pod, device) group_left() ( kubelet_volume_stats_capacity_bytes * on(namespace, persistentvolumeclaim) group_left() kube_pod_spec_volumes_persistentvolumeclaim_info{volume_name!=""} ) )
说明:
container_fs_limit_bytes是cAdvisor采集的对应挂载文件系统的总容量值,和container_fs_usage_bytes维度完全对齐,同维度减去PVC对应的容量即可得到本地卷的总容量上限。如果集群没有部署kube-state-metrics,也可以通过mountpoint标签做正则过滤,排除集群PVC统一挂载的路径前缀(通常为/var/lib/kubelet/pods/下的kubernetes.io类型卷子路径),示例过滤条件为mountpoint!~"/var/lib/kubelet/pods/.+/volumes/kubernetes\\.io~.+/.*",这种方式配置简单但适配性弱于标签匹配方案,需要根据集群的kubelet根目录配置调整正则规则。
内容的提问来源于stack exchange,提问作者김태우
相关产品推荐
相关产品推荐

