【发布时间】:2020-08-10 00:41:27
【问题描述】:
我正在导出一些关于正在运行的任务的指标,可用数据包括按状态和队列划分的当前任务数:
# TYPE gauge
tasks{queue="high", status="queued"} 2.0
tasks{queue="high", status="started"} 1.0
tasks{queue="high", status="successful"} 5.0
tasks{queue="high", status="failed"} 1.0
tasks{queue="low", status="queued"} 1.0
tasks{queue="low", status="started"} 2.0
tasks{queue="low", status="successful"} 3.0
tasks{queue="low", status="failed"} 2.0
当任务从数据库中添加或过期时,这些数字会定期更改,例如,failed 任务数会根据收集数据时数据库中的任务上下浮动。
我没有办法获得总任务数,所以这就是我拥有的所有数据,我想通过它们的status 标签计算任务的百分比,并使用 格拉法纳。
应该如何计算百分比?
到目前为止我已经尝试过:
获取所有成功任务的百分比:
( sum(tasks{status="successful"}) / sum(tasks) ) * 100
按队列获取成功任务的百分比:
( sum(tasks{status="finished"}) by (queue) / sum(tasks) by (queue) ) * 100
我怎样才能按时间得到这个百分比?例如在 Grafana 中设置时间范围时?我可以使用变量$__range,但是我应该怎么计算呢?
我有其他数据,其中我有 count 个指标,我正在执行以下操作:
sum(increase(tasks_total{status="success"}[$__range])) /
sum(increase(tasks_total{status="started"}[$__range]))
但这些都是计数,这些计算不适用于衡量指标。
【问题讨论】:
-
看起来像
sum_over_time()和 [$__interval] 是你需要的。
标签: prometheus grafana metrics promql