Hao*_* Ge 19 kubernetes prometheus
我想计算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)
Run Code Online (Sandbox Code Playgroud)
但是,我发现每秒的增量都container_cpu_usage{id="/"}大于增量sum(process_cpu_seconds_total).因此使用量可能大于1 ...
Cam*_*mil 28
我用它来获得集群级别的CPU使用率:
sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100
Run Code Online (Sandbox Code Playgroud)
我还跟踪每个pod的CPU使用情况.
sum (rate (container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name)
Run Code Online (Sandbox Code Playgroud)
我在GitHub上有一个完整的kubernetes-prometheus解决方案,也许可以帮助你提供更多指标:https://github.com/camilb/prometheus-kubernetes
val*_*ala 12
以下查询返回过去 5 分钟内每个容器使用的平均 CPU 数:
rate(container_cpu_usage_seconds_total{container!~"POD|"}[5m])
Run Code Online (Sandbox Code Playgroud)
方括号中的后视窗口(5m在上面的情况下)可以更改为所需的值。请参阅此处可能的持续时间值。
过滤container!~"POD|"器删除与 cgroups 层次结构相关的指标(有关更多详细信息,请参阅此答案pause)和容器等指标(请参阅这些文档)。
由于每个容器pod可以包含多个容器,因此可以使用以下查询返回过去 5 分钟内每个 Pod 平均使用的 CPU 数量:
sum(
rate(container_cpu_usage_seconds_total{container!~"POD|"}[5m])
) by (namespace,pod)
Run Code Online (Sandbox Code Playgroud)
我创建了自己的 prometheus 导出器 ( https://github.com/google-cloud-tools/kube-eagle ),主要是为了更好地了解每个节点的资源利用率。但它也提供了一种更直观的方式来监控您的 CPU 和 RAM 资源。获取集群范围 CPU 使用率的查询如下所示:
sum(eagle_pod_container_resource_usage_cpu_cores)
Run Code Online (Sandbox Code Playgroud)
但是您也可以通过命名空间、节点或节点池轻松获取 CPU 使用率。
指标定义
\ncontainer_cpu_usage_seconds_total- 顾名思义,特定容器的 CPU 使用时间(以秒为单位)。除此之外的速率将显示容器每秒使用多少个 CPU 秒。
container_spec_cpu_period- 表示跟踪容器 CPU 利用率的时间段。我将其理解为 CPU“周期”的持续时间。对于 docker 容器来说通常100000是微秒。
container_spec_cpu_quota- 您的容器在每个 cpu_period 中拥有多少 CPU 时间(以微秒为单位)\xe2\x80\x94 将“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)。
样品一份
\nsum(rate(container_cpu_usage_seconds_total{name!~".*prometheus.*", image!="", container_name!="POD"}[5m])) by (pod_name, container_name)\n/sum(container_spec_cpu_quota{name!~".*prometheus.*", image!="", container_name!="POD"}\n /container_spec_cpu_period{name!~".*prometheus.*", image!="", container_name!="POD"}) by (pod_name, container_name)\nRun Code Online (Sandbox Code Playgroud)\n来源:
\n\n| 归档时间: |
|
| 查看次数: |
32491 次 |
| 最近记录: |