Azure 诊断扩展是 Azure Monitor 中的一个代理,可从 Azure 虚拟机的来宾操作系统和工作负载以及其他计算资源中收集监视数据。 本文介绍如何安装和配置Windows的 Azure 诊断 扩展,以及如何将数据存储在Azure 存储帐户中。
重要
Azure 诊断扩展已于 2026 年 3 月 31 日弃用,不再受支持。 不推荐进行此扩展的新部署。 若要确保持续支持和访问新功能,请迁移到此处推荐的替代解决方案。
诊断扩展在 Azure 中作为虚拟机扩展实现。 它通过使用 Azure 资源管理器模板、PowerShell 和 Azure CLI 支持相同的安装选项。 有关如何安装和维护虚拟机扩展的信息,请参阅适用于 Windows 的虚拟机扩展和功能。
概述
为Windows配置Azure 诊断扩展时,必须指定一个存储帐户,其中发送了所有指定数据。
使用 Azure 门户安装
可以在 Azure 门户中的单个虚拟机上安装和配置诊断扩展。 你是通过界面进行操作,而不是直接操作配置本身。 启用诊断扩展时,它会自动使用具有最常见性能计数器和事件的默认配置。 可根据具体要求修改此默认配置。
注意
以下步骤描述了诊断扩展的最常见设置。 有关所有配置选项的详细信息,请参阅 Windows 诊断扩展架构。
在 Azure 门户中打开虚拟机的菜单。
请在 VM 菜单的“监视”部分中选择“诊断设置”。
如果尚未启用诊断扩展,请选择“启用来宾级监视”。
为 VM 创建新的Azure 存储帐户。 其名称基于资源组名称。 选择一组默认的来宾性能计数器和日志。
请在“性能计数器”选项卡中,选择要针对此虚拟机收集的来宾指标。 对于更高级的选择,请使用“自定义”设置。
请在“日志”选项卡中,选择要从虚拟机中收集的日志。 可以将日志发送到存储或事件中心,但不能将其发送到 Azure Monitor。 使用 Log Analytics 代理来收集来宾日志到 Azure Monitor。
请在“故障转储”选项卡中,指定在发生故障后用于收集内存转储的任何进程。 数据将写入诊断设置的存储帐户。 可以指定 Blob 容器。
在“代理”选项卡中,可以更改存储帐户、设置磁盘配额,并指定是否收集诊断基础结构日志。
选择“保存” 以保存配置。
注意
可以在 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.chinacloudapi.cn"
}
公共设置在配置架构的 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.chinacloudapi.cn"
}
}
另请参阅使用 PowerShell 在运行 Windows 的虚拟机中启用 Azure 诊断。
数据存储
下表列出了从诊断扩展程序收集的数据类型,以及这些数据是存储为表还是 Blob 对象。 根据公共配置中的 StorageType 设置 ,存储在表中的数据也可以存储在 Blob 中。
| 数据 | 存储类型 | 说明 |
|---|---|---|
| WADDiagnosticInfrastructureLogsTable | 表 | 诊断监视器和配置更改。 |
| WADDirectoriesTable | 表 | 诊断监视器正在监视的目录。 该组包括 IIS 日志、IIS 失败请求日志和自定义目录。 在“容器”字段中指定 blob 日志文件的位置,在 RelativePath 字段中指定 blob 的名称。 AbsolutePath 字段指示文件的位置和名称,就像文件是存在于 Azure 虚拟机上一样。 |
| WadLogsTable | 表 | 使用跟踪侦听器在代码中写入的日志。 |
| WADPerformanceCountersTable | 表 | 性能计数器。 |
| WADWindowsEventLogsTable | 表 | Windows 事件日志。 |
| wad-iis-failedreqlogfiles | 团块 | 包含 IIS 失败请求日志中的信息。 |
| wad-iis-logfiles | 团块 | 包含有关 IIS 日志的信息。 |
| 习俗 | 团块 | 一个基于诊断监视器所监控的配置目录的自定义容器。 此 blob 容器的名称会在 WADDirectoriesTable 中指定。 |
用于查看诊断数据的工具
将数据传输到存储后,可以使用多个工具来查看数据。 例如:
- Visual Studio 中的服务器资源管理器:如果安装了 Azure Tools for Microsoft Visual Studio,可以在服务器资源管理器中使用Azure 存储节点在 Azure 存储帐户中查看只读 Blob 和表数据。 既可以在本地存储模拟器帐户中显示数据,也可以在为 Azure 创建的存储帐户中显示数据。 有关详细信息,请参阅使用服务器资源管理器浏览和管理存储资源。
- Azure 存储资源管理器:此独立应用可用于在 Windows、OSX 和 Linux 上轻松处理 Azure 存储数据。
- Azure Management Studio:此工具包括 Azure 诊断管理器。 可用它来查看、下载和管理在 Azure 中运行的应用程序收集的诊断数据。
后续步骤
有关将监视数据转发到 Azure 事件中心的信息,请参阅将数据从 Azure 诊断扩展发送到事件中心。