当我使用 cadvisor 在 docker 容器中获取有关 cpu 的信息时,我得到的信息如下:
我的问题是如何通过cadvisor返回的信息来计算cpu使用率和负载,这与Prometheus相同?Prometheus如何计算cpu使用率?
Prometheus 使用的算法rate()
有点复杂,因为它处理了对齐和计数器重置等问题,如Counting with Prometheus中所述。
简短的版本是从最后一个值中减去第一个值,然后除以它们结束的时间。使用 Prometheus 可能比自己动手更容易。
下面的查询应该返回消耗最多 CPU 时间的前 10 个容器:
topk(10, sum(irate(container_cpu_usage_seconds_total{container_label_com_docker_swarm_node_id=~".+", id=~"/docker/.*"}[$interval])) by (name)) * 100