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

安装和配置适用于 Windows 的 Azure 诊断扩展 (WAD)

Azure 诊断扩展是 Azure Monitor 中的一个代理,可从 Azure 虚拟机的来宾操作系统和工作负载以及其他计算资源中收集监视数据。 本文提供有关安装和配置适用于 Windows 的 Azure 诊断扩展的信息,并介绍如何在 Azure 存储帐户中存储数据。

诊断扩展在 Azure 中作为虚拟机扩展实现。 它通过使用 Azure 资源管理器模板、PowerShell 和 Azure CLI 支持相同的安装选项。 有关如何安装和维护虚拟机扩展的信息,请参阅适用于 Windows 的虚拟机扩展和功能

概述

配置适用于 Windows 的 Azure 诊断扩展时,必须指定一个存储帐户,所有指定的数据都将发送到该帐户。 可以选择添加一个或更多数据接收器,以便将数据发送到不同的位置:

  • Azure Monitor 接收器:将来宾性能数据发送到 Azure Monitor 指标。
  • Azure 事件中心接收器:将来宾性能和日志数据发送到事件中心,用于在 Azure 外部转发。 无法在 Azure 门户中配置此接收器。

使用 Azure 门户安装

可以在 Azure 门户中的单个虚拟机上安装和配置诊断扩展。 你将使用接口,而不是直接使用配置。 启用诊断扩展时,它会自动使用包含最常见性能计数器和事件的默认配置。 可根据具体要求修改此默认配置。

注意

以下步骤描述了诊断扩展的最常见设置。 有关所有配置选项的详细信息,请参阅 Windows 诊断扩展架构

  1. 在 Azure 门户中打开虚拟机的菜单。

  2. 请在 VM 菜单的“监视”部分中选择“诊断设置”。

  3. 如果尚未启用诊断扩展,请选择“启用来宾级监视”。

    Screenshot that shows enabling monitoring.

  4. 将为 VM 创建新的 Azure 存储帐户。 名称将基于 VM 的资源组的名称。 将选择一组默认的来宾性能计数器和日志。

    Screenshot that shows Diagnostic settings.

  5. 请在“性能计数器”选项卡中,选择要从此虚拟机收集的来宾指标。 对于更高级的选择,请使用“自定义”设置。

    Screenshot that shows Performance counters.

  6. 请在“日志”选项卡中,选择要从虚拟机中收集的日志。 可以将日志发送到存储或事件中心,但不能将其发送到 Azure Monitor。 使用 Log Analytics 代理将来宾日志收集到 Azure Monitor。

    Screenshot that shows the Logs tab with different logs selected for a virtual machine.

  7. 请在“故障转储”选项卡中,指定在发生故障后用于收集内存转储的任何进程。 数据将写入诊断设置的存储帐户。 可以选择指定 Blob 容器。

    Screenshot that shows the Crash dumps tab.

  8. 在“接收器”选项卡中,指定是否将数据发送到 Azure 存储以外的位置。 如果选择“Azure Monitor”,则来宾性能数据将发送到 Azure Monitor 指标。 不能使用 Azure 门户配置事件中心接收器。

    Screenshot that shows the Sinks tab with the Send diagnostic data to Azure Monitor option enabled.

    如果尚未启用为虚拟机配置的系统分配的标识,则在使用 Azure Monitor 接收器保存配置时可能会看到以下警告。 请选择横幅以启用系统分配的标识。

    Screenshot that shows the managed identity warning.

  9. 在“代理”选项卡中,可以更改存储帐户、设置磁盘配额,并指定是否收集诊断基础结构日志。

    Screenshot that shows the Agent tab with the option to set the storage account.

  10. 选择“保存” 以保存配置。

注意

诊断扩展的配置可以采用 JSON 或 XML 格式,但在 Azure 门户中完成的任何配置始终以 JSON 格式存储。 如果将 XML 与其他配置方法配合使用,然后使用 Azure 门户更改配置,则设置将更改为 JSON 格式。 此外,没有设置这些日志的保留期的选项。

资源管理器模板

有关如何使用 Azure 资源管理器模板部署诊断扩展的信息,请参阅将监视和诊断与 Windows VM 和 Azure 资源管理器模板配合使用

Azure CLI 部署

可以在 Azure CLI 中使用 az vm extension set 将 Azure 诊断扩展部署到现有的虚拟机,如以下示例所示:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name IaaSDiagnostics \
  --publisher Microsoft.Azure.Diagnostics \
  --protected-settings protected-settings.json \
  --settings public-settings.json 

受保护的设置在配置架构的 PrivateConfig 元素中定义。 以下受保护设置文件的极简示例定义了存储帐户。 有关专用设置的完整详细信息,请参阅示例配置

{
    "storageAccountName": "mystorageaccount",
    "storageAccountKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "storageAccountEndPoint": "https://core.windows.net"
}

公共设置在配置架构的 Public 元素中定义。 以下公共设置文件的极简示例启用诊断基础结构日志、单个性能计数器和单个事件日志的收集。 有关公共设置的完整详细信息,请参阅示例配置

