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

Grafana 的 Databricks 数据源

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

该数据源提供了一个 SQL 编辑器,用于格式化和颜色标记您的 SQL 语句。

安装

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

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

手动配置

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

使用配置文件

可以使用 Grafana 的 Provisioning 系统通过配置文件配置数据源。要了解其工作原理,包括您可以为此数据源设置的所有设置,请参阅Provisioning 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 将没有明确时区的 timestamp 行解释为 UTC。除 time 之外的任何列都视为值列。

多线条时序数据

要创建多线条时序数据,查询必须按以下顺序返回至少 3 个字段

  • 字段 1: datetime 字段,别名为 time
  • 字段 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 转换为 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 Passthrough

收集信息

  1. 作为管理员,在 Databricks Dashboard 中导航到 Settings > Identity and access > SSO and sync > SSO Settings > Manage:Databricks dashboard
  2. 复制 Databricks SAML URL。(不要关闭此标签页)Databricks dashboard
  3. 创建应用注册
  4. 前往Azure Portal
  5. Microsoft Entra ID > 添加 > 企业应用程序Microsoft Entra ID Add Enterprise Application screen
  6. 输入应用程序名称。当被问及“您希望如何处理您的应用程序?”时,请选择“集成图库中没有找到的任何其他应用程序”。Databricks create application screen
  7. 在 Properties 下将 Assignment Required 设置为 NO:Databricks create application screen
  8. 在 Single-sign on 下点击 SAML,并在 Basic SAML Configuration 下点击编辑
  9. 将 Identifier ID 设置为之前保存的 Databricks SAML URL,并将 Reply URLs 设置为 Databricks SAML URL 以及本指南中的 Grafana redirect URLsBasic SAML Configuration
  10. 在 SAML Sign-in Certificate 下点击编辑,并将 Sign-in Option 设置为 Sign SAML response and assertion。点击保存。
  11. 在 Attributes & Claims 下点击编辑。将 Unique User Identifier (Name ID) 字段设置为 user.mailBasic SAML Configuration
  12. 在 SAML Certificates 下,Certificate Base 64 旁边点击下载。这将下载一个 `.cer` 文件。复制其内容以便在 Databricks 中进行后续步骤。
  13. 同时保存 Databricks 的 Login URL 和 Microsoft Entra ID Identifier
  14. 回到您的 Databricks SSO 设置标签页
  • Single Sign-On URL => Login URL(上一步获取)
  • Identity Provider Entity ID => Microsoft Entra Identifier(上一步获取)
  • X.509 Certificate => 下载的证书内容

完成 Grafana OAuth 设置

  1. 在 Azure Portal 上,转到 App Registrations > All Applications 并找到您的应用程序名称
  2. 在概览页面上记下 Application (client) ID。在您的 conf.ini 文件中,这是 Oauth client ID 和 Directory (tenant) ID。
  3. 点击 Endpoints
  4. 记下 OAuth 2.0 authorization endpoint (v2) URL。这是授权 URL。
  5. 记下 OAuth 2.0 token endpoint (v2)。这是令牌 URL。
  6. 点击 Certificates & secrets,然后在 Client secrets 下添加一个新条目,配置如下。
  7. 描述:Grafana OAuth
  8. 过期时间:从不
  9. 点击 Add,然后复制密钥值。这是 OAuth client secret。
定义所需角色
  1. 前往 Microsoft Entra ID,然后前往 Enterprise Applications。
  2. 搜索您的应用程序并点击它。
  3. 点击 Users and Groups。
  4. 点击 Add user/group 将用户或组添加到 Grafana 角色。
  5. 现在回到 Microsoft Entra ID,然后前往 App Registrations。搜索您的应用并点击它。
  6. 前往 App Roles 并按照此处所述配置角色。
  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

最后,在数据源设置页面上将 Authentication Type 设置为 OAuth Passthrough。

代表身份进行认证

代表身份进行认证仅适用于Azure Databricks 集群。它允许单个用户通过在 Azure 中配置的应用注册使用自己的凭据进行身份验证,该应用注册具有访问 Databricks 资源的权限。

目前,私有云(Azure China Cloud、Azure Government Cloud)不支持代表身份进行认证。

警告

如果您的数据源配置为使用代表身份进行认证,请避免设置告警。告警规则将无法工作,因为没有用户在范围内提供查询凭据。

设置

  1. 配置 Grafana 使用 OAuth2 和 Microsoft Entra ID 进行身份验证,如文档所述。[auth.azuread] 的 scopes(或 $GF_AUTH_AZUREAD_SCOPES)必须包含“openid email profile offline_access”。

  2. 必须在Azure portal 中勾选“App Registrations” → 相应的应用程序 → “Manage” → “Authentication” 下的复选框来启用 ID 令牌。

  3. 除了“Microsoft Graph” User.Read 外,还必须在Azure portal 中勾选“App Registrations” → 相应的应用程序 → “Manage” → “API permissions” 下的特殊“Azure Databricks” user_impersonation 权限。

  4. 在“App Registrations” → 相应的应用程序 → “Security” → “Permissions” 下启用“Admin consent”。启用“Admin consent”将代表当前租户中的所有用户授予同意,确保用户在使用应用程序时无需再次同意。

  5. 配置 Azure Databricks 集群的数据源时,可以通过导航到您的 Azure Databricks 集群 → SQL Warehouses → Connection details → Server hostname 和 HTTP path 找到 hostname 和 HTTP path。

  6. 使用步骤 1 中创建的应用注册的 Tenant ID、Client ID 和 Client secret 值。

了解更多