繁体   English   中英

如何在 Telegraf 中过滤 JSON 响应

[英]How to filter JSON Response in Telegraf

我正在尝试使用 Telegraf 的HTTP Input Plugin从 HTTP-Endpoints 摄取 JSON 指标数据,并使用Postgresql Output plugin将其写入 Postgresql 数据库。 这按预期工作。

但是,一些 JSON-Responses 非常长。 由于 PostgreSQL 输出插件为每个字段创建一列,因此这些表变得非常长并且堆满了我不需要的信息。

对于那些在发送方无法更改数据的端点(例如:RabbitMQ 的 Premade API),有没有办法在 Telegraf 中过滤 JSON 响应?

例如:我有以下 JSON 响应:

{
    "message_stats": {
        "publish": 1,
        "publish_details": {
            "rate": 0.0
        }
    }
}

我只对message_stats.publish_details.rate感兴趣。 我不希望message_stats.publish出现在我的数据库中。 我怎样才能做到这一点?

如何解决此问题的方法之一是使用json_query参数。 在此参数中,您可以使用特殊语法来过滤响应:

    [[inputs.http]]
  ## One or more URLs from which to read formatted metrics
  urls = [
    "https://url-to-metrics-endpoint"
  ]
  # next field replace default metrics name "http" to your custom name:
  name_override = "custom_name"
  # set true if you want to ignore self signed certificate validation:
  insecure_skip_verify = true 
  data_format = "json"
  timeout = "5s"
  # Here you can filter your JSON using special syntax:
  json_query = "message_stats.publish_details.rate"

这是最简单的例子。 您可以在此处找到有关语法的更多详细信息(例如如何使用数组等等): https : //github.com/tidwall/gjson#path-syntax

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM