菜单
文档面包屑箭头 插件面包屑箭头 面包屑箭头 用于 Grafana 的 Databricks 数据源

用于 Grafana 的 Databricks 数据源

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:带time别名的datetime字段
  • 字段 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 MINUTE

OAuth 配置

使用 Microsoft Entra ID(Azure Active Directory)进行 OAuth 传递

收集信息

  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. 同时保存登录 URL 和 Microsoft Entra ID 标识符以供 Databricks 使用。
  14. 返回 Databricks SSO 设置选项卡。
  • 单一登录 URL => 登录 URL(来自上一步)
  • 身份提供商实体 ID => Microsoft Entra 标识符(来自上一步)
  • X.509 证书 => 下载的证书内容

完成 Grafana OAuth 设置

  1. 在 Azure 门户中,转到“应用注册” > “所有应用”,然后找到您的应用名称。
  2. 在概述页面上,记下“应用程序(客户端)ID”。在您的 conf.ini 文件中的配置中,此 ID 也是 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 传递”。

代表用户身份验证

代表用户身份验证仅适用于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 门户 中的“应用注册”→相应的应用→“管理”→“API 权限”下启用特殊的“Azure Databricks” user_impersonation 权限。

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

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

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

了解更多