插件 〉kdb+


开发者

AquaQ


注册以接收偶尔的产品新闻和更新



数据源
社区

kdb+

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

Grafana KDB+ 后端数据源

什么是 KDB+ 后端数据源?

AquaQ 的 kdb+ 后端数据源是一个插件,它为 Grafana 增加了查询 kdb+ 的功能。它支持 Grafana 的许多核心功能,包括静态/查询变量、警报以及支持 Grafana 的 query API。

内容

  1. 用户入门
  2. 变量
    1. 静态和多值变量
    2. 时间变量
    3. 查询和链式变量
  3. 安全
  4. kdb+ 查询
  5. 警报
  6. 时区
  7. 限制
    1. 分组表处理
    2. 空值和无穷大

用户入门

添加数据源

  1. 导航到设置 -> 数据源。
  2. 点击添加数据源并导航到 kdb-backend-datasource。
  3. 输入 URL 和端口号,以及您的 KDB+ 实例的用户名和密码(如有需要 - 如果不提供,则默认为 "")。
  4. 输入超时值(以毫秒为单位),默认为 1000 毫秒。
  5. 点击保存 & 测试。
  6. 底部应显示一个警报:kdb+ 连接成功

创建仪表板

  1. 从左侧工具栏导航到 创建 - 仪表板
  2. 创建一个空面板。新仪表板将自动包含一个空面板。可以通过右上角的 添加面板 按钮添加新面板。
  3. 在 KDB+ 查询字段中输入有效的 KDB+ 查询,例如 ([] time:reverse .z.p-0D00:05*til 20;val:til 20)
  4. 可选地,可以在 超时(ms) 输入字段中定义自定义超时。默认为 10 000 毫秒。
  5. 点击右上角的 刷新仪表板 按钮,数据应出现在可视化中。
  6. 点击页面左上角的 返回(Esc) 按钮退出查询编辑器并返回仪表板。
  7. 仪表板可以通过右上角的《保存仪表板》按钮保存。如果需要,可以为仪表板设置自动刷新速率,点击右上角《刷新仪表板》按钮旁边的下拉菜单,设置所需的刷新速率。在《仪表板设置》中可以添加自定义刷新速率。

变量

此插件可以处理静态和查询变量。它还允许用户链式查询。

静态 & 多值变量

这些可以在使用Grafana的标准格式(即逗号分隔的列表)下输入《自定义》变量类型。然后可以以以下形式在查询中使用静态变量:

${variable_name}

如果使用可同时选择多个值的《多值》变量,请参阅Grafana关于变量格式的文档。我们建议以《csv》格式注入《多值》变量,然后在kdb+中使用《sv》运算符分割和转换到所需类型的列表,如下面的《select》语句所示

