我想获得一些有关客户工作的统计信息,这些统计信息可以在多个状态(空闲,准备,处理,清理)之间转换
在确定如何公开指标方面我需要一些帮助。
我们有以下标签:
客户(基数约为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 时间吗?
处理此问题的最佳方法是什么?
谢谢