你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Prometheus 指标从虚拟机、规模集或 Kubernetes 群集发送到 Azure Monitor 工作区

Prometheus 不限于监视 Kubernetes 群集。 使用 Prometheus 监视服务器上运行的应用程序和服务,无论它们在哪里运行。 例如,可以监视虚拟机、虚拟机规模集,甚至本地服务器上运行的应用程序。 还可以将 Prometheus 指标从自托管群集和 Prometheus 服务器发送到 Azure Monitor 工作区。

本文会介绍如何配置远程写入,以将数据从自管理 Prometheus 实例发送到 Azure Monitor 工作区。

远程写入选项

自托管 Prometheus 可以在 Azure 和非 Azure 环境中运行。 下面是基于 Prometheus 正在运行的环境对 Azure Monitor 工作区进行远程写入的身份验证选项。

Azure 托管虚拟机、虚拟机规模集和 Kubernetes 群集

对在 Azure 环境中运行自托管 Prometheus 的服务使用用户分配的托管标识身份验证。 Azure 托管服务包括:

  • Azure 虚拟机
  • Azure 虚拟机规模集
  • Azure Kubernetes 服务 (AKS)

若要为 Azure 托管资源设置远程写入,请参阅本文后面的使用用户分配的托管标识身份验证进行远程写入

在非 Azure 环境中运行的虚拟机和 Kubernetes 群集

如果具有非 Azure 环境中的虚拟机或 Kubernetes 群集,或者已加入 Azure Arc,请安装自托管 Prometheus 并使用 Microsoft Entra 应用程序身份验证配置远程写入。 有关详细信息,请参阅本文后面的使用 Microsoft Entra 应用程序身份验证进行远程写入

加入已启用 Azure Arc 的服务后,可以在 Azure 中管理和配置非 Azure 虚拟机。 有关详细信息,请参阅已启用 Azure Arc 的服务器已启用 Azure Arc 的 Kubernetes。 已启用 Azure Arc 的服务器仅支持 Microsoft Entra 身份验证。

注意

系统分配的托管标识不支持远程写入到 Azure Monitor 工作区。 用户分配的托管标识或 Microsoft Entra 应用程序身份验证。

先决条件

支持的版本

  • 托管标识身份验证需要高于 2.45 的 Prometheus 版本。
  • Microsoft Entra 应用程序身份验证需要高于 2.48 的 Prometheus 版本。

Azure Monitor 工作区

本文介绍如何将 Prometheus 指标发送到 Azure Monitor 工作区。 若要创建 Azure Monitor 工作区,请参阅管理 Azure Monitor 工作区

权限

完成本文中的步骤需要群集或资源的管理员权限。

为远程写入设置身份验证

根据 Prometheus 正在运行的环境,可以将远程写入配置为使用用户分配的托管标识或 Microsoft Entra 应用程序身份验证将数据发送到 Azure Monitor 工作区。

使用 Azure 门户或 Azure CLI 创建用户分配的托管标识或 Microsoft Entra 应用程序。

使用用户分配的托管标识身份验证进行远程写入

可在任何 Azure 托管环境中使用用户分配的托管标识身份验证。 如果 Prometheus 服务在非 Azure 环境中运行,则可以使用 Microsoft Entra 应用程序身份验证。

若要为远程写入到 Azure Monitor 工作区配置用户分配的托管标识,请完成以下步骤。

创建用户分配的托管标识

若要创建用于远程写入配置的用户托管标识,请参阅管理用户分配的托管标识

请注意所创建的托管标识 clientId 的值。 此 ID 用于 Prometheus 远程写入配置。

将“监视指标发布者”角色分配给应用程序

在工作区的数据收集规则中,为托管标识分配“监视指标发布者”角色:

  1. 在 Azure Monitor 工作区,概述页面上,选择“数据收集规则”链接。

    显示 Azure Monitor 工作区窗格中数据收集规则链接的屏幕截图。

  2. 在数据收集规则的页面中,选择“访问控制 (IAM)”。

  3. 选择“添加”>“添加角色分配”。

    显示为数据收集规则添加角色分配的屏幕截图。

  4. 搜索并选择“监视指标发布服务器”,然后选择“下一步”。

    显示数据收集规则的角色分配菜单的屏幕截图。

  5. 选择“托管标识”。

  6. 选择“选择成员”

  7. 在“托管标识”下拉列表中,选择“用户分配的托管标识”

  8. 选择要使用的用户分配的标识,然后选择“选择”。

    显示为数据收集规则选择成员和用户分配的托管标识的屏幕截图。

  9. 选择“查看 + 分配”以完成角色分配。

