我正在将StatsD格式的指标发送给Telegraf,后者将它们转发给InfluxDB 0.9。
我正在测量来自多个主机的执行时间(某些事件)。测量称为“execTime”,标签为“host”。一旦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 :(得分:0)
我需要的是一个新系列,它是所有主机上execTime.count和execTime.mean的组合。最好的方法似乎是与其他人一起创建系列,而不是在运行中计算这个系列。
所以现在我在每个主机上为每个事件生成两个计时器统计信息:
1. one event with actual hostname for the 'host' tag
2. second event with one tag "host=all"
我可以使用第一组系列来检查每台主机的平均执行时间。第二个系列给了我所有主机合并的平均时间。
答案 1 :(得分:0)
如果两个系列都是同一测量的成员,则可以对来自两个不同系列的字段进行数学运算。我怀疑您的架构未针对您的用例进行优化。
您能否共享一些示例写入语句,以便我们可以直接理解您的架构?