你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 Grafana 连接到 Azure Monitor Prometheus 指标
分析和呈现 Prometheus 数据的最常用方法是使用 Grafana 仪表板。 可以通过以下方式在 Azure 中收集 Prometheus 指标:
本文介绍如何将 Azure 托管的 Prometheus 指标配置为 Azure 托管 Grafana、在 Azure 虚拟机上运行的自托管 Grafana 或 Azure 外部运行的 Grafana 实例的数据源。
Azure Monitor 工作区查询终结点
在 Azure 中,Prometheus 数据存储在 Azure Monitor 工作区中。 在 Grafana 中配置 Prometheus 数据源时,你将使用 Azure Monitor 工作区的“查询终结点”。 要找到查询终结点,请在 Azure 门户中打开 Azure Monitor 工作区的“概览”页。
Microsoft 托管 Grafana
创建 Azure 托管 Grafana 实例时,系统会自动配置托管系统标识。 该标识在订阅级别分配了“监视数据读取者”角色。 此角色允许标识读取该订阅的任何监视数据。 此标识用于向 Azure Monitor 验证 Grafana。 无需执行任何操作即可配置该标识。
在 Grafana 中创建 Prometheus 数据源。
若要将 Prometheus 配置为数据源,请执行以下步骤:
- 在 Azure 门户中打开你的 Azure 托管 Grafana 工作区。
- 选择“终结点”以查看 Grafana 工作区。
- 选择“连接”,然后选择“数据源”。
- 选择“添加数据源”
- 搜索并选择 Prometheus。
- 将 Azure Monitor 工作区中的查询终结点粘贴到“Prometheus 服务器 URL”字段中。
- 在“身份验证”下,选择“Azure 身份验证”。
- 在“Azure 身份验证”下,从“身份验证”下拉列表中选择“托管标识”。
- 滚动到页面底部,然后选择“保存并测试”。
自托管 Grafana
以下部分介绍如何在 Azure 虚拟机上配置自托管 Grafana,以使用 Azure 托管的 Prometheus 数据。
使用以下步骤以允许访问资源组或订阅中的所有 Azure Monitor 工作区:
在 Azure 门户中打开虚拟机的“标识”页。
将“状态”设置为“打开”。
选择“保存”。
选择“Azure 角色分配”以查看订阅中的现有访问权限。
如果订阅或资源组未列出“监视数据读取者”角色,请选择“+ 添加角色分配”
在“范围”下拉列表中,选择“订阅”或“资源组”。 选择“订阅”可允许访问订阅中的所有 Azure Monitor 工作区。 选择“资源组”仅允许访问所选资源组中的 Azure Monitor 工作区。
选择 Azure Monitor 工作区所在的特定订阅或资源组。
在“角色”下拉列表中,选择“监视数据读取者”。
选择“保存”。
Grafana 9.x 和更高版本支持 Azure 身份验证,但默认未启用该功能。 若要启用 Azure 身份验证,请更新 Grafana 配置并重启 Grafana 实例。 若要查找 grafana.ini
文件,请查看 Grafana Labs 中的“配置 Grafana”文档。
使用以下步骤启用 Azure 身份验证:
找到并打开虚拟机上的 grafana.ini
文件。
在配置文件的 [auth]
节下,将 azure_auth_enabled
设置更改为 true
。
在配置文件的 [azure]
节下,将 managed_identity_enabled
设置更改为 true
重启 Grafana 实例。
在 Grafana 中创建 Prometheus 数据源
使用以下步骤将 Prometheus 配置为数据源:
在浏览器中打开 Grafana。
选择“连接”,然后选择“数据源”。
选择“添加数据源”
搜索并选择 Prometheus。
将 Azure Monitor 工作区中的查询终结点粘贴到“Prometheus 服务器 URL”字段中。
在“身份验证”下,选择“Azure 身份验证”。
在“Azure 身份验证”下,从“身份验证”下拉列表中选择“托管标识”。
滚动到页面底部,然后选择“保存并测试”。
在 Azure 外部托管的 Grafana
如果 Grafana 实例未托管在 Azure 中,可以使用 Microsoft Entra ID 连接到 Azure Monitor 工作区中的 Prometheus 数据。
使用以下步骤设置 Microsoft Entra ID 身份验证:
- 使用 Microsoft Entra ID 注册应用。
- 向该应用授予对你的 Azure Monitor 工作区的访问权限。
- 使用该应用的凭据配置自托管 Grafana。
使用 Microsoft Entra ID 注册应用
若要注册应用,请打开 Azure 门户中的“Active Directory 概述”页。
选择“应用注册”。
在“注册应用程序”页上,输入应用程序的名称。
选择“注册” 。
记下“应用程序(客户端) ID”和“目录(租户) ID”。 它们将用于 Grafana 身份验证设置。
在应用的概述页上,选择“证书和机密”。
在“客户端密码”选项卡上,选择“新建客户端密码”。
输入“说明”。
从下拉列表中选择过期期限,然后选择“添加”。
注意
创建一个机密续订过程,并在机密过期之前更新 Grafana 数据源设置。
机密过期后,Grafana 将无法从 Azure Monitor 工作区查询数据。
复制并保存客户端密码值。
注意
客户端密码值只能在创建后立即查看。 请确保在离开该页面之前保存该机密。
允许应用访问你的工作区
允许应用从你的 Azure Monitor 工作区查询数据。
在 Azure 门户中打开你的 Azure Monitor 工作区。
在“概述”页上,记下“查询终结点”。 设置 Grafana 数据源时,将使用该查询终结点。
选择“访问控制 (IAM)”。
在“访问控制(IAM)”页中,依次选择“添加”、“添加角色分配”。
在“添加角色分配”页面上,搜索“监视”。
选择“监视数据读取者”,然后选择“成员”选项卡。
选择“选择成员”。
搜索在向 Microsoft Entra ID 注册一个应用部分中注册的应用,并选择该应用。
单击“选择”。
选择“查看 + 分配”。
现已创建应用注册,并为其分配了从你的 Azure Monitor 工作区查询数据的访问权限。 下一步是在 Grafana 中设置 Prometheus 数据源。
Grafana 现在支持使用 Prometheus 数据源连接到 Azure Monitor 托管的 Prometheus。 对于自托管 Grafana 实例,需要更改配置才能在 Grafana 中使用 Azure 身份验证选项。 对于不由 Azure 托管的 Grafana 实例,请进行以下更改:
Grafana 9.x 和更高版本支持 Azure 身份验证,但默认未启用该功能。 若要启用 Azure 身份验证,请更新 Grafana 配置并重启 Grafana 实例。 若要查找 grafana.ini
文件,请查看 Grafana Labs 中的“配置 Grafana”文档。
找到并打开虚拟机上的 grafana.ini
文件。
确定 Grafana 版本。
对于 Grafana 9.0,在 [feature_toggles]
部分中,将 prometheus_azure_auth
设置为 true
.
对于 Grafana 9.1 及更高版本,在 [auth]
部分中,将 azure_auth_enabled
设置设置为 true
。
重启 Grafana 实例。
在 Grafana 中创建 Prometheus 数据源
使用以下步骤将 Prometheus 配置为数据源:
在浏览器中打开 Grafana。
选择“连接”,然后选择“数据源”。
选择“添加数据源”
搜索并选择 Prometheus。
将 Azure Monitor 工作区中的查询终结点粘贴到“URL”字段中。
在“身份验证”下,选择“Azure 身份验证”。对于早期 Grafana 版本,请在“身份验证”下打开“Azure 身份验证”
在“Azure 身份验证”下,从“身份验证”下拉菜单中选择“应用注册”。
输入在创建应用注册时生成的目录(租户)ID、应用程序(客户端)ID 和客户端密码。
滚动到页面底部,然后选择“保存并测试”。
常见问题解答
本部分提供常见问题的解答。
我缺少所有或部分指标。 如何进行故障排除?
可以使用此处的故障排除指南从托管代理引入 Prometheus 指标。
为什么我缺少具有名称相同但大小写不同的两个标签的指标?
Azure 托管的 Prometheus 是一个不区分大小写的系统。 如果字符串(例如指标名称、标签名称或标签值)与另一个时序的区别仅在于字符串的大小写,则它会将这些字符串视为相同的时序。 有关详细信息,请参阅 Prometheus 指标概述。
指标数据中存在一些差距,为什么会这样?
在节点更新期间,对于从群集级别收集器收集的指标,你可能会看到指标数据中存在 1 到 2 分钟的间隔。 发生此差距的原因是运行数据的节点正在作为正常更新过程的一部分进行更新。 此更新过程影响整个群集范围内的目标,例如 kube-state-metrics 和指定的自定义应用程序目标。 手动或自动更新群集时,会出现这种情况。 此行为是预期行为,它的发生是由于它基于的节点正在更新。 此行为不会影响我们推荐的任何警报规则。
后续步骤