Grafana的雪花数据源

Snowflake数据源插件允许您从Grafana中查询和可视化Snowflake数据指标。

需求

这个插件有以下要求:

  • 一个雪花用户用适当的角色理所当然。
    • 该数据源不需要特定的角色。
    • 雪花用户的角色是允许该用户访问表的角色。为了查询数据,请确保用户具有适当的角色。
  • 以下帐户类型之一:
    • Grafana Cloud:启用了企业插件插件的专业客户、高级客户或专业试用用户。
    • 格拉夫纳企业:客户与激活许可证以及具有Grafana服务器或组织管理的用户权限
  • 启用了企业插件插件。

安装Snowflake数据源插件

要安装数据源,请参见安装

配置雪花

配置Snowflake数据源需要一个具有用户名和密码的Snowflake用户。

Grafana建议为这个数据源创建一个权限有限的新用户。

创建用户

为了连接到雪花,您必须创建一个用户或使用现有的用户进行身份验证。该用户将运行从Grafana发送的所有查询。

如果希望让不同的用户运行不同的查询/工作负载,那么应该创建具有不同设置的多个Snowflake数据源。

要在Snowflake中创建用户,您必须登录到Snowflake实例并运行创建用户命令。

授予角色

创建了Snowflake用户之后,必须使用授予角色命令。将角色授予用户后,用户可以执行该角色所允许的操作。

这个角色定义了用户可以访问的仓库和表。

在Grafana中配置数据源

中使用的这些连接设置与通过SnowSQL连接

添加数据源通过填写以下字段:

描述
的名字 这个特定的Snowflake数据源的名称
账户 “Account”为“雪花”分配的“雪花”帐号的名称。在提供帐户后从雪花收到的URL中,帐户名是整个左边的字符串snowflakecomputing.com.如果Snowflake实例没有打开us-west-2,则该区域必须包含在帐户名中。例子:xyz123.us-east-1如果Snowflake实例没有打开亚马逊网络服务,那么平台也必须包含在帐户名中。例子:xyz123.us -东- 1. - gcp
地区 弃用,赞成Account.Region指定雪花实例所在的区域
用户名 查询“雪花”的帐户的用户名
验证类型 身份验证类型。可以使用密码身份验证或密钥对身份验证
密码 查询“雪花”的帐号密码
私钥 如果您喜欢使用基于密钥对的身份验证,则在此字段中输入您的私钥。
角色 此选项允许用户使用非用户默认角色连接到Snowflake实例。控件将该角色授予给用户授予角色命令,以便承担责任。
仓库 默认情况下用于查询的仓库
数据库 默认情况下用于查询的数据库
模式 默认情况下用于查询的模式
TimeInterval 可选的。的下限__interval美元而且__interval_ms美元宏。如果留空,十年代将被用作默认
默认查询 可选的。在面板中添加新的雪花查询时使用的默认查询
默认变量查询 可选的。在向仪表板变量添加新的雪花查询时使用的默认查询

密钥对认证

您可以使用密钥对身份验证来增强安全性,作为基本身份验证的替代方案。文件中指定的公钥/私钥可以生成雪花文档

如果正在使用密钥对身份验证,请确保已更新rsa_public_key并在数据源配置中提供相应的用户名和私钥。

用供应配置数据源

可以在Grafana的供应系统中使用配置文件来配置数据源。您可以阅读更多关于它是如何工作的,以及可以为数据源设置的所有设置配置文档页面

例子:

数据源:- name: Snowflake type: grafana-snowflake-datasource access: proxy basicAuth: false editable: true enabled: true jsonData: account: xyz123.east-us-2。azure username: grafana-user authType: password timeInterval: 10s defaultQuery: SELECT \n\t $__timeGroup(, $__interval) as time,\n\t \n FROM \n WHERE $__timeFilter(time) defaultVariableQuery: SELECT DISTINCT  FROM  LIMIT 1000 defaultInterpolation: " #参考://www.tubolov.com/docs/grafana/latest/variables/advanced-variable-format-options/ secureJsonData: password: grafana-password - name:雪花Billing Data类型:basicAuth: false editable: true enabled: true jsonData: account: xyz123.us-east1. basicAuth: falsegcp username: grafana-admin-user database: snowflake role: ACCOUNTADMIN timeInterval: 10s defaultQuery: SELECT \n\t $__timeGroup(, $__interval) as time,\n\t \n FROM \n WHERE $__timeFilter(time) defaultVariableQuery: SELECT DISTINCT  FROM  LIMIT 1000 defaultInterpolation: sqlstring #参考://www.tubolov.com/docs/grafana/latest/variables/advanced-variable-format-options/ secureJsonData: password: grafana-admin-password

查询数据源

提供的查询编辑器是一个标准的SQL查询编辑器。Grafana包含一些宏来帮助编写更复杂的时间序列查询。

