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

通过 Grafana Play,您可以探索其工作原理,从实际示例中学习,加速您的开发。此功能可以在以下页面看到:Infinity 插件 JSON 演示。
将查询的类型选择为 JSON。您可以指定 JSON API 的 URL、JSON 文件,或者提供内联 CSV。
使用公共 JSON API 端点
以下示例展示了如何从公共可访问的 JSON API 端点获取数据。
URL : https://jsonplaceholder.typicode.com/users

在上述示例中,URL 中的数据是一个数组,因此除了面板中的 URL 外,无需配置任何额外字段。
访问 JSON 数据的嵌套属性
URL : https://thingspeak.com/channels/38629/feed.json

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

不含时间字段的 JSON 数据
URL : https://gist.githubusercontent.com/yesoreyeram/2433ce69862f452b9d0460c947ee191f/raw/f8200a62b68a096792578efd5e3c72fdc5d99d98/population.json

在上面的示例中,我们可视化了不含时间字段的 JSON 数据。我们的 JSON 只有 country 和 population 两个字段,因此我们要求插件为数据添加一个虚拟时间字段,以便我们可以在 Grafana 的任何标准面板中可视化它们。如果您仔细查看上面的图片,您会发现我们指定 'format' 为 timeseries。
供参考,URL 中的 JSON 数据如下
[
{ "country": "india", "population": 300 },
{ "country": "usa", "population": 200 },
{ "country": "uk", "population": 150 },
{ "country": "china", "population": 400 }
]内联 JSON
除了指定 URL,您还可以硬编码一个 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 选择器。

示例
{
"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 by、order by、JSONata、字段操作或类似功能,请使用UQL 查询。下面您会找到一个 UQL 命令
parse-json
| scope "feeds"
| project "ts"=todatetime("created_at"), "Density of Westbound Cars"=tonumber("field1"), "Density of Eastbound Cars"=tonumber("field2")
后端解析器
如果您需要告警/录制查询等高级选项,请使用 backend 作为解析器。

当使用 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)。您还可以使用数值选项,如 sum、min、max、mean、first 和 last。




