在 Azure Monitor 中启用 VM 监视

本文介绍如何使用命令行工具大规模为虚拟机、虚拟机规模集和已启用 Arc 的服务器启用监视。 这些工具支持基础结构即代码(IaC)和自动化方法。 通过这些方法,可以一致地跨 VM 机群部署监视,并将监视配置集成到 DevOps 管道中。

支持的计算机

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

有关受支持的操作系统的列表,请参阅 Azure Monitor 代理支持的操作系统。

先决条件

  • 如果启用 OpenTelemetry 指标(这是 Azure VM 和已启用 Arc 的服务器上的新部署的推荐方式),则使用 Azure Monitor 工作区。 请参阅 “创建 Azure Monitor 工作区”。
  • Log Analytics 工作区 如果启用基于日志的指标或收集日志。 基于日志的指标是经典体验,通常用于与现有实现的兼容性。 请参阅 创建 Log Analytics 工作区。
  • 创建数据收集规则(DCR)并将其与 VM 相关联的权限。 请参阅 数据收集规则权限。
  • 要监视托管在 Azure 外部的虚拟机,请使用 Azure Connected Machine 代理。 必须先安装 Connected Machine 代理,以便在安装 Azure Monitor 代理并启用监视之前,先通过启用Azure Arc的服务器管理计算机。 请参阅将计算机连接到已启用Azure Arc的服务器。

概述

若要使用 Azure Monitor 通过收集虚拟机的来宾操作系统和工作负载中的数据来启用全面监视,请完成下表中所示的三个步骤。 在 Azure 门户中创建 DCR 时,门户会自动完成上述每个步骤。

步骤 说明
安装 Azure Monitor 代理 在每个虚拟机上安装代理以监视。 只需安装一次代理,因为它可以使用任意数量的 DCR,而每个 DCR 可收集不同的数据。
创建数据收集规则 (DCR) 每个 DCR 指定要收集和发送数据的位置。 根据要求创建自己的 DCR 或使用现有 DCR。 你需要了解不同类型的 DCR 及其用途,以确定要使用的 DCR 类型。
将 DCR 与 VM 相关联 在 VM 与 DCR 之间创建关联时,代理会下载该 DCR 并开始数据收集。 为代理创建与多个 DCR 的关联,以收集不同类型的数据。 删除关联以停止数据收集。

安装 Azure Monitor 代理

第一步是在虚拟机和已启用 Arc 的服务器上安装Azure Monitor代理扩展。 以下示例使用 Azure CLI 在 Azure VM 上安装代理:

# Windows
az vm extension set \
  --name AzureMonitorWindowsAgent \
  --publisher Microsoft.Azure.Monitor \
  --vm-name <vm-name> \
  --resource-group <resource-group>

有关完整的安装选项集,包括 Linux、虚拟机规模集、已启用 Arc 的服务器、PowerShell、Azure门户、Azure 资源管理器模板和自动升级,请参阅“安装和管理Azure Monitor代理”。

创建数据收集规则

数据收集规则(DCR)定义从 Azure Monitor 代理收集哪些数据,以及从何处发送数据。 根据要监视的内容创建不同类型的 DCR。 某些 DCR 在Azure门户中启用功能,例如 VM 的增强监视体验,而另一些 DCR 则收集特定类型的日志或指标进行分析或警报。

DCR 采用 JSON 结构。 使用 Azure 门户创建 DCR 时,无需了解 DCR 结构。 可能需要深入了解 DCR 结构,以便从头创建 DCR 或向现有 DCR 添加包括转换在内的高级功能。

下表描述了用于 VM 监视的最常见 DCR 类型。 有关 DCR 类型及其结构的完整列表,请参阅 数据收集规则结构。 有关创建 DCR 的详细信息,请参阅 数据收集规则:创建和编辑。

DCR 类型 说明
OpenTelemetry 指标 使用 OpenTelemetry 标准收集系统级性能计数器。 此选项是 Azure 门户中新建 VM 监视部署的推荐指标路径。 使用以下部分中的 DCR 定义。 修改 counterSpecifiers 部分,以添加需收集的指标。
基于日志的指标 在 Log Analytics 工作区中收集预定义的性能计数器。 在 Azure 门户中启用基于经典日志的体验。 使用以下部分中的 DCR 定义。 请勿修改此 DCR。
日志 从 VM 收集不同类型的日志,包括 Windows 事件和 Syslog。 这些 DCR 不会在 Azure Monitor 中启用任何附加功能。 使用Log Analytics对其进行分析,并将它们用于警报。 有关可用的不同数据源的说明,请参阅 使用 Azure Monitor 从虚拟机收集来宾日志数据 。 有关日志收集的示例 DCR 定义 ,请参阅 Azure Monitor 中的数据收集规则 (DCR) 示例 。

使用以下 DCR 定义为虚拟机启用增强型监视。 唯一的修改是更新每个定义中的位置和目标工作区,以指向用于 OpenTelemetry 指标的 Azure Monitor 工作区或基于日志的指标的 Log Analytics 工作区。

