通过 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文章来源地址https://uudwc.com/A/xrNn

阅读剩余 25%

原文地址:https://blog.csdn.net/qq_39135311/article/details/126521035

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月17日 11:17
dockerfile的使用,使用dockerfile部署springboot项目
下一篇 2023年06月17日 11:18