描述 输出示例
美元__timeFilter(列) __timeFilter美元过滤器的按面板时间范围。必须有没有时区的字段。 CONVERT_TIMEZONE('UTC', 'UTC', time) < '2017-07-18T11:15:52Z' AND CONVERT_TIMEZONE('UTC', 'UTC', time) > '2017-07-18T11:15:52Z .
__timeFilter美元(列,时区) __timeFilter美元过滤器的面板时间范围,并将UTC转换为时区必须有没有时区的字段。 CONVERT_TIMEZONE('UTC', 'America/New_York', time) < '2017-07-18T11:15:52Z' AND CONVERT_TIMEZONE('UTC', 'America/New_York', time) > '2017-07-18T11:15:52Z .
美元__timeTzFilter(列) __timeTzFilter美元过滤器的按面板时间范围。应该包含时区的字段。 CONVERT_TIMEZONE('UTC', time) < '2017-07-18T11:15:52Z' AND CONVERT_TIMEZONE('UTC', time) > '2017-07-18T11:15:52Z .
__timeTzFilter美元(列,时区) __timeTzFilter美元过滤器的,并将当前时区转换为时区应该包含时区的字段。 CONVERT_TIMEZONE('America/New_York', time) < '2017-07-18T11:15:52Z' AND CONVERT_TIMEZONE('America/New_York', time) > '2017-07-18T11:15:52Z .
美元__timeGroup(列,__interval美元) __timeGroup美元按时间间隔对时间戳进行分组,以便每个时间戳只有1个点__interval美元在图表上 TIME_SLICE(TO_TIMESTAMP(created_ts), 1, 'HOUR', 'START')
$__timeGroup(列,$__interval, timezone) __timeGroup美元按时间间隔对时间戳进行分组,以便每个时间戳只有1个点__interval美元并转换为给定的时区 TIME_SLICE(TO_TIMESTAMP(CONVERT_TIMEZONE('UTC', 'America/ los - angeles ', created_ts)), 1, 'HOUR', 'START')

例子

表可视化

雪花中的大多数查询都可以通过表可视化来最好地表示。任何查询都将在表中显示数据。如果它可以被查询,那么它就可以被放入一个表中。

这个例子返回表可视化的结果:

SELECT {column_1}, {column_2} FROM {table};

时间序列/图形可视化

对于时间序列/图形可视化,有以下几个要求:

  • 的列日期datetime必须选择类型
  • 日期列必须按升序排列(使用按ASC列排序
  • 还必须选择数字列

为了使图形更合理,请务必使用__timeFilter美元而且__timeGroup美元宏。

时间序列查询示例:

SELECT avg(execution_time) AS average_execution_time, $__timeGroup(start_time, $__interval), query_type FROM account_usage。WHERE $__timeFilter(start_time)按查询类型排序,查询类型为ASC;

检查查询

因为Grafana支持雪花所不支持的宏,所以可以直接复制/粘贴到雪花中的完全呈现查询在查询检查器中是可见的。要查看完整的内插查询,单击查询检查器按钮,完整的查询将在“查询”选项卡下可见。

模板和变量

要添加新的雪花查询变量,请参见添加一个查询变量.使用Snowflake数据源作为以下可用查询的数据源:

从Snowflake表中查询的任何值都可以用作变量。一定要避免选择太多的值,因为这会导致性能问题。

如果变量查询返回两列,则第二列的值将用作显示值

使用变量

在创建变量之后,可以在雪花查询中使用变量的语法.有关变量的更多信息,请参见模板和变量

在查询中使用变量时,可以选择设置插值格式.您还可以在数据源配置中配置默认插值格式。

单一变量

如果变量返回单个值,则可以使用以下格式之一。下面的示例假设您已经设置主题是作为默认插值,你有两个变量叫做queryTypeSingle而且限制.他们有价值观选择而且2分别。

从account_usage中选择query_type。query_history WHERE query_type = ${queryTypeSingle} Limit ${Limit:raw}

会被翻译成

从account_usage中选择query_type。query_history WHERE query_type = 'SELECT

设置默认变量插值类型在1.2版本中引入。从这个版本开始,您可以将默认插值类型设置为主题是

1.2版本之前的插件或者如果你用没有一个作为默认的插值类型,相同的查询必须写成如下形式

从account_usage中选择query_type。WHERE query_type = '${queryTypeSingle}' Limit ${Limit:raw}

使用sqlstring插值的多值变量

当使用返回多个选项的变量时,可以通过以下方法使用它。下面的示例假设您已经设置主题是默认插值,你有变量叫做queryTypeMulti而且限制.他们有价值观创建、选择而且2分别。

从account_usage中选择query_type。WHERE query_type in (${queryTypeMulti}) Limit ${Limit:raw}

会被翻译成

从account_usage中选择query_type。query_history WHERE query_type in ('CREATE','SELECT'

使用正则表达式的多值变量

若要使用具有多个值的变量,可以使用正则表达式修饰符选项正则表达式雪花函数.如。${变量:正则表达式}

例如,该查询将仅使用查询类型queryType变量:

...AND query_type regexp '${queryType:regex}'…

这个查询转换为:

...AND query_type regexp '(描述|CREATE_USER|DROP|TRUNCATE_TABLE|ALTER)'…

将数据可视化为日志

日志格式,您可以在资源管理器中可视化日志查看器中的数据。查询时日志格式,您的查询应该至少有一个时间列和一个字符串/内容列。可选地,查询可以调用第三列水平设置特定行的日志级别。支持的日志级别及其关键字请参见Grafana记录集成文档站点.如果查询返回任何附加列,它们将被视为日志中的附加字段/检测到的字段。

例如,下面是有效的日志查询。

选择'hello foo'作为"content",(时间戳'2021 12-31')作为"start_time", 'warn'作为"level" UNION SELECT 'hello bar'作为"content",(时间戳'2021 12-30 14:12:59')作为"start_time", 'error'作为"level" UNION SELECT 'hello baz'作为"content",(时间戳'2021 12-30')作为"start_time", 'warn'作为"level" UNION SELECT 'hello qux'作为"content",(时间戳'2021 12-29')作为"start_time", 'info'作为"level"UNION SELECT 'hello quuz' as "content",(时间戳'2021年12月27日')as "start_time", 'info' as "level"

为雪花导入一个仪表板

绑定的Snowflake仪表板要求数据源具有ACCOUNTADMIN查看计费数据的角色。在准备部分有一个这样的例子。

遵循这些指令用于导入仪表板。

导入的仪表板可以在配置>数据源>选择您的雪花数据源>选择仪表板选项卡查看可用的预先制作的仪表板。

充分利用插件

阅读更多