使用通配符重命名 Telegraf 测量

Renaming a Telegraf measurement with a wildcard

我正在使用 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,

     }

所以他们把实际值放在那里作为键...彻头彻尾,呃,不聪明,让我们这样说吧。

而且我不会责怪 JSON 格式解析器的编写者没有为这种情况提供句柄。

所以,答案是:在当前形式下,使用 HTTP 插件、可用的解析器和处理器 - 无法以任何适当的形式塑造它(除非你可以完全放弃那个该死的数字键 - 然后它是微不足道的) .

我建议您推动数据提供者停止这种愚蠢行为。

如果这不是一个选项 - 你需要为此编写自己的处理器,唉。

它可以是完全独立的(轮询 http 端点,解析内容,形成一批线路协议记录,发送到 influx)- 或者它可以在 Influx 线路协议的生产线上切断它作为它的输出,并用Exec input plugin

执行