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

适用于启用了 Windows Arc 的服务器上的 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 Arc 的服务器上运行的最新版 Azure Monitor 代理进行排查:

  1. 仔细查看此处的先决条件

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

    1. 打开 Azure 门户 > 选择启用了 Arc 的服务器 > 从左侧窗格打开“设置: 扩展” 应显示 'AzureMonitorWindowsAgent',并显示“状态: 成功”>
    2. 否则,请检查 Arc 代理 (Connected Machine Agent) 是否能够连接到 Azure,并且扩展服务正在运行。
      azcmagent show
      
      应会显示以下输出:
      Resource Name                           : <server name>
      [...]
      Dependent Service Status
        Agent Service (himds)                 : running
        GC Service (gcarcservice)             : running
        Extension Service (extensionservice)  : running
      
    3. 等待 10-15 分钟,因为扩展可能处于正在转换状态。 如果仍未显示,请再次卸载并安装扩展,然后重复验证并查看扩展是否显示。
    4. 如果未显示,请检查计算机上位于 C:\ProgramData\GuestConfig\extension_logs\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:\Resources\Directory\AMADataStore\Configuration 的内核代理日志是否存在任何错误
  4. 验证 DCR 是否存在且是否与启用了 Arc 的服务器相关联:

    1. 如果使用 Log Analytics 工作区作为目标,请验证 DCR 是否位于 Log Analytics 工作区所在的物理区域。
    2. 在启用了 Arc 的服务器上,验证文件 C:\Resources\Directory\AMADataStore\mcs\mcsconfig.latest.xml 是否存在。 如果此文件不存在,则启用了 Arc 的服务器可能未与 DCR 关联。
    3. 打开 Azure 门户 > 选择你的数据收集规则 > 打开左侧窗格中的“配置: 资源”> 此处应列出已启用 Arc 的服务器
    4. 如果未显示,请单击“添加”并从资源选取器中选择启用了 Arc 的服务器。 对所有 DCR 重复操作。
  5. 验证代理是否能够从 AMCS 服务下载相关的 DCR:

    1. 检查是否显示在此位置 C:\Resources\Directory\AMADataStore\mcs\configchunks 下载的最新 DCR

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

  1. 检查 DCR JSON 是否包含“performanceCounters”部分。 如果不包含,请修复 DCR。 请参阅如何创建 DCR示例 DCR
  2. 检查文件 C:\Resources\Directory\AMADataStore\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:\Resources\Directory\AMADataStore\mcs\AuthToken-MSI.json 文件是否存在。

  5. 验证 C:\Resources\Directory\AMADataStore\mcs\CUSTOMMETRIC_<subscription>_<region>_MonitoringAccount_Configuration.json 文件是否存在。

  6. 运行命令 C:\Packages\Plugins\Microsoft.Azure.Monitor.AzureMonitorWindowsAgent\<version-number>\Monitoring\Agent\table2csv.exe C:\Resources\Directory\AMADataStore\Tables\MaMetricsExtensionEtw.tsf 以收集日志

    1. 该命令将生成文件“MaMetricsExtensionEtw.csv”
    2. 打开该文件,查找所有 2 级错误并修复。

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

  1. 检查 DCR JSON 是否包含“windowsEventLogs”部分。 如果不包含,请修复 DCR。 请参阅如何创建 DCR示例 DCR
  2. 检查文件 C:\Resources\Directory\AMADataStore\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>