插件 〉kdb+
kdb+
Grafana KDB+ 后端数据源
什么是 KDB+ 后端数据源?
AquaQ 的 kdb+ 后端数据源是一个插件,它为 Grafana 增加了查询 kdb+ 的功能。它支持 Grafana 的许多核心功能,包括静态/查询变量、警报以及支持 Grafana 的 query
API。
内容
用户入门
添加数据源
- 导航到设置 -> 数据源。
- 点击添加数据源并导航到 kdb-backend-datasource。
- 输入 URL 和端口号,以及您的 KDB+ 实例的用户名和密码(如有需要 - 如果不提供,则默认为
""
)。 - 输入超时值(以毫秒为单位),默认为
1000
毫秒。 - 点击保存 & 测试。
- 底部应显示一个警报:
kdb+ 连接成功
。
创建仪表板
- 从左侧工具栏导航到
创建 - 仪表板
。 - 创建一个空面板。新仪表板将自动包含一个空面板。可以通过右上角的
添加面板
按钮添加新面板。 - 在 KDB+ 查询字段中输入有效的 KDB+ 查询,例如
([] time:reverse .z.p-0D00:05*til 20;val:til 20)
。 - 可选地,可以在
超时(ms)
输入字段中定义自定义超时。默认为10 000
毫秒。 - 点击右上角的
刷新仪表板
按钮,数据应出现在可视化中。 - 点击页面左上角的
返回(Esc)
按钮退出查询编辑器并返回仪表板。 - 仪表板可以通过右上角的《保存仪表板》按钮保存。如果需要,可以为仪表板设置自动刷新速率,点击右上角《刷新仪表板》按钮旁边的下拉菜单,设置所需的刷新速率。在《仪表板设置》中可以添加自定义刷新速率。
变量
此插件可以处理静态和查询变量。它还允许用户链式查询。
静态 & 多值变量
这些可以在使用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
类型查询中不存在RefID
、MaxDataPoints
、Interval
和TimeRange
键。
键 | 值(《kdb+类型》) |
---|---|
RefID | 查询的Ref ID(字符列表 ) |
查询 | 评估的查询字符串(字符列表 ) |
QueryType | 查询类型(HEALTHCHECK 或QUERY )(符号原子 ) |
MaxDataPoints | 面板定义的最大数据点(目前未使用)(长原子 ) |
Interval | 面板定义的间隔(目前未使用)(长原子 ) |
TimeRange | 查询的__from 和__to 时间范围(2项时间戳列表 ) |
警报
在创建警报之前,在警报->联系人点下创建一个联系人点。然后,在警报->通知策略下创建一个通知策略。
要在面板上创建警报,导航到相关的仪表板,并从这里选择编辑选项导航到警报菜单。填写相关的规则名称、类型和文件夹。输入您的kdb+查询并运行查询。您将能够使用表达式查询此查询中的数据。接下来,设置警报条件,确保选择表达式并设置评估持续时间。最后,在警报详情中设置自定义标签。
时区
kdb+ 以时区无关的形式存储其时间戳和日期时间;这些将被 Grafana 解析为没有时区偏移(UTC),因此我们建议用户将使用此插件的任何仪表板的时区设置为 UTC。这可以通过 仪表板设置 - 时间选项 - 时区
来完成。
限制
所有查询必须返回一个 扁平表
(kdb+ 数据类型 98)或一个 分组表
(kdb+ 数据类型 99,其中字典的 键
和 值
都是相同的表)。如果对 分组表
使用分组和聚合,则任何聚合列将被 投影 到与数据帧其余部分相同的长度。
在 Grafana 中,无穷大和空值与 kdb+ 中的数据类型不同。显示的是底层字符串值表示,而不是 kdb+ 中持有的空值或无穷大值。建议 Grafana 让用户按照他们的数据架构和数据字典处理空值表示。
列
列必须是单一、常量数据类型 - 不能作为列混合列表或嵌套列表(除 字符串
列和分组条目外,见下文 分组表处理)。
分组表处理
如果查询评估后返回一个分组表给 Grafana,则 Grafana 将每个分组作为一个单独的框架返回。每个框架的名称是每个分组键的字符串表示(如果有多个键,则由分号分隔)。
空值和无穷大
下表显示了对于每种数据类型如何处理空值、无穷大和零
字段 | 短 | 整 | 长 | 字符 | 符号 | 时间戳 | 时间 | 日期时间 | 时间跨度 | 月份 | 日期 | 分钟 | 秒 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
零 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
空 | -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 |
无穷 | 32767 | 2147483647 | 9223372036854776000 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 | 2147483647 |
在 Grafana Cloud 上安装 kdb+
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
在 Grafana Cloud 实例上安装插件是一个一键安装;同样适用于更新。酷吧?
请注意,可能需要长达 1 分钟才能在您的 Grafana 中看到插件。
有关更多信息,请访问有关 插件安装 的文档。
在本地 Grafana 上安装
对于本地实例,插件可以通过简单的CLI命令进行安装和更新。然而,插件不会自动更新,但是当有更新可用时,你会在Grafana中收到通知。
1. 安装数据源
使用 grafana-cli 工具从命令行安装 kdb+。
grafana-cli plugins install
插件将被安装到你的 Grafana 插件目录中;默认为 /var/lib/grafana/plugins。 关于CLI工具的更多信息。
2. 配置数据源
通过 Grafana 主菜单访问,新安装的数据源可以立即在数据源部分添加。
接下来,点击右上角的“添加数据源”按钮。数据源将在“类型”选择框中可供选择。
要查看已安装的数据源列表,请点击主菜单中的“插件”项。将显示核心数据源和已安装数据源。
变更日志
1.0.0 (未发布)
初始版本。