我正在使用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
我看到了重命名处理器(https://github.com/influxdata/telegraf/tree/master/plugins/processors/rename)-但这不支持通配符。
我还看到了正则表达式处理器(https://github.com/influxdata/telegraf/tree/master/plugins/processors/regex),但是它不支持测量名称。
关于如何完成此操作的任何想法?
编辑:一些背景:测量值是通过http输入收集的,使用a.b。*。c的GJSON路径
EDIT2:这是我要解析的内容。问题出在密钥“ 2931747”上,该密钥在随后的每次阅读中都会增加:
"quorum" : {
"2931747" : {
"agree" : 8,
"disagree" : 0,
}
答案 0 :(得分:2)
因此,他们将实际值作为关键...彻头彻尾,嗯,不明智,让我们这样说。
我不会怪JSON格式解析器的作者没有为这种情况提供句柄。
因此,答案是:在当前形式下,使用HTTP插件,可用的解析器和处理器-无法以任何适当的形式对其进行成形(除非您可以完全删除该死的数字键-然后这很简单)。 / p>
我建议您推动数据提供者以使其停止这种愚蠢行为。
如果这不是一个选择-las,您需要为此编写自己的处理器。
它可以是完全独立的(轮询http端点,解析内容,形成一批线路协议记录,发送到influx),也可以在Influx线路协议的生产线上切断它作为其输出,并使用 Exec 输入插件
执行