我想计算一个kubernetes集群中所有pod的cpu使用情况。我发现Prometheus中的两个指标可能有用:
container_cpu_usage_seconds_total: Cumulative cpu time consumed per cpu in seconds.
process_cpu_seconds_total: Total user and system CPU time spent in seconds.
Cpu Usage of all pods = increment per second of sum(container_cpu_usage_seconds_total{id="/"})/increment per second of sum(process_cpu_seconds_total)
字符串
但是,我发现container_cpu_usage{id="/"}
每秒的增量大于sum(process_cpu_seconds_total)
的增量。因此,使用可能大于1…
5条答案
按热度按时间oyjwcjzk1#
我使用它来获取集群级别的CPU使用率:
字符串
我还跟踪每个pod的CPU使用情况。
型
我在GitHub上有一个完整的kubernetes-prometheus解决方案,也许可以帮助您获得更多指标:https://github.com/camilb/prometheus-kubernetes
x1c 0d1x的数据
的
waxmsbnn2#
我创建了自己的prometheus导出器(https://github.com/google-cloud-tools/kube-eagle),主要是为了更好地了解每个节点的资源利用情况。但它也提供了一种更直观的方式来监控CPU和RAM资源。获取群集范围CPU使用率的查询如下所示:
字符串
但是你也可以很容易地通过命名空间、节点或节点池获得CPU使用情况。
jaql4c8m3#
以下查询返回过去5分钟内每个容器使用的CPU平均数:
字符串
可以将方括号中的lookbehind窗口(在上述情况下为
5m
)更改为所需的值。请在此处查看可能的持续时间值。container!~"POD|"
过滤器删除与cgroups层次结构相关的指标(更多细节请参见此答案)和例如pause
容器(参见these docs)。由于每个
pod
可以包含多个容器,因此可以使用以下查询返回过去5分钟内每个pod使用的CPU平均数:型
y0u0uwnf4#
你也可以使用下面的查询:
字符串
hpxqektj5#
指标定义
container_cpu_usage_seconds_total
-特定容器的CPU使用时间(以秒为单位),顾名思义。在此之上的速率将显示容器每秒使用多少CPU秒。container_spec_cpu_period
-表示跟踪容器CPU利用率的时间段。我将其理解为CPU“周期”的持续时间。对于docker容器,通常为100000
微秒。container_spec_cpu_quota
-您的容器在每个cpu_period中有多少CPU时间(以微秒为单位)-结果是将“CPU单位”乘以container_spec_cpu_period
。只有在为容器定义限制时才有。container_spec_cpu_quota / container_spec_cpu_period
实际上会告诉你每秒有多少CPU秒,那么容器的CPU使用率可能是container_cpu_usage_seconds_total
/(container_spec_cpu_quota / container_spec_cpu_period)。一个样品
字符串
资料来源:
Average CPU % usage per container