菜单
开源
Visualize JSON with Infinity

使用 Infinity 可视化 JSON

使用 infinity 数据源插件可视化来自您的 REST API 的 JSON 数据

📊 概述

想要更精简的学习旅程,请查看我们的 Grafana Infinity 数据源学习旅程

Grafana Learning Journeys
从 Grafana 学习旅程开始您的学习体验

Grafana 学习旅程提供清晰、结构化的路径,引导您从初级概念走向高级用例。了解此 Grafana 功能,请访问使用 Infinity 数据源可视化 JSON 数据

Sample JSON Query in Infinity datasource

Give it a try using Grafana Play
使用 Grafana Play 尝试一下

通过 Grafana Play,您可以探索其工作原理,从实际示例中学习,加速您的开发。此功能可以在以下页面看到:Infinity 插件 JSON 演示

将查询的类型选择为 JSON。您可以指定 JSON API 的 URL、JSON 文件,或者提供内联 CSV。

使用公共 JSON API 端点

以下示例展示了如何从公共可访问的 JSON API 端点获取数据。

URL : https://jsonplaceholder.typicode.com/users

image

在上述示例中,URL 中的数据是一个数组,因此除了面板中的 URL 外,无需配置任何额外字段。

访问 JSON 数据的嵌套属性

URL : https://thingspeak.com/channels/38629/feed.json

image

在上面的示例中,数据位于 feeds 属性中,该属性被指定为 root/rows 字段。然而,插件仍然无法识别这些字段或其类型。为此,我们将添加列使其更具意义。

我们将添加列并定义其类型,如下所示

image

不含时间字段的 JSON 数据

URL : https://gist.githubusercontent.com/yesoreyeram/2433ce69862f452b9d0460c947ee191f/raw/f8200a62b68a096792578efd5e3c72fdc5d99d98/population.json

image

在上面的示例中,我们可视化了不含时间字段的 JSON 数据。我们的 JSON 只有 countrypopulation 两个字段,因此我们要求插件为数据添加一个虚拟时间字段,以便我们可以在 Grafana 的任何标准面板中可视化它们。如果您仔细查看上面的图片,您会发现我们指定 'format' 为 timeseries

供参考,URL 中的 JSON 数据如下

json
[
  { "country": "india", "population": 300 },
  { "country": "usa", "population": 200 },
  { "country": "uk", "population": 150 },
  { "country": "china", "population": 400 }
]

内联 JSON

除了指定 URL,您还可以硬编码一个 JSON 对象。例如,您可以按以下示例所示指定 JSON

json
[
  { "country": "india", "population": 420 },
  { "country": "india", "population": 440 },
  { "country": "usa", "population": 200 },
  { "country": "uk", "population": 150 },
  { "country": "china", "population": 400 }
]

您还需要手动指定列名以供显示。

root 选择器中的 JSONPath

在 root 选择器中,您可以使用 JSONPath 格式的选择器。

注意

任何以 $ 开头的 root 选择器都被视为 JSONPath 选择器。

image

示例

json
{
  "customers": [
    { "name": "mary", "age": 22, "gender": "female" },
    { "name": "joseph", "age": 41, "gender": "male" }
  ],
  "premium_customers": [{ "name": "john doe", "age": 21, "gender": "male" }]
}

在上述 JSON 中,如果 $.premium_customers 是 root 选择器,则查询返回 john doe。如果 $.* 是 root 选择器,则查询返回所有三行。

UQL 解析器

如果您正在寻找更多 JSON 选项,如 group byorder by、JSONata、字段操作或类似功能,请使用UQL 查询。下面您会找到一个 UQL 命令

sql
parse-json
| scope "feeds"
| project "ts"=todatetime("created_at"), "Density of Westbound Cars"=tonumber("field1"), "Density of Eastbound Cars"=tonumber("field2")

UQL Parser

后端解析器

如果您需要告警/录制查询等高级选项,请使用 backend 作为解析器。

backend parser

当使用 backend 作为解析选项时,您的时间戳字段需要遵循 ISO 日期/时间格式。示例:2006-01-02T15:04:05Z07:00。如果它们不符合 ISO 时间戳格式,您可以使用 layout 选项指定格式。layout 必须是golang 时间 layout 规范

当使用 backend 解析器时,您还可以使用 Summarize 字段将数值字段汇总为单个聚合数字。示例用法:last(density_of_eastbound_cars) - last(density_of_westbound_cars)。您还可以使用数值选项,如 summinmaxmeanfirstlast

summarize option in backend parser