2016-01-17 298 views
0

我正在以StatsD格式向Telegraf发送指标,将它们转发给InfluxDB 0.9。InfluxDB:计算StatsD“executionTime”值的平均值的查询

我正在测量多个主机的执行时间(某些事件)。测量称为“execTime”,标记为“主机”。一旦Telegraf获得这些数字,它将计算平均/上/下/数,并将它们存储在单独的测量中。

样品数据看起来像这样在influxdb:

TIME...FIELD..............HOST..........VALUE 
t1.....execTime.count.....VM1...........3 
t1.....execTime.mean......VM1...........15 
t1.....execTime.count.....VM2...........6 
t1.....execTime.mean......VM2...........22 

(所以在t1时刻,有对VM1 3个场次,平均执行时间为15ms,并且在VM2有6个事件,平均执行时间是22ms)

现在我想计算两个主机在时间t1的操作执行时间的平均值。 (3 * 15 + 6 * 22)/(3 + 6)ms。

但由于计值和平均值是在两个不同的系列,我不能简单地用“从execTime.mean选择平均(值)”

我需要改变我的模式,或者我可以做这与当前的设置?

回答

0

我所需要的基本上是一个新系列,它是所有主机上的execTime.count和execTime.mean的组合。而不是在即时计算,最好的办法似乎是与其他人一起创建系列。

所以现在我有每台主机为每个事件上产生个定时器统计:

1. one event with actual hostname for the 'host' tag 2. second event with one tag "host=all"

我可以使用第一套系列检查每个主机平均执行时间。第二个系列给我所有主机组合的平均时间。

0

如果两个系列都是同一测量的成员,则可以对来自两个不同系列的字段进行数学运算。我怀疑你的模式没有针对你的用例进行优化。

您可以分享一些示例写入语句,以便我们可以直接了解您的模式吗?