在InfluxDB中更改标记值

时间:2017-02-01 21:44:09

标签: influxdb

我插入了使用主机名的数据。令人讨厌的是我要将域名从.lan更改为.mydomain.com

显然,我希望能够搜索机器的历史数据,因为它跨越了这一变化。

我可以将标签定义从machine.lan更新到machine.mydomain.com吗?

3 个答案:

答案 0 :(得分:6)

虽然@ Michael的回答是正确的,因为您无法通过InfluxDB命令更改标记值,但您可以编写一个客户端脚本,通过在测量中插入"duplicate"点来更改标记的值相同的时间戳,字段集和标记集,但所需的标记的值将更改。

指向错误的标记(Line Protocol格式):

cpu,hostname=machine.lan cpu=50 1514970123

运行后

INSERT cpu,hostname=machine.mydomain.com cpu=50 1514970123

SELECT * FROM CPU将包含

cpu,hostname=machine.lan cpu=50 1514970123
cpu,hostname=machine.mydomain.com cpu=50 1514970123

脚本运行所有INSERT命令后,您需要删除旧的标记值的过时系列点:

DROP SERIES FROM cpu WHERE hostname='machine.lan'

当然,效率极低(特别注意this bug),如果您需要将标记值更新为another tag value that other points you don't want to drop already have,则不能仅DROP SERIES。所以请vote for InfluxDB to implement tag renaming,特别是根据WHERE查询更改标记值。或者考虑另一个允许您使用常规SQL的时间序列数据库,例如Timescale

答案 1 :(得分:4)

不幸的是,没有办法在InfluxDB中更改历史数据的标记名称。

答案 2 :(得分:1)

  

GitHub上已有一个打开的功能请求。   https://github.com/influxdata/influxdb/issues/4157

潮流开发者建议的一个可能的解决方案,如果你想要全部转储,修改,重新导入路径(野蛮但有效),这个评论可能会有所帮助。

https://github.com/influxdata/influxdb/issues/3904#issuecomment-268918613