【问题标题】:How to get cpu and memory usage of nodes/pods in prometheus?如何获取 prometheus 中节点/pod 的 cpu 和内存使用情况?
【发布时间】:2021-05-09 10:55:45
【问题描述】:

作为初学者,我尝试过 k9s 和 kubernetes 'kubectl top nodes',因为 cpu 和内存使用情况和值是匹配的。同时我尝试使用 prometheus UI,使用 'avg(container_cpu_user_seconds_total{node="dev-node01"})' 和 'avg(container_cpu_usage_seconds_total{node="dev-node01"})' 用于开发-节点01。我无法获得匹配的值。任何帮助将不胜感激,因为我是初学者。请提供任何帮助。

【问题讨论】:

    标签: kubernetes prometheus


    【解决方案1】:

    container_cpu_usage_seconds_totalcounter,因此您需要了解其含义以及如何查询计数器。

    在这种情况下,您可能需要使用rate 函数documented here

    rate(v range-vector) 计算范围向量中时间序列的每秒平均增长率...rate 只能与计数器一起使用...请注意,将rate() 与聚合运算符结合使用时,总是先取rate(),然后再聚合。

    每个 pod 的 CPU 使用情况的示例查询是:

    sum(rate(container_cpu_usage_seconds_total{}[1h])) by (pod_name, namespace)
    

    另外,您可能想查看Kubecost 了解 k8s 分配指标和 API。

    【讨论】:

    • 如何检查每个节点? @尼科·科瓦切维奇。我尝试了但无法将值与kubectl top nodes 匹配。
    • 您可以按node 而不是pod_name, namespace 进行分组:sum(rate(container_cpu_usage_seconds_total{}[1h])) by (node) 另请注意,这与运行kubectl top nodes 不同,因为它会平均给定窗口的使用情况。但它应该很接近。
    • 是的,我正在接近价值观。做了avg 而不是sum。同时我尝试了kubecost,看起来很有趣。感谢您的帮助。@Niko Kovacevic
    【解决方案2】:

    如果指标“container_cpu_user_seconds_total”显示输出,那么它应该可以工作。我使用了您上面提到的相同查询,它对我有用。检查 Prometheus 中的图形和控制台选项卡。

    请试试这个

    avg(container_cpu_user_seconds_total{node="NODE_NAME"})
    

    【讨论】:

    • 我得到了不同的值
    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2021-06-29
    • 2015-09-09
    • 2020-06-25
    相关资源
    最近更新 更多