插件 〉GraphQL 数据源


开发者

Kevin Retzke

注册以接收不定期产品新闻和更新



此插件已弃用,因为它不再维护且依赖于 AngularJS。请考虑使用 InfinityWild GraphQL
数据源
社区

GraphQL 数据源

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

GraphQL 数据源

CI

Grafana 数据源插件,提供对 GraphQL API 的访问,用于处理数值时间序列数据、通用/表格数据、注解和仪表盘变量。

  • GraphQL 查询必须结构化,以便感兴趣的数据在响应中返回到可配置的数据路径下(默认为 data)。如果该路径下的对象是数组,将进行迭代,每个对象作为数据帧中的一行添加,否则结果对象将是唯一一行。
    • 可以使用逗号分隔以使用多个数据路径
  • 时间序列数据必须包含数据路径下的时间戳字段,默认为 Time,格式为 ISO8601 或可配置的 自定义格式
  • 嵌套类型将被展平为以点分隔的字段。
  • Grafana 变量应直接在查询中替换(而不是使用 GraphQL 变量)。仪表盘时间范围在 全局变量 $__from$__to 中以毫秒时间戳格式提供(或在 Grafana 7.1.2 或更高版本中 API 所需的任何格式)。
  • 可以使用 Group by 将元素分组为多个数据点。
  • Alias by 用于更改图例中显示的字段名称。$field_<field.name> 将被字段的值替换,而 $fieldName 将被字段的名称替换。

截图

DeutscheBahn Arrivals Table DeutscheBahn Arrivals Annotations GitHub Security Advisories DeutscheBahn Station Variable

示例

下面是一些示例查询,演示如何使用此插件,使用的是 FIFEMon GraphQL 测试源服务器,其中还包含一个 仪表盘 演示这些查询。

基本时间序列

query {
  data: simple_series(from: "${__from:date:iso}", to: "${__to:date:iso}", interval_ms: $__interval_ms) {
    Time: timestamp
    value
  }
}

注意使用全局变量 $__from$__to 将仪表盘时间范围插入到查询中,以及使用 $__interval_ms 指定图表的适当时间间隔。

自定义时间格式

query {
  simple_series(
    from: "${__from:date:iso}"
    to: "${__to:date:iso}"
    interval_ms: $__interval_ms
    format: "MM.dd.uuuu HHmmss"
  ) {
    timestamp
    value
  }
}
  • 数据路径: simple_series
  • 时间路径: timestamp
  • 时间格式: MM.DD.YYYY HHmmss

别名和分组

query {
  complex_series(from: "${__from:date:iso}", to: "${__to:date:iso}", interval_ms: $__interval_ms) {
    time {
      timestamp
    }
    value
    group {
      id
      name
    }
  }
}
  • 数据路径: complex_series
  • 时间路径: time.timestamp
  • 分组依据: group.id
  • 别名依据: $field_group.name

在上面的例子中,定义了“分组依据”和“别名依据”。“分组依据”允许您将数据数组拆分为多个数据点。“别名依据”用作数据点的名称。您可以通过使用 $field_<your.field.name> 来表示字段的值,或使用 $fieldName 来表示字段的名称,从而使别名使用查询中的文本甚至字段名称。如果使用 $fieldName,它将被替换为“value”,因为那是字段的名称。如果使用 $field_group.name,它将被替换为 name 的值。如果您查询了多个想要在图表中显示的数字字段,使用 $fieldName 会很有用。

注解

query {
  events(from: "${__from:date:iso}", to: "${__to:date:iso}", end: true) {
    timestamp
    end_timestamp
    name
    description
    tags
  }
}
  • 数据路径: events
  • 时间路径: timestamp
  • 结束时间路径: end_timestamp
  • 标题: $field_name
  • 文本: $field_description
  • 标签: tag1, tag2

上面的注解示例与常规查询类似。您可以定义数据路径、时间路径和时间格式。与上一个示例类似,您还可以通过使用 $field_<field name> 将值替换到标题、文本和标签中。标签之间用逗号分隔。上面的示例有两个标签:“tag1”和“tag2”。

如果定义并存在可选的结束时间字段,注解将显示在一段时间内。

仪表盘变量查询

仪表盘变量可以通过返回对象数组的 GraphQL 查询填充。如果对象包含 __text__value 字段,则会使用它们(__text 字段用于显示,__value 字段用于替换)。否则,所有字段的值将被添加到变量值列表中。

query {
  groups {
    __value: id
    __text: name
  }
}
  • 数据路径: groups

在 Grafana Cloud 上安装 GraphQL 数据源

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

更新日志

v1.3.0

  • 改进 支持键/值变量 (@retzkek #48)
  • 改进 可配置 timePath 和 timeFormat (@retzkek #49)
  • 文档 重写示例以使用测试数据源,该数据源提供了一个示例服务器和仪表盘,用户可以安装它来学习和实验。 (@retzkek #51)

v1.2.0

  • 改进 添加对仪表盘变量查询的支持 (@ggranberry #38)
  • 错误修复 正确范围变量,修复重复面板查询 (@retzkek #41)

v1.1.4

  • 改进 使用 templateSrv 插值 timeFrom 和 timeTo 变量。 (@carvid #31)
  • 错误修复 修复字段非字符串时 isRFC3339_ISO6801 中的错误 (@ricochet1k #32, @retzkek #33)

v1.1.3

  • 使用 QueryField 组件以提供更好的查询编辑体验 (@michaelneale #24)
  • 打包、文档和测试改进 (@michaelneale #27, @retzkek #29)
  • 已弃用: 不再发布 Grafana 6 版本

v1.1.2

  • 修复 Grafana 7 中的别名

v1.1.1

  • 修复响应中字段为 null 时发生的错误

v1.1.0

  • 重大变更: 顶级 data 不应再包含在数据路径中
  • 支持多个数据路径,用逗号分隔

v1.0.0

首次发布,基本支持表格和时间序列数据以及注解。