基于指标的体验
{
  "location": "<location>",
  "properties": {
    "dataSources": {
      "performanceCountersOTel": [
        {
          "streams": [
            "Microsoft-OtelPerfMetrics"
          ],
          "samplingFrequencyInSeconds": 60,
          "counterSpecifiers": [
              "system.filesystem.usage",
              "system.disk.io",
              "system.disk.operation_time",
              "system.disk.operations",
              "system.memory.usage",
              "system.network.io",
              "system.cpu.time",
              "system.network.dropped",
              "system.network.errors",
              "system.uptime"
          ],
          "name": "OtelPerfCounters"
        }
      ]
    },
    "destinations": {
      "monitoringAccounts": [
        {
          "accountResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Monitor/accounts/<workspace-name>",
          "name": "MonitoringAccount"
        }
      ]
    },
    "dataFlows": [
      {
        "streams": [
            "Microsoft-OtelPerfMetrics"
        ],
        "destinations": [
            "MonitoringAccount"
        ]
      }
    ]
  }
}
基于日志的体验(经典)
{
    "location": "<location>",
    "properties": {
        "description": "Data collection rule for VM Insights.",
        "dataSources": {
            "performanceCounters": [
                {
                    "name": "VMInsightsPerfCounters",
                    "streams": [
                        "Microsoft-InsightsMetrics"
                    ],
                    "scheduledTransferPeriod": "PT1M",
                    "samplingFrequencyInSeconds": 60,
                    "counterSpecifiers": [
                        "\\VmInsights\\DetailedMetrics"
                    ]
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.OperationalInsights/workspaces/<workspace-name>",
                    "name": "VMInsightsPerf-Logs-Dest"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-InsightsMetrics"
                ],
                "destinations": [
                    "VMInsightsPerf-Logs-Dest"
                ]
            }
        ]
    }
}

将 DCR 定义保存到 JSON 文件。 有关从 JSON 文件创建 DCR 的 CLI、PowerShell、API 和门户命令,请参阅使用 JSON 创建数据收集规则(DCR)。

将 DCR 与 VM 相关联

最后一步是在 DCR 与 VM 之间创建关联。 此步骤会激活 DCR,并告知Azure Monitor代理开始根据 DCR 中定义的规则收集数据。 为 VM 创建多个关联以收集不同类型的数据。 删除关联以停止来自特定 DCR 的数据收集,而不会影响其他关联或代理本身。

Azure VM

az monitor data-collection rule association create \
  --name "dcr-association" \
  --rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/microsoft.insights/datacollectionrules/<dcr-name>
  --resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachines/<vm-name>

Azure VM 规模集

az monitor data-collection rule association create \
  --name "dcr-association" \
  --rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/microsoft.insights/datacollectionrules/<dcr-name>
  --resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmss-name>

已启用 Arc 的服务器

az monitor data-collection rule association create \
  --name "dcr-association" \
  --rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/microsoft.insights/datacollectionrules/<dcr-name> \
  --resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HybridCompute/machines/<arc-server-name>

部署完整的载入模板

Azure Monitor社区存储库托管 ARM 和Bicep模板,这些模板在单个部署中完成所有三个载入步骤。 每个模板都会在虚拟机上启用托管标识,创建或重用 Azure Monitor 工作区和 DCR,将该 DCR 与虚拟机关联,安装代理,并可选择创建建议的警报规则。

从 Azure Monitor Community 存储库中的 VM Insights 载入模板下载模板和参数文件。 该代码仓库的 README 记录了每个参数以及参数文件所涵盖的六种部署场景。

这些模板载入单个Azure虚拟机。 对于虚拟机规模集和已启用 Arc 的服务器,请按照本文前面所述的命令行步骤操作。 部署将更新现有虚拟机的托管标识配置,因此请在部署到已使用用户分配标识的计算机之前查看标识参数。

以下Azure CLI示例使用az deployment sub create和az deployment group create命令。

Bicep

Bicep 模板将 targetScope 设置为 subscription,因为其模块部署到不同的资源组中。 该文件 .bicepparam 通过其 using 语句解析模板,因此该命令不需要参数 --template-file 。

# Set variables
azureRegion="<AzureRegion>"
bicepParameterFile="<PathToBicepParameterFile>"

# Deploy the Bicep template
az deployment sub create \
  --location "$azureRegion" \
  --parameters "$bicepParameterFile"

ARM 模板

# Set variables
resourceGroupName="<VmResourceGroupName>"
templateFile="<PathToTemplateFile>"
parameterFile="<PathToParameterFile>"

# Deploy the ARM template
az deployment group create \
  --resource-group "$resourceGroupName" \
  --template-file "$templateFile" \
  --parameters "@$parameterFile"

启用网络隔离

VM 见解支持两种网络隔离方法,如下表所述。

方法 说明
私有链接 请参阅 使用专用链接为 Azure Monitor 代理启用网络隔离。