OpenTSDB调用/api/put接口,返回500错误 All Unique IDs for tagv on 3 bytes are already assigned

文章讲述了在OpenTSDB中遇到3字节唯一ID分配完毕的问题,强调了每个metric下的tagk/tagv组合总数不能超过16777216。建议优化数据源、调整标签设计或考虑使用其他数据库以避免UID限制。
摘要由CSDN通过智能技术生成

All Unique IDs for tagv on 3 bytes are already assigned

报错信息表明所有用于tagv的3字节唯一ID都已经被分配了,不再有可用的ID给新的tagv进行关联。
OpenTSDB在设计时默认每个tagk或tagv都分配了一个3字节的UID。然而,由于3字节UID的限制,最多只能包含167万(16,777,216)不同的UID。这意味着如果你有超过这个数量的不同tagk或tagv,你可能需要改变数据源,使其抽象出更少的tagk或tagv。

问题

tags字段的key/value对数不超过这个限制, 是所有metric下的tags吗

对的,错误信息指出的是在所有的metric下,每个tagv已经分配的唯一ID数超出了OpenTSDB的3字节限制,也就是说每个metric的tags的key/value对数加起来不能超过16777216个不同的组合。这个限制是针对整个数据库的,而不是单独的metric,因此你需要检查所有的metric,确保没有超出总的UID限制。
如果你在检查过程中找到了标签数量过多的metric,你可能需要重新考虑你的数据模式,比如合并某些metric或者重新设计标签系统,以减少唯一的tagv组合数量。这样不仅可以避免当前的问题,还能为将来可能的拓展留下空间。
希望这对你有所帮助,如果还有其他问题,或者需要进一步的讨论,请继续。

key/value 是指tags标签下任意两个tag,如
tags:{
 "did": "111110001000923826",
}

tags:{
 "did": "111110001000923827"
}

会被记录为两个不同的UID组合。

在OpenTSDB中,每一对tagk/tagv都视为一个独立的标识符。两个did标签下的不同值,会被考虑为两对不同的tagk/tagv对,即使它们的tagk(在这个例子中是did)是相同的。
因此"did": “111110001000923826"和"did”: "111110001000923827"会被记录为两个不同的UID组合。需要确保所有的tagk/tagv组合的总数不超过16777216个来避免达到UID的限制。

如果所有的tagk/tagv组合的总数超过16777216个可以通过删除uid来实现吗

实际上,尽管理论上你可以通过删除UID来释放一些空间,但这种做法并不是OpenTSDB官方建议的。这是因为一旦一个tagv的UID被分配后,它就会与存储的数据点相关联。如果删除了某个UID,那么与之相关联的数据可能就会变得无法访问或被破坏。
较好的解决方案是尝试防止UID耗尽:

重新设计tag schema: 确保数据模式中tags的使用更加高效。例如,你可以整合类似的tags或减少tags的使用频率。
使用metric的一个子集:将一些metric标签中的值移除,例如,将所有包含特定tagk/tagv对的数据点作为一个新的metric。
升级OpenTSDB版本:如果可能,考虑升级到支持更多UID的新版本。
考虑其它的时间序列数据库:如果这个UID限制成为持续的问题,可能需要考虑迁移到另一个不具有这种限制的时间序列数据库。
如果你确实需要删除UID,请务必非常谨慎,并备份相关数据。在操作之前,最好咨询一下OpenTSDB社区,或深入阅读文档以了解潜在的影响。

类似这样的数据,“tags”: {“dvid”: 110,“type”: 1,“did”: “111110001000923827”}

数据示例中含有三对key/value,即dvid: 110,type: 1以及did: “111110001000923827”。这将被OpenTSDB视为三个独立的tagk/tagv对。每一对都占用一个UID,且对于OpenTSDB来说,每个都是唯一的,就算是tagk相同,tagv不同的情况。所以,请记住在OpenTSDB中,整体tagk/tagv组合的总数需要严格保持在16,777,216个以下,以防止UID用尽。如果有其他问题,欢迎再次提问。

如果"dvid": 110在其它metric标签中再次保存 会占用新的key/value吗

