当前位置:  开发笔记 > 编程语言 > 正文

在不对通配符求和的情况下对多个指标求和?

如何解决《在不对通配符求和的情况下对多个指标求和?》经验,为你挑选了1个好方法。

我有以下指标:

folsomite..cache.hit1

folsomite..cache.hit2

folsomite..cache.miss1

folsomite..cache.miss2

folsomite..cache.miss3

(我正在使用的缓存库有2种命中:第一次机会和第二次机会,以及3种口味的错过)

我想算一算(hit1 + hit2) / (miss1 + miss2 + miss3).我以为我会从计算开始(hit1 + hit2),但如果我使用sumSeriesas sumSeries(folsomite.*.cache.hit*),那么它也会对值进行求和.

如何在一些通配符上汇总多个指标,而不是对其他通配符进行求和?或者我如何在保留通配符的同时专门添加两个(或更多指标)?

并且,在完成此操作后,我可以将一个(求和)结果除以另一个吗?

编辑:我实际上是使用grafana来渲染图形.这有什么区别吗?



1> kwarunek..:

注意我没有解决这个问题,但信息可能会有所帮助.我们假设石墨中有以下数据

folsomite.A.cache.hit1
folsomite.B.cache.hit1
folsomite.A.cache.hit2
folsomite.C.cache.hit1
folsomite.B.cache.hit2
folsomite.A.cache.miss1
folsomite.B.cache.miss1
folsomite.A.cache.miss2
folsomite.A.cache.miss3
folsomite.C.cache.miss2
folsomite.B.cache.miss2

要通过一个通配符组,你应该使用groupByNode所以

groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries')

将输出指标A,B,C与总结命中.由于miss的groupByNode将返回相同的度量名称,我们应该以某种方式区分它.使用aliasSub.所以现在我们有:

aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit')
aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')

和公制我们得到的是A.hit,B.hit,C.hit,A.miss,B.miss,C.miss.

接下来我们可以尝试reduceSeries(这对我不起作用,我遗漏了一些东西:)).由于减少了期望的系列列表,它需要由groupmapSeries组合,所以

group(
  aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'), 
  aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')
)

将输出完全错过并命中系列.现在减少

 reduceSeries(
   group(
     aliasSub(groupByNode(folsomite.*.cache.hit*, 1, 'sumSeries'), '(.*)', '\1.hit'),
     aliasSub(groupByNode(folsomite.*.cache.miss*, 1, 'sumSeries'), '(.*)', '\1.miss')
   ), 'divideSeries', 1, 'hit', miss')

就这样.也许以后我会尝试不同的方法但是...我希望它至少会给出一些提示.

由于grafana能够使用变量设置模板,因此可以使用它,但我必须深入研究这个功能.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有