Influxdb 使用通配符重命名Telegraf测量

Influxdb 使用通配符重命名Telegraf测量,influxdb,telegraf,Influxdb,Telegraf,我正在和一个Telegraf客户收集测量数据。不幸的是,度量名称不是静态的。相反,它编码一个时间戳(糟糕的设计选择,但我无法控制)作为其名称的一部分 例如,以下3行表示相同度量的3个实例,但名称不同: info.quorum.2902864.agree: 6 info.quorum.2902865.agree: 6 info.quorum.2902866.agree: 5 ... 有没有办法将这些度量名称转换为一个静态名称?换句话说,我想将上述条目转换为: info.quorum.hello.

我正在和一个Telegraf客户收集测量数据。不幸的是,度量名称不是静态的。相反,它编码一个时间戳(糟糕的设计选择,但我无法控制)作为其名称的一部分

例如,以下3行表示相同度量的3个实例,但名称不同:

info.quorum.2902864.agree: 6
info.quorum.2902865.agree: 6
info.quorum.2902866.agree: 5
...
有没有办法将这些度量名称转换为一个静态名称?换句话说,我想将上述条目转换为:

info.quorum.hello.agree: 6
info.quorum.hello.agree: 6
info.quorum.hello.agree: 5 
我看到了重命名处理器()-但它不支持通配符

我还看到了regex处理器(),但它不支持度量名称

有什么办法可以做到这一点吗

编辑:一些背景:测量值通过http输入收集,使用GJSON路径,如a.b.*.c

EDIT2:以下是我要分析的内容。问题在于“2931747”键,该键在每次后续读取时都会增长:

      "quorum" : {
     "2931747" : {
        "agree" : 8,
        "disagree" : 0,

     }

所以他们把实际价值作为关键。。。彻头彻尾,呃,不明智,让我们这样说吧

我不会责怪JSON格式解析器的编写者没有处理这种情况

所以,答案是:在当前的形式下,使用HTTP插件,可用的解析器和处理器-没有办法以任何适当的形式来塑造它(除非你能完全删除那个该死的数字键-那么它就微不足道了)

我建议你敦促数据提供商让他们停止这种愚蠢行为

如果这不是一个选项,那么您需要为此编写自己的处理器,唉


它可以是完全独立的(轮询http端点,解析内容,形成一批行协议记录,发送到influx),也可以在influx行协议的生产线上将其切断作为its输出,并使用输入插件执行,因此他们将实际值作为关键。。。彻头彻尾,呃,不明智,让我们这样说吧

我不会责怪JSON格式解析器的编写者没有处理这种情况

所以,答案是:在当前的形式下,使用HTTP插件,可用的解析器和处理器-没有办法以任何适当的形式来塑造它(除非你能完全删除那个该死的数字键-那么它就微不足道了)

我建议你敦促数据提供商让他们停止这种愚蠢行为

如果这不是一个选项,那么您需要为此编写自己的处理器,唉


它可以是完全独立的(轮询http端点,解析内容,形成一批行协议记录,发送到influx),也可以在influx行协议的生产线上将其作为its输出切断,并使用输入插件执行这是一个数据点,还是您应该发送到的度量?就XDB(请查看词汇表:)和http输入负载的示例而言,plz@YuriG谢谢你对我的问题感兴趣。我已经添加了输入有效负载。这是一个数据点,还是您应该发送到的度量?就XDB(请查看词汇表:)和http输入负载的示例而言,plz@YuriG谢谢你对我的问题感兴趣。我已经添加了输入有效载荷。是的,我承认这并不聪明。我将在他们的回购协议中提交一份bug报告,并在fork中解决它。谢谢你的建议!是的,我承认这并不聪明。我将在他们的回购协议中提交一份bug报告,并在fork中解决它。谢谢你的建议!