惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
F
Fortinet All Blogs
J
Java Code Geeks
Last Week in AI
Last Week in AI
美团技术团队
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件

杂烩饭

使用RetroArch玩步步高电子词典游戏 彻底删除CCLibrary 在 Nginx 中禁止 IP 直连与域名暴露 使用 RustFS 自建对象存储 使用cURL命令管理对象存储(s3) AGENTS.md Prometheus使用kubeconfig做k8s的service 自动发现监控 定制Windows系统镜像iso 使用create-dmg工具制作dmg安装包 使用create-dmg工具制作dmg安装包 - 技术栈 superpowers Nexus仓库搭建记录 Git Merge代码冲突的解决方式 在 Linux 系统中安装与配置 OpenVPN:从入门到精通 使用 Easytier-web 管理 easytier 节点 ingress-nginx 去除指定context path 在macOS上使用MusicPlayer2听本地音乐 Kubernetes 1.34 + RHEL10 + Cilium + kube-vip 高可用集群部署 使用腾讯云CLS收集TKE(k8s)业务日志 容器调试工具之BusyBox 无Docker环境进行容器镜像操作 使用kubeadm部署一套高可用k8s集群1.34 for Ubuntu 正在运行的Docker容器增加端口映射 轻量级组网工具WireGuard 在Kubernetes中部署一个单节点Elasticsearch 使用openssl制作自签名双向认证(mTLS)证书 minio自建对象存储 ingress-nginx 使用自定义的nginx配置 P12格式证书与PEM格式转换 使用blackbox-exporter做域名监控
为什么 Prometheus 监控不到 Pod 磁盘空间?原因分析与解决
张理坤 · 2026-09-18 · via 杂烩饭

问题

因为业务原因会把 log 写入到 pod 里,同时控制台也会打印一份,而我们的日志搜集都是统一使用 filebeat 从主机层面进行收集控制台日志,pod 里的日志是无用的,也没有挂载外部存储,为了避免 pod 日志膨胀把 node 节点磁盘打满,于是做了个 pod 磁盘占用的 Grafana 大盘,但是过程中发现有些集群没有这个指标。

发现问题

在 Grafana 中,根据公式

1
sum by( pod ) (container_fs_usage_bytes{k8s="$k8s", env="$env", project="$project", pod != "" })

来查询,部分集群无数据,有些集群有数据,但是只有 node 节点,pod 标签的值是空的。

image.png

没有 pod 标签,只能根据 instance 进行聚合。

排查问题

先到 Prometheus 进行查询数据:
image.png
可以看到数据里面确实没有 pod 标签,自然也取不到 pod 级别的磁盘使用情况。

然后使用 kubectl 查看原始数据:

1
2
3
4
kubectl get --raw \
'/api/v1/nodes/cn-beijing.172.25.3.175/proxy/metrics/cadvisor' \
| grep '^container_fs_usage_bytes' \
| head -50

得到的结果是:
image.png

可以看到原始的数据就没有 pod 信息,而 Grafana 正常的集群,查到的 pod 标签就有值,比如下面(腾讯云 TKE):

image.png

原因

根因是因为 container_fs_usage_bytes 这个指标,在 docker 运行时环境下, docker plugin 有 diskUsage 的实现,但是 containerd plugin 没有,所以不能使用,而腾讯云 TKE 可以,是因为腾讯对 containerd 做了入侵,而阿里云、华为云和社区是对齐的。

社区版的相关 issues:https://github.com/google/cadvisor/issues/3495

解决

可以换一个接口来取数据,使用:

1
2
3
4
5
6
7
8
9
10
kubectl get --raw '/api/v1/nodes/cn-beijing.172.24.1.54/proxy/stats/summary'


curl -k https://172.24.1.54:10250/stats/summary \
--cert /etc/kubernetes/pki/apiserver-kubelet-client.crt \
--key /etc/kubernetes/pki/apiserver-kubelet-client.key


curl -k -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
https://172.24.1.54:10250/stats/summary

放到业务上使用,可以自行开发一个 exporter,然后将数据接入即可(随便找个 AI 写一个就行)。

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