插件 〉JSON Fetcher


开发者

Nagasudhir

订阅以接收不定期产品新闻和更新



数据源
社区

JSON Fetcher

  • 概览
  • 安装
  • 更新日志
  • 相关内容

Grafana API 后端数据源插件

  • 这是一个 Grafana 数据源插件,用于从 HTTP API 获取数据
  • 通过在数据源配置页面设置 JSON Schema,可以自定义查询编辑器中的用户输入
  • 现在最终用户可以在查询编辑器中创建查询,而无需理解 JSON
  • 由于是后端数据源插件,也支持告警功能

插件安装

为查询负载创建 JSON Schema

  • 您可以在 此处 从示例查询负载 JSON 生成 JSON Schema

示例 JSON Schema

  • 将以下内容粘贴到 json-backend 数据源设置屏幕的查询 Schema 文本框中
{
    "description": "Query Schema",
    "properties": {
        "fetchCached": {
            "default": true,
            "description": "Whether cached data fetching is ok",
            "title": "Fetch Cached?",
            "type": "boolean"
        },
        "measId": {
            "default": "",
            "description": "Measurement ID",
            "maxLength": 20,
            "minLength": 15,
            "title": "Measurement ID",
            "type": "string"
        },
        "samplingSecs": {
            "default": 60,
            "description": "Sampling Freq. in secs",
            "multipleOf": 2,
            "title": "Sampling Freq (in secs)",
            "type": "integer"
        },
        "samplingType": {
            "default": "snap",
            "enum": [
                "snap",
                "average",
                "max",
                "min",
                "sum"
            ],
            "title": "Sampling Type",
            "type": "string"
        }
    },
    "title": "Query Editor GUI",
    "type": "object"
}

plugin-settings-example.png

  • 此数据源的 Grafana 查询编辑器将如下所示

query-inspector-example.png

  • 在查询检查器中可以看到,JSON 负载是从用户输入生成的,并且请求已发送

query-inspector-payload-example.png

API 需要实现的端点

  • 插件要求 API 服务器实现这些端点
  • API 服务器应该在 / 监听 GET 请求,并返回 200 OK 状态码作为健康检查端点的实现
  • API 服务器应该在 / 监听 POST 请求以使用数据响应查询。POST 请求正文将包含查询信息,如序列名称、开始和结束时间戳、查询负载等。响应应该包含单个序列的时间戳和值。
  • Grafana 发送到 API 服务器的示例 API 请求可能如下所示
{
    "RefID": "A",
    "QueryType": "",
    "MaxDataPoints": 974,
    "Interval": 60000000000,
    "TimeRange": {
        "From": "2022-10-08T00:00:00+05:30",
        "To": "2022-10-08T14:44:09.586+05:30"
    },
    "JSON": {
        "refId": "A",
        "alias": "abcd",
        "payload": "{\"fetchCached\":true,\"measId\":\"abcd\",\"samplingType\":\"snap\",\"samplingSecs\":60}",
        "bucketAggs": [
            {
                "field": "@timestamp",
                "id": "2",
                "settings": {
                    "interval": "auto"
                },
                "type": "date_histogram"
            }
        ],
        "datasource": "JSON Fetcher",
        "datasourceId": 10,
        "intervalMs": 60000,
        "maxDataPoints": 974,
        "metrics": [
            {
                "id": "1",
                "type": "count"
            }
        ],
        "query": "",
        "timeField": "@timestamp"
    }
}
  • 示例 API 响应可能如下所示
{
    "frames":[
        {
            "columns":[
                {"name": "@timestamp", "values": [1665216413748, 1665219977028], "labels": null},
                {"name": "abcd", "values": [5, 10], "labels": null}
            ]
        }
    ]
}

响应中的时间应该是以秒为单位的 UNIX 时间戳

数据流

json-api-backend.png

开发者文档

开发者文档可以在 此处 找到

在 Grafana Cloud 上安装 JSON Fetcher

更多信息,请访问有关插件安装的文档。

更新日志

1.0.0 (未发布)

初始发布。