首页 > 解决方案 > 使用 GJSON 语法的选择表达式,如 jq 示例

问题描述

我正在尝试使用 Telegraf 配置 HTTP 输入插件,但我需要使用 select 表达式选择某些指标并将它们写入特定的 Influxdb 数据库。我知道如何使用 jq 进行选择,但我无法使用 GJSON 请求进行选择。

我的输出如下所示:

  [
      {
        "properties": {
          "headers": {
            "database": "telegraf"
          },
          "content_type": "text/plain"
        },
        "payload": "net,cluster_id=cluster01,dc=dc02,host=specific_host01,instance=instance-00107205 network_write_packets=15100740,network_write_drops=0 1628285530000000000\n",
        "payload_encoding": "string"
      },
      {
        "properties": {
          "headers": {
            "database": "stats"
          },
          "content_type": "text/plain"
        },
        "payload": "dsk_stats,Region=Q3,host=specific_host01 disk_usage=8.344534641 1628285530000000000\n",
        "payload_encoding": "string"
      }
  ]

为了通过统计选择指标,我使用的是 jq:

    curl -s -H "content-type:application/json" localhost:8080 |jq '.[] | select(.properties.headers.database=="stats") | "\(.payload)"
    dsk_stats,Region=Q3,host=specific_host01 disk_usage=8.344534641 1628285530000000000\n

是否可以使用 GJSON 语法进行这样的 json 选择?

标签: jsongotelegraftelegraf-inputs-plugin

解决方案


干得好

#(properties.headers.database=="stats").payload

https://play.golang.org/p/7bXY6F2MQeZ


推荐阅读