Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况

Posted

技术标签:

【中文标题】Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况【英文标题】:Prometheus queries to get CPU and Memory usage in kubernetes pods 【发布时间】:2019-08-04 05:37:33 【问题描述】:

我需要使用 prometheus 查询来获取 kubernetes pod 中的 CPU 和内存使用情况。有人可以帮忙吗?

【问题讨论】:

请提供更多关于您当前情况的信息。 Prometheus 是否已启动并正在运行,但您不知道如何查询指标?您是否无法让 Prometheus 在您的集群中运行? count k8s cluster cpu/memory usage with prometheus的可能重复 是的。它已启动并正在运行我希望收到有关 pod 的 CPU 和内存使用情况的警报。为此,我需要进行普罗米修斯查询。请问你用的是什么? 我想要这样的东西 "sum(container_memory_usage_bytesnamespace="$namespace", pod_name="$pod", container_name!="POD") by (container_name)" 因为有此查询中的变量我无法发送警报。 请使用您尝试过的任何查询来编辑您的问题。 【参考方案1】:

您是否使用 prometheus-operator 从 kubernetes 收集数据? 如果是,你可以使用这样的东西: 总和(container_memory_usage_bytes) 总和(container_cpu_usage_seconds_total) 举个例子。

【讨论】:

我想要这样的东西 "sum(container_memory_usage_bytesnamespace="$namespace", pod_name="$pod", container_name!="POD") by (container_name)" 因为有此查询中的变量我无法发送警报。【参考方案2】:

CPU 百分比

avg((sum (rate (container_cpu_usage_seconds_total container_name!="" ,pod="<Pod name>"  [5m])) by (namespace , pod, container ) / on (container , pod , namespace) ((kube_pod_container_resource_limits_cpu_cores >0)*300))*100)

内存百分比

avg((avg (container_memory_working_set_bytespod="<pod name>") by (container_name , pod ))/ on (container_name , pod)(avg (container_spec_memory_limit_bytes>0 ) by (container_name, pod))*100)

您可以在查询中使用上面带有 pod 名称的 promql。

【讨论】:

你为什么要乘以 300

以上是关于Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus 查询 Kubernetes pod 正常运行时间

如何在 Kubernetes Dashboard 中获取 Prometheus 数据

多值 Prometheus 查询 Grafana

如何使用 Grafana 设置 Prometheus Operator 以启用基本 Kubernetes 监控

Prometheus简介(基于Kubernetes)

将 Prometheus 和 Kubewatch 与 Kubernetes 集群同步