将托管标识分配给虚拟机或虚拟机规模集

重要

要完成本部分中的步骤,你必须具有对虚拟机或虚拟机规模集的所有者或用户访问管理员权限。

  1. 在 Azure 门户中,转到群集、虚拟机或虚拟机规模集的页面。

  2. 选择“标识”。

  3. 选择“用户分配”

  4. 选择 添加

  5. 选择创建的用户分配的托管标识,然后选择“添加”。

    显示用于添加用户分配的托管标识的窗格的屏幕截图。

为 Azure Kubernetes 服务分配托管标识

对于 Azure Kubernetes 服务,必须将托管标识分配给虚拟机规模集。

AKS 创建包含虚拟机规模集的资源组。 资源组名称的格式为 MC_<resource group name>_<AKS cluster name>_<region>

对于资源组中的每个虚拟机规模集,请按照上一节(将托管标识分配给虚拟机或虚拟机规模集)中的步骤分配托管标识。

配置远程写入

远程写入在 Prometheus 配置文件 prometheus.yml 或在 Prometheus Operator 中进行配置。

有关配置远程写入的详细信息,请参阅 Prometheus.io 文章:配置。 有关优化远程写入配置的详细信息,请参阅远程写入优化

若要将数据发送到 Azure Monitor 工作区,请将以下部分添加到自托管 Prometheus 实例的配置文件(prometheus.yml):

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
# Microsoft Entra ID configuration.
# The Azure cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
    azuread:
      cloud: 'AzurePublic'
      managed_identity:
        client_id: "<client-id of the managed identity>"
      oauth:
        client_id: "<client-id from the Entra app>"
        client_secret: "<client secret from the Entra app>"
        tenant_id: "<Azure subscription tenant Id>"

url 参数指定 Azure Monitor 工作区的指标引入终结点。 可以在 Azure 门户中打开 Azure Monitor 工作区的“概述”窗格找到它。

显示 Azure Monitor 工作区的指标引入终结点的屏幕截图。

根据实现,使用 managed_identityoauth 进行 Microsoft Entra 应用程序身份验证。 删除未使用的对象。

使用以下 Azure CLI 命令查找托管标识的客户端 ID:

az identity list --resource-group <resource group name>

有关详细信息,请参阅 az identity list

若要在门户中查找用于托管标识身份验证的客户端,请转到 Azure 门户中的“托管标识”,然后选择相关的标识名称。 从托管标识的“概述”窗格复制“客户端 ID”的值

显示托管标识的“概述”窗格的“客户端 ID”的屏幕截图。

若要查找 Microsoft Entra ID 应用程序的客户端 ID,请使用以下 Azure CLI 命令(或查看前面使用 Microsoft Entra 应用程序身份验证进行远程写入部分的第一步):

$ az ad app list --display-name < application name>

有关详细信息,请参阅 az ad app list

注意

编辑配置文件后,请重启 Prometheus,以便应用更改。

验证远程写入数据是否流动

使用以下方法验证 Prometheus 数据是否正在发送到 Azure Monitor 工作区。

使用 PromQL 的 Azure Monitor 指标资源管理器

若要检查指标是否流向 Azure Monitor 工作区,请在 Azure 门户中的 Azure Monitor 工作区中选择“指标”。 将指标资源管理器与 Prometheus 查询语言 (PromQL) 配合使用,查询你期望从自托管 Prometheus 环境中获得的指标。 有关详细信息,请参阅使用 PromQL 的 Azure Monitor 指标资源管理器

Azure Monitor 工作区中的 Prometheus 资源管理器

Prometheus 资源管理器提供了在 Azure 环境中与 Prometheus 指标交互的便捷方法,以便监视和故障排除更高效。 若要使用 Prometheus 资源管理器,请转到 Azure 门户中的 Azure Monitor 工作区,然后选择“Prometheus Explorer”。 然后可以查询你期望从自托管 Prometheus 环境中获得的指标。

有关详细信息,请参阅使用 Azure 工作簿查询 Prometheus 指标

Grafana

在 Grafana 中使用 PromQL 查询,以验证结果是否会返回预期数据。 要配置 Grafana,请参阅使用托管 Prometheus 获取 Grafana 设置的文章

远程写入疑难解答

如果远程数据未显示在 Azure Monitor 工作区中,请参阅远程写入故障排除以了解常见问题和解决方案。