如何使用grafana中的石墨数据源对指标进行不同计数?

时间:2019-09-26 06:24:19

标签: grafana graphite

我有一个指标来显示服务器的状态。值为整数,如果值为0(零),则服务器稳定,否则不稳定。而我们所拥有的图表只是一分钟的水平。因此,我想显示一个汇总值以了解服务器在选定时间范围内不稳定的时间。

让我们说,如果我选择“过去7天”作为持续时间...我们将获得X个小时的服务器不稳定。

还有一件事,我有一个显示服务器状态的线形图(时间序列图)...但是,当我选择“过去24小时或48小时”时,我得到的是一个分钟级别...当我将持续时间增加到四分之一时,我每隔5分钟就会得到一张图表或类似的东西....我知道它是在汇总值....但是任何人都知道格拉芬娜的状态吗聚合??

我已经尝试过“ scaleToSeconds”函数和“ ConsolidateBy”函数,还有更多尝试首先获得非零分钟数的计数,但是没有成功。

任何帮助将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

有几种不同的解决方法,在这种情况下有两个地方会发生聚集:

  1. 查询的时间范围大于原始保留间隔的时间时,耳语会返回聚合的数据。此处使用的聚集方法在您的碳聚集配置中定义。

  2. 当Grafana向Graphite发送查询时,它会通过maxDataPoints=<width of graph in pixels>,并且Graphite将执行聚合以返回最多个点(因为您没有足够的像素来渲染更多的点)。用于此合并的方法由consolidateBy函数控制。

如果您有一个面板可以查询3天的数据,并且以1分钟的间隔存储2天,以5分钟的间隔存储7天,则可以在同一个查询中同时使用这两种方法,然后您会从5分钟的耳语中获得72 * 60/5 = 864点,但是如果您的图形只有500px宽,那么在运行时它将合并为10分钟的间隔并返回432点。

因此,如果您希望始终可以访问计数,则可以更改碳配置,以对这些系列使用sum聚合(并删除现有的耳语文件,以便使用新的聚合配置创建新的耳语文件。 ),并在查询中传递consolidateBy('sum'),您将始终获得每个间隔的总和。

也就是说,您还可以在查询时通过将平均值取回以得出总数来解决此问题(假设您的耳语聚合配置正在使用average)。最简单的方法是将summarize的数据average放入与您要查询的最长聚合间隔匹配的存储桶中,然后按该间隔scale的值来计算总分钟数。最后,您需要使用consolidateBy('sum'),以便任何运行时合并都能正常工作。

consolidateBy(scale(summarize(my.series, '10min', 'avg'), 60), 'sum')

话虽如此,您可能需要考虑以百分比而不是原始分钟数来报告正常运行时间,在这种情况下,您可以直接使用原始平均值。

答案 1 :(得分:0)

当您说该值为零(0)时,服务器处于健康状态-当服务器不健康/不稳定时,还会报告其他哪些值?例如,如果您仅报告零(健康)或一个(不健康),则可以使用sumSeries函数来获取多个服务器之间的计数。

此处需要有关服务器报告的值类型的更多信息,以便为您提供更好的答案。

Grafana通常使用平均聚合函数来聚合(或合并)数据。 You can override this using the 'sum' aggregation in the consolidateBy function

要获得一段时间的运行计算结果,您很可能必须使用summarize function(也用于总和)并定义时间段,例如1小时1天1周,依此类推。您可以将其与time模板变量结合使用,以使此步骤更进一步,以便随着周期的增长/缩小,汇总周期将相应地增加/减少。