我正在尝试监视安装和运行Prometheus的机器的CPU利用率。我有一个指标'process_cpu_seconds_total'。我可以找到该指标的愤怒或率。但我不太清楚如何提出CPU利用率的百分比值。无论如何我可以使用此process_cpu_seconds_total指标来查找Prometheus运行的机器的CPU利用率吗?
对其他人的好处也是迟到的答案:
如果您只想监视prometheus进程使用的CPU百分比,您可以使用process_cpu_seconds_total
,例如:就像是:
avg by (instance) (irate(process_cpu_seconds_total{job="prometheus"}[1m]))
但是,如果您想要机器的一般监视器,我怀疑您可能是,您应该使用Node exporter。
Brian Brazil关于Prometheus CPU监控的帖子非常相关且有用:https://www.robustperception.io/understanding-machine-cpu-usage
一种方法是利用适当的cgroup资源报告。 Cgroup将CPU核心时间分为1024个共享。因此,通过了解进程消耗的共享数量,您始终可以找到CPU利用率的百分比。
现在在你的情况下,如果你有CPU秒的变化率,这是过程在上一个时间单位中使用CPU时间的时间(从现在开始假定为1秒)。然后取决于你拥有多少个核心,最后1个单元中的1个CPU将具有1个CPU秒。因此,如果您的变化率为3,并且您有4个核心。
3/4 = 75% CPU utilization.
这只是一个粗略的估计,因为你的process_total_cpu时间可能由于延迟和延迟等而不是很准确。