select from trade where exchange in `$"," vs "${multi_variable_name:csv}"

时间变量

时间变量(例如${__from}、${__to}等)由Grafana注入,表示自Unix纪元以来的毫秒数(例如,1594671549254对应于Jul 13 2020 20:19:09)。要在kdb+中使用时间变量,我们需要调整这些值以匹配kdb+接受的格式。

这可以通过将毫秒转换为秒(除以1000),使用.Q.f转换为十进制字符串,然后使用tokking到时间戳来完成

("P"$.Q.f[3] ${__from}%1000)

或者,可以格式化Grafana注入的时间变量为ISO-8601格式,并在kdb+中将此格式转换为datetime数据类型

("Z"$"${__from:date}")

截至kdb+版本4.0,以《ISO-8601》格式化的日期时间不能直接转换为时间戳。

如果引用的《timestamp》只需要精确到一秒,则可以直接以Unix时间注入并转换为时间戳

("P"$"${__from:date:seconds}")

查询 & 链接变量

这些可以在《查询》变量类型下输入。这些变量在面板查询运行之前对目标数据源运行查询,然后Grafana从此元查询构建变量/变量列表。输入查询必须返回一个《flat table》(请参阅《限制》),其中第一列将用于生成变量。在Grafana的旧版本中,输出可能需要是《strings》或《symbols》(在较新版本的Grafana中,也支持数值数据类型)。

有一个可选的《Timeout》字段,如果未定义,则默认为《10 000》毫秒。在按《Update》按钮更新变量后,将在页面底部显示返回变量的预览。

查询变量还可以作为它们运行的查询的一部分接受其他变量(有时称为《链接》变量)。此格式的格式与静态 & 多值变量相同(《${variable_name}》)

安全

默认情况下,我们为用户名和密码都传递一个空字符串"",这些可以在数据源设置中重写。TLS也受支持 - 使用TLS客户端认证开关启用。将客户端TLS密钥和客户端TLS证书输入到提供的字段中。要跳过对TLS证书的服务器验证,使用跳过TLS验证开关。如果启用了使用CA证书开关,可以使用自定义证书颁发机构证书 - 如果kdb+数据源正在运行自定义签名证书,请使用。

kdb+查询

查询作为以下kdb+形式的两个项目同步查询传递给kdb+(将被.z.pg评估)

({[x] value x[`Query;`Query]};**QUERYDATA**)

**QUERYDATA**是一个字典(kdb+类型99),其嵌套结构如下

值(《kdb+类型》)
AQUAQ_KDB_BACKEND_GRAF_DATASOURCE插件版本(浮点原子
时间查询时间戳(时间戳原子
OrgID格拉法纳组织ID(长原子
数据源数据源信息对象字典
用户用户信息对象字典
查询查询信息对象字典
超时格拉法纳端超时持续时间,以毫秒为单位(长原子

数据源信息对象

值(《kdb+类型》)
ID格拉法纳实例分配的数据源ID(长原子
名称用户分配的数据源名称(字符列表
UID格拉法纳实例分配的数据源UID(字符列表
更新数据源最后更新的时间戳(时间戳原子
URL数据源的URL(?)(字符列表
用户创建数据源的用户的UserName字符列表

用户信息对象

值(《kdb+类型》)
UserName用户的格拉法纳名称(不是登录用户名)(字符列表
UserEmail用户的格拉法纳电子邮件地址(字符列表
UserLogin用户的格拉法纳登录用户名(字符列表
UserRole用户的格拉法纳角色(字符列表

查询信息对象

注意:在HEALTHCHECK类型查询中不存在RefIDMaxDataPointsIntervalTimeRange键。

值(《kdb+类型》)
RefID查询的Ref ID(字符列表
查询评估的查询字符串(字符列表
QueryType查询类型HEALTHCHECKQUERY)(符号原子
MaxDataPoints面板定义的最大数据点(目前未使用)(长原子
Interval面板定义的间隔(目前未使用)(长原子
TimeRange查询的__from__to时间范围(2项时间戳列表

警报

在创建警报之前,在警报->联系人点下创建一个联系人点。然后,在警报->通知策略下创建一个通知策略。

要在面板上创建警报,导航到相关的仪表板,并从这里选择编辑选项导航到警报菜单。填写相关的规则名称、类型和文件夹。输入您的kdb+查询并运行查询。您将能够使用表达式查询此查询中的数据。接下来,设置警报条件,确保选择表达式并设置评估持续时间。最后,在警报详情中设置自定义标签。

时区

kdb+ 以时区无关的形式存储其时间戳和日期时间;这些将被 Grafana 解析为没有时区偏移(UTC),因此我们建议用户将使用此插件的任何仪表板的时区设置为 UTC。这可以通过 仪表板设置 - 时间选项 - 时区 来完成。

限制

所有查询必须返回一个 扁平表(kdb+ 数据类型 98)或一个 分组表(kdb+ 数据类型 99,其中字典的 都是相同的表)。如果对 分组表 使用分组和聚合,则任何聚合列将被 投影 到与数据帧其余部分相同的长度。

在 Grafana 中,无穷大和空值与 kdb+ 中的数据类型不同。显示的是底层字符串值表示,而不是 kdb+ 中持有的空值或无穷大值。建议 Grafana 让用户按照他们的数据架构和数据字典处理空值表示。

列必须是单一、常量数据类型 - 不能作为列混合列表或嵌套列表(除 字符串 列和分组条目外,见下文 分组表处理)。

分组表处理

如果查询评估后返回一个分组表给 Grafana,则 Grafana 将每个分组作为一个单独的框架返回。每个框架的名称是每个分组键的字符串表示(如果有多个键,则由分号分隔)。

空值和无穷大

下表显示了对于每种数据类型如何处理空值、无穷大和零

字段字符符号时间戳时间日期时间时间跨度月份日期分钟
0000000000000
-32768-2147483648-9223372036854776000-2147483648-2147483648-2147483648-2147483648-2147483648-2147483648-2147483648-2147483648-2147483648-2147483648
负无穷-32767-2147483647-9223372036854776000-2147483647-2147483647-2147483647-2147483647-2147483647-2147483647-2147483647-2147483647-2147483647-2147483647
无穷32767214748364792233720368547760002147483647214748364721474836472147483647214748364721474836472147483647214748364721474836472147483647

在 Grafana Cloud 上安装 kdb+

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

变更日志

1.0.0 (未发布)

初始版本。