如何在 Grafana 中显示来自 JSON blob 的字段?

我正在使用 Infinity 插件 https://github.com/yesoreyeram/grafana-infinity-datasource/releases

但是,我正在尝试从 CouchDB 中获取数据,以及我无法访问的数据库(通过客户的财产)。我只能访问 find 端点。这给了我形式的数据:

{
  "clientData": {
    "metric": {
     "Completeness": "75",
     "Timestamp":"2021-09-20T15:21:20",
     "Id":"myID",
     "Validity": "100"
    }
  }
}

现在我将一个选择器传递给 find ,它将取出 clientData.metric.Completeness 字段,但我想要在列中使用它,我似乎无法在 Grafana 中引用它(无穷大插入)。

我尝试将一行设置为 clientData.metric.Completeness 并且失败了。所以目前需要指导如何做到这一点。

stack overflow How to display fields from JSON blobs in Grafana?
原文答案

答案:

作者头像

Infinity 插件在根选择器中使用 JSONPath,要完全正确可能有点棘手。

在您的示例中,您需要在查询中执行以下操作:

根: $.clientData.metric

第 1 列:选择器 Completeness 作为完整性编号

这是一个学习和测试 JSONPath 表达式的简单地方: https://jsonpath.com/

作者头像

总的来说,我发现最好的体验是将数据实际写入 SQL 数据库并使用内置的数据库插件。这给了我所有我想要的开箱即用的东西,而无需使用“几乎足够”的东西——毕竟用 SQL 编写查询对于客户端和大多数“通用”开发人员来说要好得多。

于是部署变成了:

  • 部署一个数据库(在我们的例子中是 MySQL,但没关系)
  • 将 json api 连接到数据库(这里做了少量的返工)
  • 将 Grafana 连接到数据库(总共需要 30 秒)
  • 编写许多精彩的查询。

这一切都包含在一个 docker-compose 中。