通过 Prometheus 获取 Kubernetes 中 Pod 资源(CPU/MEM/GPU)消耗信息

文章目录
容器化应用资源消耗 ≠ 设备资源消耗
Prometheus 及其 ProQL
Prometheus 中常见资源监控的 query 写法
Pod CPU 利用率
Pod MEM 占用
Pod GPU 利用率
Pod GPU 显存占用
容器化应用资源消耗 ≠ 设备资源消耗
不管是运维监控还是应用性能分析,资源消耗信息都是其中很重要的基础数据。之前,应用独占一台虚拟机或物理机,因此我们仅需要采集该设备的资源信息即可。有很多成熟的方案来支撑。

随着容器化的普及,越来越多的应用会使用 Kubernetes 来进行部署,这样一来一台物理机上可能会运行多个应用。因此,容器化应用资源消耗没办法等同于设备资源消耗。我们需要针对这样的场景来找出新的解决方案。

Prometheus 及其 ProQL
Prometheus 中获取数据通过 query 进行查询,而 query 的写法是满足 ProQL 的语法。

这里大致介绍下 ProQL 的大致规则:

metrics_name:指标名,即CPU、内存、IO这些具体的指标项;
metrics_label :指标标签,即通过标签对某个指标名进行过滤。
metrics_value :用指标名+标签查出来的结果。
指标名与指标标签的写法如下:

metrics_name{metrics_label1="xxx", metrics_label2="yyy"}
1
更详细的资料可以查看官网:https://prometheus.io/docs/prometheus/latest/querying/basics/

Prometheus 中常见资源监控的 query 写法
Pod CPU 利用率
query = sum by(pod_name) (rate(container_cpu_usage_seconds_total{pod_name=~"$pod_name"}[1m]))  //CPU使用率,单位%
1
注:pod_name 可通过下列命令获取:

kubectl get pods
1
Pod MEM 占用
query = sum by(pod_name) (container_memory_working_set_bytes{pod_name=~"$pod_name"}) / 1048576 //内存使用率,单位MiB
1
注:pod_name 可通过下列命令获取:

kubectl get pods
1
Pod GPU 利用率
query = dcgm_gpu_utilization{uuid="$uuid"} //单卡显卡利用率,单位%
1
注:gpu 的 uuid 可通过下列命令获取:

kubectl exec -it $pod_name -- env|grep NVIDIA_VISIBLE_DEVICES
1
Pod GPU 显存占用
query = dcgm_fb_used{uuid="$uuid"} //单卡显存,单位MiB
1
注:gpu 的 uuid 可通过下列命令获取:

kubectl exec -it $pod_name -- env|grep NVIDIA_VISIBLE_DEVICES
————————————————
版权声明:本文为CSDN博主「xiaosongluo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaosongluo/article/details/106430641

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值