【问题标题】:Need guidance for prometheus memory utilization queryprometheus内存利用率查询需要指导
【发布时间】:2020-01-11 01:10:09
【问题描述】:

我正在使用 prometheus 查询 '100 - ((node_memory_MemAvailable_bytes{job="jobname"} * 100) / node_memory_MemTotal_bytes{job="jobname"})' 来获取内存利用率及其工作正常。

上面的查询给出了当前内存利用率的结果。

我需要重构查询以获得最近 1 小时的内存利用率。例如,如果内存利用率在上午 9.15 时达到 10 MB 以上,而当前内存利用率在上午 10 时为 2 MB,现在我需要检查上午 9 点到 10 点之间的内存利用率是否超过 9 MB

请指导我如何为其构建普罗米修斯查询,我认为它类似于, '(100 - ((node_memory_MemAvailable_bytes{job="jobname"} * 100) / node_memory_MemTotal_bytes{job="jobname"}))>9[1H]'

【问题讨论】:

    标签: prometheus


    【解决方案1】:

    您可能需要SLI value 回答以下问题:jobname 在过去一小时内使用超过 90% 的内存的时间有多少?那么下面的 PromQL 查询应该会回答这个问题:

    avg_over_time(
        ((1 - node_memory_MemAvailable_bytes{job="jobname"} /
        node_memory_MemTotal_bytes{job="jobname"}) >bool 0.9)[1h:1m]
    )
    

    返回值将在[0..1] 范围内,其中0 表示 0%(即过去一小时内存使用率未超过 90%),而1 表示 100%(即内存使用率是在过去一小时内一直高于 90%)。

    查询使用以下 PromQL 功能:

    【讨论】:

    • 喜欢带有文档链接的答案 - 谢谢@valyala!
    【解决方案2】:

    100 - ((node_memory_MemAvailable_bytes{job="jobname"} * 100) / node_memory_MemTotal_bytes{job="jobname"})[30m:1m]

    这将列出每 1 分钟的内存利用率值

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2016-04-25
      • 2018-08-01
      • 2013-03-19
      相关资源
      最近更新 更多