关于OpenTSDB数据模型的澄清

时间:2015-04-19 22:47:45

标签: hbase time-series opentsdb

我正在为一所学校项目使用OpenTSDB。在项目中,我应该创建一个用于存储机器人时间序列数据的结构。每个机器人以每秒5次的速率收集数据,并且最多可以有100个活动机器人。

我设法建立了OpenTSDB并将其链接到HBase集群。但在阅读openTSDB's website上的文档后,我觉得我对数据模型没有明确的看法。该网站称,每次系列数据点都需要以下数据:

  • 度量
  • 时间戳
  • tag(s) - 键/值

这让我想到了第一个问题。什么是value?为什么需要它?

回到机器人;每个机器人由两个ID识别,每个测量由总共9个值组成。因此,每个测量与总共11个值/标签相关联。将这一点与对度量,值和UnixTimestamp的需求结合起来,它在OpenTSDB中总共有14个标签。 OpenTSDB的默认设置不支持那么多值。我知道可以通过更改OpenTSDB的配置文件来增加标签的数量,但互联网也告诉我,增加标签的数量可能会非常slow down queries

有关我应该如何解决此问题的任何建议?我应该增加标签数量吗?或者还有另一种解决方法吗?

注意:所有与测量相关的值将始终被访问并一起绘制。

1 个答案:

答案 0 :(得分:3)

所以我刚刚意识到OpenTSDB每个指标只能绘制一个值 - 这就是价值的目的......愚蠢的我:)

我原来的想法是标签(键/值)可以用作绘图的值。但标签仅提供实际值的搜索条件。因此,如果您具有与我类似的结构,则必须将值存储在单独的度量标准中,并将值与机器人相关联。在JSon中它看起来像这样:

{"metric": "value1", "timestamp": 1429542213, "value": 10, "tags":            
{"robotName": 1}}
{"metric": "value2", "timestamp": 1429542213, "value": 20, "tags":            
{"robotName": 1}}
// value 3, 4, 5, 6, 7, 8, 9

这意味着对于我的每个机器人测量,我需要存储9个不同的时间序列。由于每个机器人每秒发送5次数据,因此每个机器人每秒总计45个时间序列。如果我希望拥有100个活跃的机器人,那么这将达到每秒4500个指标。