菜单
文档breadcrumb arrow 插件breadcrumb arrow 适用于Grafana的Databricks数据源

适用于Grafana的Databricks数据源

此数据源允许直接连接到Databricks,在Grafana中查询和可视化Databricks数据。

此数据源提供SQL编辑器来格式化和编写代码SQL语句。

安装

有关如何在Grafana Cloud或本地安装插件的详细说明,请参阅插件安装文档

注意:此插件使用动态链接进行凭据身份验证(已弃用)。我们建议使用令牌身份验证。如果您在裸Alpine Linux上运行此插件,使用凭据身份验证将不会工作。如果出于某些原因令牌身份验证不是选项且需要Alpine Linux,我们建议使用我们的Alpine镜像

手动配置

一旦插件安装到您的Grafana实例上,请按照这些说明添加新的Databricks数据源,并输入配置选项。

使用配置文件

可以使用Grafana的配置系统使用配置文件配置数据源。要了解它是如何工作的,包括您可以为此数据源设置的设置,请参阅配置Grafana数据源

以下是此数据源的基本身份验证配置示例

yaml
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:具有别名timedatetime字段
  • 字段2:要分组的值
  • 字段3+:指标值

例如

sql
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 进行窗口分组。

示例

sql
SELECT window.start, avg(aggqueue) FROM a17
GROUP BY window(_time,  '$__interval_long')

将根据仪表板间隔翻译成以下查询。

sql
SELECT window.start, avg(aggqueue) FROM a17
GROUP BY window(_time,  '2 MINUTE')

宏示例

以下表格显示了当 Grafana 具有间隔 1m 时,$__interval_long 宏的宏展开。

格式展开为
$__interval_long1 分钟

OAuth 配置

使用 Microsoft Entra ID(Azure Active Directory)的 OAuth Passthrough

收集信息

  1. 作为管理员,转到您的 Databricks 仪表板,在设置 > 身份和访问 > SSO 和同步 > SSO 设置 > 管理: Databricks 仪表板
  2. 复制 Databricks SAML URL。 (不要关闭标签页) Databricks 仪表板
  3. 创建您的应用程序注册
  4. 转到 Azure 门户
  5. Microsoft Entra ID > 添加 > 企业应用程序 Microsoft Entra ID 添加企业应用程序屏幕
  6. 为应用程序输入名称。当被问及“您想用您的应用程序做什么?”时,选择“整合您在库中找不到的任何应用程序”。 Databricks 创建应用程序屏幕
  7. 在属性下,将“分配所需”设置为“否”: Databricks 创建应用程序屏幕
  8. 在单点登录下单击 SAML,并在基本 SAML 配置下单击编辑
  9. 将标识符 ID 设置为之前保存的 Databricks SAML URL,并将回复 URL 设置为 Databricks SAML URL 以及本指南中的 Grafana 重定向 URL 基本 SAML 配置
  10. 在 SAML 登录证书下单击编辑,并将登录选项设置为“签名 SAML 响应和断言”。单击保存。
  11. 在“属性 & 声明”下点击编辑。将“唯一用户标识符(名称ID)”字段设置为user.mail 基本SAML配置
  12. 在“SAML证书”下,点击“证书Base 64”旁边的“下载”。这将下载一个.cer文件。将内容复制到Databricks的后续步骤中。
  13. 还要保存Databricks的登录URL和Microsoft Entra ID标识符。
  14. 返回到您的Databricks SSO设置标签页。
  • 单一登录URL => 登录URL(来自上一步)
  • 身份提供者实体ID => Microsoft Entra标识符(来自上一步)
  • X.509证书 => 下载证书的内容

完成Grafana OAuth设置

  1. 在Azure门户中,转到“应用程序注册 > 所有应用程序”,找到您的应用程序名称
  2. 在概览页上,注意应用程序(客户端)ID。对于您的conf.ini文件配置,这是OAuth客户端ID以及目录(租户)ID。
  3. 点击“端点”
  4. 注意OAuth 2.0授权端点(v2)URL。这是授权URL。
  5. 注意OAuth 2.0令牌端点(v2)。这是令牌URL。
  6. 点击“证书 & 秘密”,然后在客户端秘密下添加一个新的条目,配置如下。
  7. 描述:Grafana OAuth
  8. 过期:永不
  9. 点击“添加”,然后复制密钥值。这是OAuth客户端密钥。
定义所需的角色
  1. 转到Microsoft Entra ID,然后转到企业应用程序。
  2. 搜索您的应用程序,然后点击它。
  3. 点击“用户和组”。
  4. 点击“添加用户/组”将用户或组添加到Grafana角色。
  5. 现在返回到Microsoft Entra ID,然后转到应用程序注册。搜索您的应用程序,然后点击它。
  6. 转到应用程序角色,并配置角色,如此处所述
  7. 现在按此处所述在Grafana配置文件中配置AD OAuth。
将令牌转发给用户

在您的grafana.ini文件中设置

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政府云)进行代表身份验证。

注意:当数据源配置为使用代表身份验证时,不要设置警报。由于没有用户范围提供查询凭据,警报规则将不起作用。

设置

  1. 文档配置Grafana使用OAuth2和Microsoft Entra ID。代码[auth.azuread]scopes(或$GF_AUTH_AZUREAD_SCOPES)必须包含“openid email profile offline_access”。

  2. 需要在“Azure门户”的“应用注册”下,通过勾选复选框来启用ID令牌。路径是:“应用注册”→相应的应用程序→“管理”→“身份验证”。

  3. 除了“Microsoft Graph”的User.Read权限外,还需要在“Azure门户”的“应用注册”下启用特殊的“Azure Databricks”user_impersonation权限。路径是:“应用注册”→相应的应用程序→“管理”→“API权限”。

  4. 在“应用注册”→相应的应用程序→“安全”→“权限”下启用“管理员同意”。启用“管理员同意”将为当前租户中的所有用户代表同意,确保用户在使用应用程序时不需要同意。

  5. 配置Azure Databricks集群的数据源时,可以通过导航到您的Azure Databricks集群→SQL仓库→连接详情→服务器主机名和HTTP路径来找到主机名和HTTP路径。

  6. 使用步骤1中创建的应用注册的租户ID、客户端ID和客户端密钥值。

了解更多