M15*_*156 14 performance cpu-usage performance-testing prometheus
目前我正通过Prometheus.io监控码头集装箱.我的问题是我只是得到"cpu_user_seconds_total"或"cpu_system_seconds_total".我的问题是如何将这个不断增加的值转换为CPU百分比?
目前我在查询:
rate(container_cpu_user_seconds_total[30s])
Run Code Online (Sandbox Code Playgroud)
但我不认为它是正确的(与顶部相比).
如何将cpu_user_seconds_total转换为CPU百分比?(就像在顶部)
bri*_*zil 18
Rate返回每秒的值,因此乘以100将得出一个百分比:
rate(container_cpu_user_seconds_total[30s]) * 100
val*_*ala 14
请注意,container_cpu_user_seconds_total和container_cpu_system_seconds_total是每个容器的计数器,它们相应地显示特定容器使用的 CPU 时间user space(kernel space有关更多详细信息,请参阅这些文档)。Cadvisor公开了额外的指标 - container_cpu_usage_seconds_total. 该指标等于 和 的总和container_cpu_user_seconds_total,container_cpu_system_seconds_total例如,它显示每个容器使用的总体 CPU 时间。请参阅这些文档以了解更多详细信息。
这container_cpu_usage_seconds_total是一个计数器,例如它随着时间的推移而增加。对于确定特定时间的 CPU 使用情况,这并不能提供太多信息。Prometheus 提供了rate()函数,该函数返回计数器每秒的平均增长率。container_cpu_usage_seconds_total例如,以下查询返回过去 5 分钟内每个容器指标的平均每秒增量(请5m参阅方括号中的后向窗口):
rate(container_cpu_usage_seconds_total[5m])
Run Code Online (Sandbox Code Playgroud)
这基本上是过去 5 分钟内使用的 CPU 核心的平均数量。只需将其乘以 100 即可获得 CPU 使用率百分比。请注意,如果容器在过去 5 分钟内使用多个 CPU 核心,则结果值可能会超过 100%。
在生产 Kubernetes 中,通常rate(container_cpu_usage_seconds_total[5m])会返回大量带有许多长标签的时间序列,因此最好使用以下查询:
sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (pod)
Run Code Online (Sandbox Code Playgroud)
sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (node)
Run Code Online (Sandbox Code Playgroud)
sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (namespace)
Run Code Online (Sandbox Code Playgroud)
过滤container!=""器删除与层次结构相关的多余指标cgroups-有关更多详细信息,请参阅此答案。
Chr*_*lma 10
我还发现这种方式可以使CPU使用率准确:
100 - (avg by (instance) (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) * 100)
Run Code Online (Sandbox Code Playgroud)
来自:http://www.robustperception.io/understanding-machine-cpu-usage/