Sentinel Get system metrics of container | k8s pod里SystemStatusListener获取到的是物理机的load不是pod的load

sxissh06  于 2022-10-19  发布在  其他
关注(0)|答案(5)|浏览(194)

Issue Description

k8s pod里SystemStatusListener获取到的是物理机的load不是pod的load

Describe what you expected to happen

可以获取到pod或容器里的load

Tell us your environment

k8s

1qczuiv0

1qczuiv01#

这个确实是个问题,社区可以一起来看一下获取容器 load 的比较好的方式。

dxxyhpgq

dxxyhpgq4#

The same issue entranced in micrometer-metrics/micrometer#1534 .

maybe you can refer this https://juejin.cn/post/6986598285406371871/ ,it is my ideas about solving this.

nue99wik

nue99wik5#

容器里获取 CPU 可以参考以下方法:

  1. 读取 /sys/fs/cgroup/cpu/cpuacct.usage 文件获取容器总的 CPU 耗时,cpuDelta 为两次读取的差值;
  2. 读取 /proc/stat 文件获取系统总的 CPU 耗时,systemDelta 为两次读取的差值;
  3. 读取 /sys/fs/cgroup/cpuacct/cpuacct.usage_percpu 文件获取系统分给容器的CPU总核数,percpuUsage 为该值;
  4. 当前CPU使用率为: cpuPercent = (cpuDelta / systemDelta) * percpuUsage (cpuDelta、systemDelta 需要进行单位换算)

参考: https://stackoverflow.com/questions/35692667/in-docker-cpu-usage-calculation-what-are-totalusage-systemusage-percpuusage-a

相关问题