用于 Grafana 的 Databricks 数据源
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 MINUTE |
OAuth 配置
使用 Microsoft Entra ID(Azure Active Directory)进行 OAuth 传递
收集信息
- 以管理员身份登录 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 步骤中使用。 - 同时保存登录 URL 和 Microsoft Entra ID 标识符以供 Databricks 使用。
- 返回 Databricks SSO 设置选项卡。
- 单一登录 URL => 登录 URL(来自上一步)
- 身份提供商实体 ID => Microsoft Entra 标识符(来自上一步)
- X.509 证书 => 下载的证书内容
完成 Grafana OAuth 设置
- 在 Azure 门户中,转到“应用注册” > “所有应用”,然后找到您的应用名称。
- 在概述页面上,记下“应用程序(客户端)ID”。在您的
conf.ini
文件中的配置中,此 ID 也是 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 传递”。
代表用户身份验证
代表用户身份验证仅适用于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 门户 中的“应用注册”→相应的应用→“管理”→“API 权限”下启用特殊的“Azure Databricks”user_impersonation
权限。在“应用注册”→相应的应用→“安全”→“权限”下启用“管理员同意”。启用“管理员同意”将代表当前租户中的所有用户授予同意,确保用户在使用应用时无需同意。
配置 Azure Databricks 集群的数据源时,可以通过导航到您的 Azure Databricks 集群→SQL 数据仓库→连接详细信息→服务器主机名和 HTTP 路径来找到主机名和 HTTP 路径。
使用步骤 1 中创建的应用注册的租户 ID、客户端 ID 和客户端机密值。