【问题标题】:Is there any way to represent POD CPU usage in terms of CPU cores using prometheus metrics有没有什么方法可以使用 prometheus 指标根据 CPU 内核来表示 POD CPU 使用率
【发布时间】:2020-08-24 20:50:12
【问题描述】:

我只想将 POD 的 CPU 指标表示如下

我能够用 CPU 内核来表示 CPU 请求和限制,这些内核可通过 prometheus 抓取指标直接获得。

但是在普罗米修斯中,我没有看到任何直接指标来获取 POD 使用的 CPU 内核,因此,有人可以给我一个解决方法或一种方法来表示 POD 的 CPU 使用率,以 CPU 内核的形式。

提前致谢

【问题讨论】:

    标签: prometheus grafana promql kubernetes-metrics


    【解决方案1】:

    您要查找的查询是这个:

    sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[1m])) by (pod_name)
    

    这里是解释(从内到外,Prometheus 计算这个查询):

    • container_cpu_usage_seconds_total 告诉你 CPU 被占用了多长时间。 1s = 一个核心持续一秒
    • {container_name!="POD"} 忽略元 cGroups。
    • rate(....[1m]) 为您提供定义间隔内的值变化,此处为 1 分钟
    • sum(....) by (pod_name) 将所有包含相同 pod 名称的值相加,如果我们在同一个 pod 中有多个容器,就会出现这种情况

    有关 Kubernetes 中 Prometheus 的更多信息,您可以在此处阅读此博客:https://blog.freshtracks.io/a-deep-dive-into-kubernetes-metrics-part-3-container-resource-metrics-361c5ee46e66

    【讨论】:

    • 感谢您提供的信息,但是当我应用上述原则时,我观察到如下图所示 [pod cpu uage]:i.stack.imgur.com/vV16Q.jpg 尽管 cpu 使用率并未接近 cpu 限制(即使在我将结果值乘以 100 之后)cpu 开始节流。所以我认为你提到的上述原则是不准确的或者请帮助我理解如果我做错了什么
    • 顺便说一下,下面是我的pod资源配置资源:请求:内存:“64Mi”cpu:“250m”限制:内存:“128Mi”cpu:“500m”
    • 上述 Prometheus 查询工作正常,但不知何故在 Minikube 中,即使 CPU 使用率未接近定义的限制,pod 也会开始节流。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多