在Prometheus中使用状态标签的最佳方法

时间:2019-11-14 22:43:20

标签: prometheus

我想获得一些有关客户工作的统计信息,这些统计信息可以在多个状态(空闲,准备,处理,清理)之间转换

在确定如何公开指标方面我需要一些帮助。

我们有以下标签:

客户(基数约为250)

process_type (基数为10)

状态(基数4)

process_type 的活动时间比 state 更长(对于每个进程,我们都有状态转换)

一个作业一次可以处理一种类型,可以处于一种状态。

我希望能够进行avg_over_time(job_status....[24h])并获取每个客户在非空闲状态下花费的时间百分比(然后按流程类型将其细分)。

仅将有效组合(针对每个客户)公开为超级度量,如:

job_status{customer="C1", process_type="T1", state="running"} 1

(总共250个值)将导致数据点出现和消失,具体取决于 state process 类型,并使 avg_over_time 不显示正确的结果。

我们可以公开进程的所有可能组合以及状态(每个客户)(不为0的状态),但是我们将为1万个数据点公开250个活动状态(每个客户40个组合)

或者,我们可以公开“较小”的指标:

job_state{customer="C1", state="running"} 1
job_state{customer="C1", state="preparing"} 0
job_state{customer="C1", state="processing"} 0
job_state{customer="C1", state="cleanup"} 0

job_type{customer="C1", process_type="T1"} 1
job_type{customer="C1", process_type="T2"} 0
...
job_type{customer="C1", process_type="T10"} 0

(每位客户总共14种组合),然后使用类似job_state==1 and on (customer) group_left() (job_type == 1)的方式将其缝合在一起

我是否甚至需要枚举作业类型,还是可以将活动类型设置为1,因为初始过滤是由 job_state == 1 group_left之后的重组值完成的总是会返回 process_type 的有效值-在上面我可以执行 avg_over 时间吗?

处理此问题的最佳方法是什么?

谢谢

0 个答案:

没有答案