从 prometheus-node-exporter 导出的指标中找到准确的 CPU 百分比
Find exact CPU percentage from the metrics exported by prometheus-node-exporter
我为此使用 node_cpu_seconds_total
指标。
基本上,我想从总 CPU 使用量中减去 mode="idle"
,然后取结果的平均速率,然后计算百分比。
我试过类似的方法:
100 - (avg(rate(node_cpu_seconds_total{instance="ip-X-X-X-X.eu-west-1.compute.internal:9100",job="rabbitmq-prod-node-exporter",replica="prometheus-prod"} - node_cpu_seconds_total{instance="ip-X-X-X-X.eu-west-1.compute.internal:9100",mode="idle",job="rabbitmq-prod-node-exporter",replica="prometheus-aws-prod"}))[1m] * 100)
但似乎不合适,还显示解析错误:
Error executing query: parse error at char 177: range specification must be preceded by a metric selector, but follows a *promql.AggregateExpr instead
要修复您的 PromQL,请将其更改为以下内容:
100 - (avg(rate(node_cpu_seconds_total{instance="INSTANCE",job="JOB",replica="REPLICA"}[1m])) - avg(rate(node_cpu_seconds_total{instance="INSTANCE",mode="idle",job="JOB",replica="REPLICA"}[1m])) * 100)
但最好使用“irate”而不是“rate”,并使用以下更简单的 PromQL:
100 - 100 * (avg(irate(node_cpu_seconds_total{instance="INSTANCE",job="JOB",replica="REPLICA",mode="idle"}[1m])))
我为此使用 node_cpu_seconds_total
指标。
基本上,我想从总 CPU 使用量中减去 mode="idle"
,然后取结果的平均速率,然后计算百分比。
我试过类似的方法:
100 - (avg(rate(node_cpu_seconds_total{instance="ip-X-X-X-X.eu-west-1.compute.internal:9100",job="rabbitmq-prod-node-exporter",replica="prometheus-prod"} - node_cpu_seconds_total{instance="ip-X-X-X-X.eu-west-1.compute.internal:9100",mode="idle",job="rabbitmq-prod-node-exporter",replica="prometheus-aws-prod"}))[1m] * 100)
但似乎不合适,还显示解析错误:
Error executing query: parse error at char 177: range specification must be preceded by a metric selector, but follows a *promql.AggregateExpr instead
要修复您的 PromQL,请将其更改为以下内容:
100 - (avg(rate(node_cpu_seconds_total{instance="INSTANCE",job="JOB",replica="REPLICA"}[1m])) - avg(rate(node_cpu_seconds_total{instance="INSTANCE",mode="idle",job="JOB",replica="REPLICA"}[1m])) * 100)
但最好使用“irate”而不是“rate”,并使用以下更简单的 PromQL:
100 - 100 * (avg(irate(node_cpu_seconds_total{instance="INSTANCE",job="JOB",replica="REPLICA",mode="idle"}[1m])))