2

我正在与 OpenTSDB 合作开展学校项目。在项目中,我应该创建一个用于存储来自机器人的时间序列数据的结构。数据以每秒 5 次的速度收集,每个机器人最多可以有 100 个活动机器人。

我已经设法设置 OpenTSDB 并将其链接到 HBase 集群。然而,在阅读了openTSDB 网站上的文档后,我觉得我对数据模型没有清晰的认识。该网站表示,每个时间序列数据点都需要以下数据:

  • 公制
  • 时间戳
  • 价值
  • 标签 - 键/值

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

回到机器人;每个机器人由两个 ID 标识,每个测量值总共包含 9 个值。因此,每次测量都与总共 11 个值/标签相关联。再加上对度量、值和 UnixTimestamp 的需求,OpenTSDB 中总共有 14 个标签。OpenTSDB 的默认设置不支持那么多值。我知道可以通过更改 OpenTSDB 的配置文件来增加标签的数量,但是互联网也告诉我,增加标签的数量会大大减慢查询速度

关于我应该如何解决这个问题的任何建议?我应该只增加标签的数量吗?还是有其他方法可以解决这个问题?

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

4

1 回答 1

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 个指标。

于 2015-04-20T21:29:42.577 回答