分析和呈现 Prometheus 数据的最常用方法是使用 Grafana 仪表板。 可以通过以下方式在 Azure 中收集 Prometheus 指标:
本文介绍如何将 Azure 托管的 Prometheus 指标配置为 Azure 托管 Grafana、在 Azure VM 上运行的自托管 Grafana 或在 Azure 外部运行的 Grafana 实例的数据源。
在 Azure 中,Prometheus 数据存储在 Azure Monitor 工作区中。 在 Grafana 中配置 Prometheus 数据源时,请使用 Azure Monitor 工作区的查询终结点。 要找到查询终结点,请在 Azure 门户中打开 Azure Monitor 工作区的“概览”页。
使用托管标识自动配置 Azure 托管 Grafana 实例。 该标识在订阅级别分配了“监视数据读取者”角色。 此角色允许身份读取订阅的任何监视数据。 此标识用于向 Azure Monitor 验证 Grafana。 无需执行任何操作即可配置该标识。
在 Grafana 中创建 Prometheus 数据源
若要将 Prometheus 配置为数据源,请执行以下步骤:
在 Azure 门户中打开你的 Azure 托管 Grafana 工作区。
选择终结点以查看 Grafana 工作区。
选择 “连接>数据源”。
选择“添加数据源”。
搜索并选择 Prometheus。
将 Azure Monitor 工作区中的查询终结点粘贴到“Prometheus 服务器 URL”字段中。
在 “身份验证”下,选择 “Azure 身份验证”。
在 Azure 身份验证下,从“身份验证”下拉列表中选择“托管标识”。
滚动到页面底部,然后选择“保存并测试”。
以下部分介绍如何在 Azure VM 上配置自管理 Grafana 以使用 Azure 托管的 Prometheus 数据。
若要允许访问资源组或订阅中的所有 Azure Monitor 工作区,请执行以下步骤:
在 Azure 门户中打开 VM 的 “标识 ”页。
将“状态”设置为“开启”。
Select Save.
选择“Azure 角色分配”以查看订阅中的现有访问权限。
如果订阅或资源组未列出 “监视数据读取者 ”角色,请选择“ + 添加角色分配”。
在 “范围 ”下拉列表中,选择 “订阅 ”或 “资源组”。 选择“订阅”可允许访问订阅中的所有 Azure Monitor 工作区。 选择“资源组”仅允许访问所选资源组中的 Azure Monitor 工作区。
选择 Azure Monitor 工作区所在的特定订阅或资源组。
从 “角色 ”下拉列表中,选择“ 监视数据读取者”。
Select Save.
9.x 及更高版本的 Grafana 支持 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 身份验证下,从“身份验证”下拉列表中选择“托管标识”。
滚动到页面底部,然后选择“保存并测试”。
如果 Grafana 实例未托管在 Azure 中,可以使用 Microsoft Entra ID 连接到 Azure Monitor 工作区中的 Prometheus 数据。
若要设置Microsoft Entra ID 身份验证,请执行以下步骤:
- 使用 Microsoft Entra ID 注册应用。
- 向该应用授予对 Azure Monitor 工作区的访问权限。
- 使用该应用的凭据配置自托管 Grafana。
使用 Microsoft Entra ID 注册应用
若要注册应用,请在 Azure 门户中打开 “Active Directory 概述 ”页。
选择应用程序注册。
在 “注册应用程序 ”页上,输入应用程序的名称。
Select Register.
请注意 应用程序(客户端)ID 值和 目录(租户)ID 值。 它们将用于 Grafana 身份验证设置。
在应用的概述页上,选择“证书和机密”。
在“客户端密码”选项卡上,选择“新建客户端密码”。
输入说明。
从下拉列表中选择到期期限,然后选择“ 添加”。
备注
创建一个机密续订过程,并在机密过期之前更新 Grafana 数据源设置。 机密过期后,Grafana 将无法从 Azure Monitor 工作区查询数据。
复制并保存客户端机密值。
备注
只能在创建后立即查看客户端机密值。 在离开页面之前保存机密。
允许应用从你的 Azure Monitor 工作区查询数据。
在 Azure 门户中打开你的 Azure Monitor 工作区。
在概述页上,记下 查询终结点 值。 设置 Grafana 数据源时,将使用查询终结点。
选择“访问控制(IAM)”。
在 “访问控制”(IAM) 页上,选择“ 添加添加>角色分配”。
在 “添加角色分配 ”页上,搜索 “监视”。
选择“ 监视数据读取器”,然后选择“ 成员 ”选项卡。
选择“选择成员”。
搜索在向 Microsoft Entra ID 注册一个应用部分中注册的应用,并选择该应用。
Choose Select.
选择审核 + 分配。
你创建了应用注册,并为其分配了对 Azure Monitor 工作区中查询数据的访问权限。 下一步是在 Grafana 中设置 Prometheus 数据源。
Grafana 现在支持通过 Prometheus 数据源 连接到由 Azure Monitor 管理的 Prometheus。 对于自托管 Grafana 实例,需要更改配置才能在 Grafana 中使用 Azure 身份验证选项。 对于 Azure 不管理的 Grafana 实例,请进行以下更改。
9.x 及更高版本的 Grafana 支持 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 指标概述。
我看到指标数据存在一些差距。 为什么会发生此行为?
在节点更新期间,对于从群集级别收集器收集的指标,可能会发现指标数据存在一分钟到两分钟的差距。 发生此差距的原因是运行数据的节点正在作为正常更新过程的一部分进行更新。 此更新过程影响整个群集范围内的目标,例如 kube-state-metrics 和指定的自定义应用程序目标。 当群集手动更新或通过自动更新时,将发生此过程。
此行为是预期的,不会影响我们推荐的任何警报规则。