Ale*_*lex 7 kubernetes prometheus
我运行了v1.9.2
Kubernetes 的自定义设置,并使用Prometheus抓取了各种指标v2.1.0
。除其他外,我抓了kubelet
和cAdvisor
指标。
我想回答这个问题:“ 如何通过定义的CPU资源的多少requests
和limits
?在我的部署实际上是在使用中(毫)内核方面荚(及其容器) ”
有许多可用的刮除指标,但并非如此。也许可以通过以秒为单位的CPU使用时间来计算,但是我不知道如何。
我一直在考虑这是不可能的-直到一个朋友告诉我她在集群中运行Heapster时,内置Grafana中有一个图形准确地表明:它在(milli)内核中显示pod及其容器的单个CPU使用情况。
由于Heapster还使用kubelet
和cAdvisor
度量,所以我想知道:我该如何计算?InfluxDB中的指标已命名,cpu/usage_rate
但是即使使用Heapster的代码,我也无法弄清楚他们如何计算它。
任何帮助表示赞赏,谢谢!
我们正在使用该container_cpu_usage_seconds_total
指标来计算Pod CPU使用率。此指标包含每个容器按核心消耗的CPU秒总数(这很重要,因为Pod可能包含多个容器,每个容器都可以跨多个内核进行调度;但是,该指标具有pod_name
注释,我们可以将其用于聚合)。特别令人关注的是该指标的变化率(可以使用PromQL的rate()
函数进行计算)。如果在1秒钟内增加1,则Pod在该秒内消耗1个CPU内核(或1000毫内核)。
下面的PromQL查询就是这样做的:计算sum(...) by (pod_name)
平均五分钟内所有Pod(使用该操作)的CPU使用率:
sum(rate(container_cpu_usage_seconds_total[5m])) by (pod_name)
Run Code Online (Sandbox Code Playgroud)
以下 PromQL 查询返回从 Kubernetes v1.16 及更高版本开始的每个 Pod 已使用的 CPU 核心数:
sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (pod)
Run Code Online (Sandbox Code Playgroud)
{container!=""}
需要该过滤器来过滤 cgroups 分层统计信息,该统计信息已包含在每个容器的统计信息中。有关于此的更多详细信息,请参阅此答案。
以下 PromQL 查询必须用于 v1.16 以下的 Kubernetes,因为它使用不同的标签名称(例如,container_name
代替container
和pod_name
代替pod
-有关详细信息,请参阅此问题):
sum(rate(container_cpu_usage_seconds_total{container_name!=""}[5m])) by (pod_name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4065 次 |
最近记录: |