不会,dvid: 110 这个组合如果在其他metric标签中再次出现,是不会占用新的UID的。OpenTSDB中的UID是基于tagk/tagv组合的唯一性分配的。只要tagk和tagv的组合没有变,无论它出现在哪些metric中,都会复用相同的UID。换句话说,同一个tagk/tagv对在数据库中的任何位置重复出现,都只会占用一个UID。所以,dvid: 110 这个标签组合不论出现在多少个不同的metric中,它的UID始终是相同的。如果你还有其他问题或疑问,请随时问我。

如何移除metric标签中tags

要移除OpenTSDB中metric的某个tag,你需要执行删除序列的操作。不过,要注意,OpenTSDB并不直接支持删除单个tag。删除数据通常需要删除整个时间序列,包括该时间序列下的所有tag。
如果你的目的是要减少UID的使用,删除整个时间序列可能并不是你想要的。因为这将影响所有使用这个时间序列标签组合的数据。
在实践中,你可以这样处理:

停止写入包含你想要删除的tag的数据点。
通过API或者使用tsdb CLI工具查询这些数据点,并使用它提供的删除功能。
如果是OpenTSDB的旧版本,可能需要手动删除相关的HBase表中的记录。
记得,在删除任何数据前,确保有完整的备份,并且要清楚删除的操作是不可逆的。如果你不熟悉这个过程,建议咨询专业的技术支持。如果还有更具体的问题,欢迎随时提问。

所有的tagk/tagv组合的总数不超过16777216个来避免达到UID的限制,怎么理解tagk/tagv组合

在OpenTSDB中,tagk代表标签键(tag key),而tagv代表标签值(tag value)。每一对tagk/tagv组合就是对metric具体维度的描述。例如,如果我们以城市和设备类型作为维度记录温度,可能有如下标签组合:

{city: “NewYork”, device: “sensorA”}
{city: “LosAngeles”, device: “sensorB”}
每一种不同的tagk/tagv组合都会被OpenTSDB赋予一个独一无二的3字节UID。因为UID是3字节的,所以理论上它的最大数量是2^(8*3),即16777216个。
要避免UID限制被耗尽,你需要合理规划你的标签键和值的策略。例如:
合并过于详细或不必要的标签。
避免为每个细微变化创建新的标签值。
考虑重新设计标签架构,使其更加高效。
当我们谈论避免超过16777216个tagk/tagv组合时,就是在说规避这个UID耗尽的问题,通过有效的管理和设计标签的策略来控制总数。

{city: “NewYork”, device: “sensorA”}和{city: “NewYork”, device: “sensorA”} 应该认为是两个uid吗?

{city: “NewYork”, device: “sensorA”} 和 {city: “LosAngeles”, device: “sensorB”} 在OpenTSDB中应该被识别为两个不同的tagk/tagv组合,因此它们各自会有唯一的UID。实际中,这意味着你可以对它们分别进行查询和度量,它们各自的数据是独立的。

OpenTSDB旨在在查询执行期间有效地组合多个不同的时间序列。这样做的原因是,当用户查看他们的数据时,他们通常会从较高的级别开始询问诸如“数据中心的总吞吐量是多少?”之类的问题。或“按地区划分的当前用功耗是多少?”。在查看这些高级别值之后,可能会出现一个或多个值,因此用户可以深入研究更详细的数据集,例如“我的LAX数据中心主机的吞吐量是多少?”。我们希望能够轻松回答这些高级问题,但仍然可以深入了解更多细节。 但是,如何将多个单独的时间序列合并为一个系列的数据呢?聚合函数提供了将不同时间序列数学方式将不同时间序列合并为一个的方法。过滤器用于按标签对结果进行分组,然后将聚合应用于每个组。聚合类似于SQL的GROUP BY子句,其中用户选择预定义的聚合函数以将多个记录合并为单个结果。但是在TSD中,每个时间戳和组聚合一组记录。 每个聚合器都有两个组件: 功能 - 应用的数学计算,例如对所有值求和,计算平均值或选择最高值。 插值 - 一种处理缺失值的方法,例如当时间序列A的值为T1但时间序列B没有值时。 本文档重点介绍如何在一个组中按上下文使用聚合器,即将多个时间序列合并为一个时。此外,聚合器可用于下采样时间序列(即返回较低分辨率的结果集)。有关更多信息,请参阅下采样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值