首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Telegraf中过滤JSON响应

如何在Telegraf中过滤JSON响应
EN

Stack Overflow用户
提问于 2020-01-03 01:54:19
回答 1查看 1.3K关注 0票数 2

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

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

对于那些无法在发送方更改数据的端点(例如:RabbitMQ的预制API),是否有一种方法可以在Telegraf中过滤JSON响应?

例如:我有以下JSON-Response:

代码语言:javascript
复制
{
    "message_stats": {
        "publish": 1,
        "publish_details": {
            "rate": 0.0
        }
    }
}

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

EN

回答 1

Stack Overflow用户

发布于 2020-04-10 00:59:55

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

代码语言:javascript
复制
    [[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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59567832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档