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