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

将 Prometheus 指标从虚拟机发送到 Azure Monitor 工作区

Prometheus 不限于监视 Kubernetes 群集。 使用 Prometheus 监视服务器上运行的应用程序和服务,无论它们在哪里运行。 例如,可以监视虚拟机、虚拟机规模集,甚至本地服务器上运行的应用程序。 在服务器上安装 prometheus,并将远程写入配置为将指标发送到 Azure Monitor 工作区。

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

远程写入选项

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

Azure 托管虚拟机和虚拟机规模集

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

  • Azure 虚拟机
  • Azure 虚拟机规模集
  • 已启用 Arc 的虚拟机

若要为 Azure 受管理资源设置远程写入,请参阅“使用用户分配的托管标识进行远程写入”。

在非 Azure 环境中运行的虚拟机。

加入已启用 Azure Arc 的服务后,可以在 Azure 中管理和配置非 Azure 虚拟机。 加入后,配置使用用户分配的托管标识进行远程写入身份验证。 有关将虚拟机加入已启用 Azure Arc 的服务器的详细信息,请参阅“已启用 Azure Arc 的服务器”。

如果具有在非 Azure 环境中的虚拟机,并且不想加入 Azure Arc,请安装自管理 Prometheus 并使用 Microsoft Entra ID 应用程序身份验证配置远程写入。 有关详细信息,请参阅“使用 Microsoft Entra ID 应用程序身份验证进行远程写入”。

先决条件

支持的版本

  • 托管标识身份验证需要高于 v2.45 的 Prometheus 版本。
  • Microsoft Entra ID 应用程序身份验证需要高于 v2.48 的 Prometheus 版本。

Azure Monitor 工作区

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

权限

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

为远程写入设置身份验证

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

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

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

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

创建用户分配的托管标识

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

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

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

将工作区数据收集规则上的 Monitoring Metrics Publisher 角色分配给托管标识。

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

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

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

  3. 选择“添加”和“添加角色分配”显示数据收集规则窗口的屏幕截图。

  4. 搜索并选择“监视指标发布服务器”,然后选择“下一步”。 显示数据收集规则的角色分配菜单的屏幕截图。

  5. 选择“托管标识”。

  6. 选择“选择成员”。

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

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

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

    显示数据收集规则的“选择成员”菜单的屏幕截图。

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

重要

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

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

  2. 选择“标识”。

  3. 选择“用户分配”

  4. 选择 添加

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

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

配置远程写入

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

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

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

remote_write:   
  - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
# AzureAD 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 ID 应用程序身份验证。 删除未使用的对象。

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

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

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

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

显示“标识概述”页上的客户端 ID 的屏幕截图。

若要查找 Microsoft Entra ID 应用程序的客户端 ID,请使用以下 CLI 或查看使用 Azure 门户创建 Microsoft Entra ID 应用程序部分的第一步。

$ 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 环境中获得的指标。 有关详细信息,请参阅指标资源管理器

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

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

Grafana

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

远程写入疑难解答

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

后续步骤