适用于Grafana的Databricks数据源
此数据源允许直接连接到Databricks,在Grafana中查询和可视化Databricks数据。
此数据源提供SQL编辑器来格式化和编写代码SQL语句。
安装
有关如何在Grafana Cloud或本地安装插件的详细说明,请参阅插件安装文档。
注意:此插件使用动态链接进行凭据身份验证(已弃用)。我们建议使用令牌身份验证。如果您在裸Alpine Linux上运行此插件,使用凭据身份验证将不会工作。如果出于某些原因令牌身份验证不是选项且需要Alpine Linux,我们建议使用我们的Alpine镜像。
手动配置
一旦插件安装到您的Grafana实例上,请按照这些说明添加新的Databricks数据源,并输入配置选项。
使用配置文件
可以使用Grafana的配置系统使用配置文件配置数据源。要了解它是如何工作的,包括您可以为此数据源设置的设置,请参阅配置Grafana数据源。
以下是此数据源的基本身份验证配置示例
apiVersion: 1
datasources:
- name: Databricks
type: grafana-databricks-datasource
jsonData:
host: community.cloud.databricks.com
httpPath: path-from-databricks-odbc-settings
secureJsonData:
token: password/personal-token
时间序列
添加datetime
字段类型到查询后,可以选择时间序列可视化选项。此字段将用作时间戳。您可以使用可视化选项选择时间序列可视化。Grafana将没有显式时区的时间戳行解释为UTC。任何除time
之外的列都视为值列。
多行时间序列
要创建多行时间序列,查询必须至少返回以下顺序的3个字段
- 字段1:具有别名
time
的datetime
字段 - 字段2:要分组的值
- 字段3+:指标值
例如
SELECT log_time AS time, machine_group, avg(disk_free) AS avg_disk_free
FROM mgbench.logs1
GROUP BY machine_group, log_time
ORDER BY log_time
模板和变量
要添加新的Databricks查询变量,请参阅添加查询变量。
创建变量后,您可以在Databricks查询中使用它,方法是使用变量语法。有关变量的更多信息,请参阅模板和变量。
Databricks查询中的宏
宏示例 | 描述 |
---|---|
$____interval_long | 将 Grafana 的时间间隔转换为 INTERVAL DAY TO SECOND 文本。适用于 Spark SQL 窗口分组表达式。 |
$__timeFilter(dateColumn) | 将被替换为使用指定列名的时间范围过滤器。例如,dateColumn "time BETWEEN '2006-01-02T15:04:05Z07:00' AND '2006-01-02T15:04:05Z07:00'" |
$__timeFrom(dateColumn) | 将被替换为当前活动时间选择的开头。例如,"time > '2006-01-02T15:04:05Z07:00'" |
$__timeGroup(dateColumn,'5m') | 将被替换为可用于 GROUP BY 子句的表达式。例如,UNIX_TIMESTAMP(time_column) DIV 900 * 900 |
$__timeGroup(dateColumn,'5m', 0) | 与上面相同,但具有填充参数,所以该系列中缺失的点将由 grafana 添加,并且 0 将用作值(仅适用于时间序列查询)。 |
$__timeGroup(dateColumn,'5m', NULL) | 与上面相同,但缺失的点将使用 NULL 作为值(仅适用于时间序列查询)。 |
$__timeGroup(dateColumn,'5m', previous) | 与上面相同,但如果尚未看到值,则使用该系列中的上一个值作为填充值,否则使用 NULL(仅适用于时间序列查询)。 |
$__timeTo(dateColumn) | 将被替换为当前活动时间选择的结束。 $__timeTo(time) => "time < '2006-01-02T15:04:05Z07:00'" |
$__interval_long
宏
在某些情况下,您可能希望使用 Spark SQL 进行窗口分组。
示例
SELECT window.start, avg(aggqueue) FROM a17
GROUP BY window(_time, '$__interval_long')
将根据仪表板间隔翻译成以下查询。
SELECT window.start, avg(aggqueue) FROM a17
GROUP BY window(_time, '2 MINUTE')
宏示例
以下表格显示了当 Grafana 具有间隔 1m
时,$__interval_long
宏的宏展开。
格式 | 展开为 |
---|---|
$__interval_long | 1 分钟 |
OAuth 配置
使用 Microsoft Entra ID(Azure Active Directory)的 OAuth Passthrough
收集信息
- 作为管理员,转到您的 Databricks 仪表板,在设置 > 身份和访问 > SSO 和同步 > SSO 设置 > 管理:
- 复制 Databricks SAML URL。 (不要关闭标签页)
- 创建您的应用程序注册
- 转到 Azure 门户
- Microsoft Entra ID > 添加 > 企业应用程序
- 为应用程序输入名称。当被问及“您想用您的应用程序做什么?”时,选择“整合您在库中找不到的任何应用程序”。
- 在属性下,将“分配所需”设置为“否”:
- 在单点登录下单击 SAML,并在基本 SAML 配置下单击编辑
- 将标识符 ID 设置为之前保存的 Databricks SAML URL,并将回复 URL 设置为 Databricks SAML URL 以及本指南中的 Grafana 重定向 URL
- 在 SAML 登录证书下单击编辑,并将登录选项设置为“签名 SAML 响应和断言”。单击保存。
- 在“属性 & 声明”下点击编辑。将“唯一用户标识符(名称ID)”字段设置为user.mail
- 在“SAML证书”下,点击“证书Base 64”旁边的“下载”。这将下载一个
.cer
文件。将内容复制到Databricks的后续步骤中。 - 还要保存Databricks的登录URL和Microsoft Entra ID标识符。
- 返回到您的Databricks SSO设置标签页。
- 单一登录URL => 登录URL(来自上一步)
- 身份提供者实体ID => Microsoft Entra标识符(来自上一步)
- X.509证书 => 下载证书的内容
完成Grafana OAuth设置
- 在Azure门户中,转到“应用程序注册 > 所有应用程序”,找到您的应用程序名称
- 在概览页上,注意应用程序(客户端)ID。对于您的
conf.ini
文件配置,这是OAuth客户端ID以及目录(租户)ID。 - 点击“端点”
- 注意OAuth 2.0授权端点(v2)URL。这是授权URL。
- 注意OAuth 2.0令牌端点(v2)。这是令牌URL。
- 点击“证书 & 秘密”,然后在客户端秘密下添加一个新的条目,配置如下。
- 描述:Grafana OAuth
- 过期:永不
- 点击“添加”,然后复制密钥值。这是OAuth客户端密钥。
定义所需的角色
- 转到Microsoft Entra ID,然后转到企业应用程序。
- 搜索您的应用程序,然后点击它。
- 点击“用户和组”。
- 点击“添加用户/组”将用户或组添加到Grafana角色。
- 现在返回到Microsoft Entra ID,然后转到应用程序注册。搜索您的应用程序,然后点击它。
- 转到应用程序角色,并配置角色,如此处所述。
- 现在按此处所述在Grafana配置文件中配置AD OAuth。
将令牌转发给用户
在您的grafana.ini
文件中设置
[azure]
forward_settings_to_plugins = grafana-azure-monitor-datasource, prometheus, grafana-azure-data-explorer-datasource, mssql, grafana-databricks-datasource
最后,在数据源设置页面下,将身份验证类型设置为OAuth Passthrough。
代表身份验证
代表身份验证仅适用于Azure Databricks集群。它允许使用通过Azure中配置的应用程序注册并有权访问Databricks资源的个人用户凭据进行身份验证。
目前不支持私有云(Azure中国云、Azure政府云)进行代表身份验证。
注意:当数据源配置为使用代表身份验证时,不要设置警报。由于没有用户范围提供查询凭据,警报规则将不起作用。
设置
按文档配置Grafana使用OAuth2和Microsoft Entra ID。代码
[auth.azuread]
的scopes
(或$GF_AUTH_AZUREAD_SCOPES
)必须包含“openid email profile offline_access”。需要在“Azure门户”的“应用注册”下,通过勾选复选框来启用ID令牌。路径是:“应用注册”→相应的应用程序→“管理”→“身份验证”。
除了“Microsoft Graph”的
User.Read
权限外,还需要在“Azure门户”的“应用注册”下启用特殊的“Azure Databricks”user_impersonation
权限。路径是:“应用注册”→相应的应用程序→“管理”→“API权限”。在“应用注册”→相应的应用程序→“安全”→“权限”下启用“管理员同意”。启用“管理员同意”将为当前租户中的所有用户代表同意,确保用户在使用应用程序时不需要同意。
配置Azure Databricks集群的数据源时,可以通过导航到您的Azure Databricks集群→SQL仓库→连接详情→服务器主机名和HTTP路径来找到主机名和HTTP路径。
使用步骤1中创建的应用注册的租户ID、客户端ID和客户端密钥值。