【问题标题】:Monitoring CPU Utilization using Prometheus使用 Prometheus 监控 CPU 利用率
【发布时间】:2018-08-01 16:14:38
【问题描述】:

我正在尝试监控安装和运行 Prometheus 的机器的 CPU 利用率。我有一个指标process_cpu_seconds_total。我可以找到这个指标的愤怒或比率。但我不太确定如何得出 CPU 利用率的百分比值。无论如何我可以使用这个process_cpu_seconds_total 指标来查找运行 Prometheus 的机器的 CPU 利用率吗?

【问题讨论】:

    标签: cpu-usage prometheus promql


    【解决方案1】:

    为了他人的利益而迟到的答案:

    如果您只想监控 prometheus 进程 使用的 CPU 百分比,您可以使用 process_cpu_seconds_total,例如类似:

    avg by (instance) (irate(process_cpu_seconds_total{job="prometheus"}[1m]))
    

    但是,如果您想像我怀疑的那样对机器 CPU 进行常规监控,您应该设置 Node exporter,然后使用与上述类似的查询,指标为 node_cpu_seconds_total。例如:

    avg by (instance,mode) (irate(node_cpu_seconds_total{mode!='idle'}[1m]))
    

    rateirate 等于百分比(取 1),因为它们是一秒中使用的秒数,但通常需要跨机器上的内核/cpu 聚合。
    Brian Brazil 关于 Prometheus CPU 监控的帖子非常相关和有用:https://www.robustperception.io/understanding-machine-cpu-usage

    【讨论】:

      【解决方案2】:

      一种方法是利用适当的 cgroup 资源报告。 Cgroup 将一个 CPU 核心时间分成 1024 份。因此,通过了解进程消耗了多少份额,您总能找到 CPU 利用率的百分比。

      现在在你的情况下,如果你有 CPU 秒的变化率,这是进程在最后一个时间单位中使用 CPU 时间的时间(假设从现在开始为 1 秒)。然后取决于你有多少核心,最后 1 个单元中的 1 个 CPU 将有 1 个 CPU 秒。因此,如果您的变化率为 3,并且您有 4 个核心。

      3/4 = 75% CPU utilization.

      这只是一个粗略的估计,因为由于延迟和延迟等原因,您的 process_total_cpu 时间可能不是很准确。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多