Compartir a través de

Windows 虚拟机和规模集上的 Azure Monitor 代理的排查指南

Azure Monitor 代理概述

进一步阅读前,必须先了解 Azure Monitor 代理数据收集规则

术语

名称 首字母缩写词 说明
Azure Monitor 代理 AMA 新的 Azure Monitor 代理
数据收集规则 DCR 按代理划分的数据收集的配置规则,即收集内容、接收对象等
Azure Monitor 配置服务 AMCS Azure 中托管的区域服务,用于控制此代理和 Azure Monitor 其他部分的数据收集。 代理调用此服务以获取 DCR。
日志终结点 -- 用于将数据发送到 Log Analytics 工作区的终结点
指标终结点 -- 用于将数据发送到 Azure Monitor 指标数据库的终结点。
实例元数据服务和混合 IMDS 和 HIMDS Azure 中托管的服务,分别提供有关当前运行的虚拟机、规模集(通过 IMDS)和启用了 Arc 的服务器(通过 HIMDS)的信息
Log Analytics 工作区 LAW Azure Monitor 中可将代理所收集的日志发送到的目标
自定义指标 -- Azure Monitor 中可将代理所收集的来宾指标发送到的目标

基本故障排除步骤(安装、代理未运行、配置问题)

按照以下步骤对 Windows 虚拟机上运行的最新版 Azure Monitor 代理进行排查:

  1. 在此处细致了解 先决条件

  2. 验证是否已成功安装和预配扩展,如果成功则会在计算机上安装代理二进制文件

    1. 打开 Azure 门户 > 选择你的虚拟机 > 从左侧窗格打开“设置: 扩展 + 应用程序”> 应显示“AzureMonitorWindowsAgent”,并显示“状态: 预配成功”
    2. 如果没有,请检查计算机是否可以访问 Azure 并使用以下命令查找要安装的扩展:
      az vm extension image list-versions --location <machine-region> --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor
      
    3. 等待 10-15 分钟,因为扩展可能处于正在转换状态。 如果仍未显示,请再次卸载并安装扩展,然后重复验证并查看扩展是否显示。
    4. 如果未显示,请检查计算机上位于 C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Monitor.AzureMonitorWindowsAgent 的扩展日志是否存在任何错误
  3. 验证代理是否正在运行

    1. 使用以下查询检查代理是否正在将检测信号日志发送到 Log Analytics 工作区。 如果“自定义指标”是 DCR 中的唯一目标,则跳过:
      Heartbeat | where Category == "Azure Monitor Agent" and 'Computer' == "<computer-name>" | take 10
      
    2. 如果不是,打开任务管理器并检查“MonAgentCore.exe”进程是否正在运行。 如果是,请等待 5 分钟才能显示检测信号。
    3. 如果未显示,请检查计算机上位于 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\Configuration 的内核代理日志是否存在任何错误
  4. 验证 DCR 是否存在且是否与虚拟机关联:

    1. 如果使用 Log Analytics 工作区作为目标,请验证 DCR 是否位于 Log Analytics 工作区所在的物理区域。
    2. 在虚拟机上,验证文件 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\mcsconfig.latest.xml 是否存在。 如果此文件不存在,请:
      • 虚拟机可能未与 DCR 相关联。 见步骤 3
      • 虚拟机可能未启用托管标识。 请参阅此处,了解如何启用。
      • IMDS 服务无法从虚拟机运行/访问。 检查是否可以从计算机访问 IMDS
      • AMA 无法访问 IMDS。 检查 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\Tables\MAEventTable.tsf 文件中是否有 IMDS 错误。
    3. 打开 Azure 门户 > 选择你的数据收集规则 > 打开左侧窗格中的“配置: 资源”> 此处应显示虚拟机
    4. 如果未显示,请单击“添加”并从资源选取器中选择虚拟机。 对所有 DCR 重复操作。
  5. 验证代理是否能够从 AMCS 服务下载相关的 DCR:

    1. 检查是否显示在此位置 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\configchunks 下载的最新 DCR

收集性能计数器时出现问题

  1. 检查 DCR JSON 是否包含“performanceCounters”部分。 如果不包含,请修复 DCR。 请参阅如何创建 DCR示例 DCR
  2. 检查文件 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\mcsconfig.lkg.xml 是否存在。
  3. 打开该文件并检查它是否包含 CounterSet 节点,如以下示例所示:
    <CounterSet storeType="Local" duration="PT1M" 
        eventName="c9302257006473204344_16355538690556228697" 
        sampleRateInSeconds="15" format="Factored">
        <Counter>\Processor(_Total)\% Processor Time</Counter>
        <Counter>\Memory\Committed Bytes</Counter>
        <Counter>\LogicalDisk(_Total)\Free Megabytes</Counter>
        <Counter>\PhysicalDisk(_Total)\Avg. Disk Queue Length</Counter>
    </CounterSet>
    

使用“自定义指标”作为目标时出现问题

  1. 仔细查看此处的先决条件
  2. 确保正确创建关联的 DCR 以收集性能计数器并发送到 Azure Monitor 指标。 DCR 中应会显示此部分:
    "destinations": {  
    "azureMonitorMetrics": {  
        "name":"myAmMetricsDest" 
        } 
    }
    
  3. 运行 PowerShell 命令:
    Get-WmiObject Win32_Process -Filter "name = 'MetricsExtension.Native.exe'" | select Name,ExecutablePath,CommandLine | Format-List
    
    验证输出中的 CommandLine 参数是否包含参数“-TokenSource MSI”
  4. 验证 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\AuthToken-MSI.json 文件是否存在。
  5. 验证 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\CUSTOMMETRIC_<subscription>_<region>_MonitoringAccount_Configuration.json 文件是否存在。
  6. 运行命令 C:\Packages\Plugins\Microsoft.Azure.Monitor.AzureMonitorWindowsAgent\<version-number>\Monitoring\Agent\table2csv.exe C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\Tables\MaMetricsExtensionEtw.tsf 以收集日志
    1. 该命令将生成文件“MaMetricsExtensionEtw.csv”
    2. 打开该文件,查找所有 2 级错误并修复。

收集 Windows 事件日志时出现问题

  1. 检查 DCR JSON 是否包含“windowsEventLogs”部分。 如果不包含,请修复 DCR。 请参阅如何创建 DCR示例 DCR
  2. 检查文件 C:\WindowsAzure\Resources\AMADataStore.<virtual-machine-name>\mcs\mcsconfig.lkg.xml 是否存在。
  3. 打开该文件并检查它是否包含 Subscription 节点,如以下示例所示:
    <Subscription eventName="c9302257006473204344_14882095577508259570" 
    query="System!*[System[(Level = 1 or Level = 2 or Level = 3)]]">
        <Column name="ProviderGuid" type="mt:wstr" defaultAssignment="00000000-0000-0000-0000-000000000000">
          <Value>/Event/System/Provider/@Guid</Value>
        </Column>
        ...
    
        </Column>
    </Subscription>