共用方式為

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

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

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

远程写入选项

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

Azure 托管的虚拟机、虚拟机规模集和 Kubernetes 群集 在非 Azure 环境中运行的虚拟机和 Kubernetes 群集
对在 Azure 环境中运行自托管 Prometheus 的服务使用系统分配的或用户分配的托管标识身份验证。 Azure 托管服务包括:

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

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

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

先决条件

支持的版本

  • 用户分配的托管标识身份验证需要 Prometheus 版本 2.45 或更高版本。
  • Microsoft Entra 应用程序身份验证需要 Prometheus 版本 2.48 或更高版本。
  • 系统托管标识身份验证要求使用 Prometheus 3.50 版本或更高版本。

Azure Monitor 工作区

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

权限

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

为远程写入设置身份验证

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

使用 Azure 门户或 Azure CLI 创建用户分配的托管标识或 Microsoft Entra 应用程序。 系统分配的托管标识在启用时会自动为 Azure VM 或 AKS 群集设置。 此标识可用于从 Azure VM/VMSS 或 AKS 群集对 Prometheus 远程写入进行身份验证。

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

在 Azure VM/VMSS 或 AKS 的情况下,可以使用系统分配的托管标识身份验证。 如果 Prometheus 服务在非 Azure 环境中运行,请使用 Microsoft Entra 应用程序身份验证。

系统分配的托管标识在启用时会自动为 Azure 资源设置。 如果 Prometheus 服务 在 AKS 群集中运行,则需要为群集的基础 VMSS 使用系统分配的托管标识

Azure Kubernetes 群集 Azure VM 和 VMSS
对于 Azure Kubernetes 服务,必须将托管标识分配给虚拟机规模集。 AKS 将创建包含虚拟机规模集的资源组。 资源组名称采用格式MC_<resource group name>_<AKS cluster name>_<region>,可在 AKS 群集的“设置 -> ->基础结构资源组”部分找到。
对于资源组中的每个虚拟机扩展集,在 “安全 ->Identity ”部分中启用系统分配的托管身份。
对于 Azure VM/VMSS,在 VM/VMSS 页 的安全 ->Identity 部分中启用系统分配的托管标识。 有关更多详细信息,请参阅 配置系统分配的托管标识

按照以下步骤使用系统分配的托管身份用于 Prometheus 远程写入。

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

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

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

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

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

  3. 选择添加>添加角色分配

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

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

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

  5. 选择“托管标识”

  6. 选择“选择成员”

  7. 托管标识 下拉列表中,选择 系统分配的托管标识,然后选择托管 AKS 群集的 VM/VMSS 或 VMSS。

配置远程写入

远程写入在 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 应用程序身份验证。 删除未使用的对象。

注释

对于系统分配的托管标识,请将客户端 ID 字段留空(client_id:“或 clientId:”)。

对于用户分配的托管标识,请使用以下 Azure CLI 命令查找客户端 ID:

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

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

若要在门户中查找用于托管标识身份验证的客户端 ID,请转到 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 工作区中,请参阅远程写入故障排除以了解常见问题和解决方案。