{
  "StorageAccount": "mystorageaccount",
  "WadCfg": {
    "DiagnosticMonitorConfiguration": {
      "overallQuotaInMB": 5120,
      "PerformanceCounters": {
        "scheduledTransferPeriod": "PT1M",
        "PerformanceCounterConfiguration": [
          {
            "counterSpecifier": "\\Processor Information(_Total)\\% Processor Time",
            "unit": "Percent",
            "sampleRate": "PT60S"
          }
        ]
      },
      "WindowsEventLog": {
        "scheduledTransferPeriod": "PT1M",
        "DataSource": [
          {
            "name": "Application!*[System[(Level=1 or Level=2 or Level=3)]]"
          }
        ]
      }
    }
  }
}

PowerShell 部署

可以在 PowerShell 中使用 Set-AzVMDiagnosticsExtension 将 Azure 诊断扩展部署到现有的虚拟机,如以下示例所示:

Set-AzVMDiagnosticsExtension -ResourceGroupName "myvmresourcegroup" `
  -VMName "myvm" `
  -DiagnosticsConfigurationPath "DiagnosticsConfiguration.json"

专用设置在 PrivateConfig 元素中定义。 公共设置在配置架构的 Public 元素中定义。 还可以选择将存储帐户详细信息指定为 Set-AzVMDiagnosticsExtension cmdlet 的参数,而无需在专用设置中包含这些信息。

以下配置文件的极简示例启用诊断基础结构日志、单个性能计数器和单个事件日志的收集。 有关专用设置和公共设置的完整详细信息,请参阅示例配置

{
    "PublicConfig": {
        "WadCfg": {
            "DiagnosticMonitorConfiguration": {
                "overallQuotaInMB": 10000,
                "DiagnosticInfrastructureLogs": {
                    "scheduledTransferLogLevelFilter": "Error"
                },
                "PerformanceCounters": {
                    "scheduledTransferPeriod": "PT1M",
                    "PerformanceCounterConfiguration": [
                        {
                            "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                            "sampleRate": "PT3M",
                            "unit": "percent"
                        }
                    ]
                },
                "WindowsEventLog": {
                    "scheduledTransferPeriod": "PT1M",
                        "DataSource": [
                        {
                            "name": "Application!*[System[(Level=1 or Level=2 or Level=3)]]"
                        }
                    ]
                }
            }
        },
        "StorageAccount": "mystorageaccount",
        "StorageType": "TableAndBlob"
    },
    "PrivateConfig": {
        "storageAccountName": "mystorageaccount",
        "storageAccountKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "storageAccountEndPoint": "https://core.windows.net"
    }
}

另请参阅使用 PowerShell 在运行 Windows 的虚拟机中启用 Azure 诊断

数据存储

下表列出了从诊断扩展收集的不同数据类型,以及这些数据是以表还是 blob 的形式存储。 表中存储的数据还可以根据公共配置中的 StorageType 设置存储在 blob 中。

数据 存储类型 说明
WADDiagnosticInfrastructureLogsTable 诊断监视器和配置更改。
WADDirectoriesTable 诊断监视器正在监视的目录。 该组包括 IIS 日志、IIS 失败请求日志和自定义目录。 在“容器”字段中指定 blob 日志文件的位置,在 RelativePath 字段中指定 blob 的名称。 AbsolutePath 字段指示文件的位置和名称,就像文件是存在于 Azure 虚拟机上一样。
WadLogsTable 使用跟踪侦听器在代码中写入的日志。
WADPerformanceCountersTable 性能计数器。
WADWindowsEventLogsTable Windows 事件日志。
wad-iis-failedreqlogfiles Blob 包含 IIS 失败请求日志中的信息。
wad-iis-logfiles Blob 包含有关 IIS 日志的信息。
"custom" Blob 一个自定义容器,该容器取决于诊断监视器所监视的配置目录。 此 blob 容器的名称会在 WADDirectoriesTable 中指定。

用于查看诊断数据的工具

将数据传输到存储后,可以使用多个工具来查看数据。 例如:

  • Visual Studio 中的服务器资源管理器:如果安装了 Azure Tools for Microsoft Visual Studio,可以在服务器资源管理器中使用Azure 存储节点在 Azure 存储帐户中查看只读 Blob 和表数据。 既可以在本地存储模拟器帐户中显示数据,也可以在为 Azure 创建的存储帐户中显示数据。 有关详细信息,请参阅使用服务器资源管理器浏览和管理存储资源
  • Microsoft Azure 存储资源管理器:该独立应用可用于在 Windows、OSX 和 Linux 上轻松处理 Azure 存储数据。
  • Azure Management Studio:此工具包括 Azure 诊断管理器。 可用它来查看、下载和管理在 Azure 中运行的应用程序收集的诊断数据。

后续步骤

有关将监视数据转发到 Azure 事件中心的信息,请参阅将数据从 Azure 诊断扩展发送到事件中心