注释
建议使用 Azure Az PowerShell 模块与Azure交互。 若要开始,请参阅 Install Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 Migrate Azure PowerShell从 AzureRM 迁移到 Az。
Azure Monitor Diagnostics 扩展(称为“WAD”或“Diagnostics”)允许您从作为虚拟机、云服务或 Service Fabric 群集的一部分运行的来宾操作系统中收集指标和日志。 该扩展可将遥测数据发送到许多不同的位置。
重要
Azure 诊断扩展将于 2026 年 3 月 31 日弃用。 在此日期之后,Microsoft将不再为Azure 诊断扩展提供支持。 为了确保持续支持和访问新功能,应迁移到此处推荐的替代解决方案。
本文介绍将经典 Windows 虚拟机的来宾操作系统性能指标发送到 Azure Monitor 指标数据库的过程。 从诊断版本 1.11 开始,可以将指标直接写入Azure Monitor指标存储,其中已收集标准平台指标。
将它们存储在此位置可以访问在处理平台指标时所执行的相同操作。 操作包括近实时警报、图表绘制、路由、从 REST API 访问,等等。 过去,诊断扩展会将数据写入 Azure 存储,但不会写入 Azure Monitor 数据存储。
本文中概述的过程仅适用于运行Windows操作系统的经典虚拟机。
先决条件
必须是 Azure 订阅上的 服务管理员或共同管理员。
订阅必须注册到 Microsoft。Insights。
需要安装 Azure PowerShell。
创建经典虚拟机和存储帐户
使用 Azure 门户创建经典 VM。
创建此 VM 时,请选择创建新经典存储帐户的选项。 我们会在后面的步骤中使用此存储帐户。
在 Azure 门户中,转到 Storage 帐户资源窗格。 选择“密钥”,并记下存储帐户名称和存储帐户密钥。 在后续步骤中需要使用此信息。
创建服务主体
按照 创建服务主体中的说明,在Microsoft Entra租户中创建服务主体。 在完成此过程时记下以下内容:
请授予此应用 Monitoring Metrics Publisher 对其要发出指标的资源的权限。 可以使用资源组或整个订阅。
注释
诊断扩展使用服务主体对 Azure Monitor 进行身份验证,并为经典 VM 生成指标。
创作诊断扩展配置
准备诊断扩展配置文件。 此文件决定了诊断扩展会针对经典 VM 收集哪些日志和性能计数器。 下面是一个示例:
<?xml version="1.0" encoding="utf-8"?> <DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> <WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="applicationInsights.errors"> <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error" /> <Directories scheduledTransferPeriod="PT1M"> <IISLogs containerName="wad-iis-logfiles" /> <FailedRequestLogs containerName="wad-failedrequestlogs" /> </Directories> <PerformanceCounters scheduledTransferPeriod="PT1M"> <PerformanceCounterConfiguration counterSpecifier="\Processor(*)\% Processor Time" sampleRate="PT15S" /> <PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT15S" /> <PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT15S" /> <PerformanceCounterConfiguration counterSpecifier="\Memory\% Committed Bytes" sampleRate="PT15S" /> <PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(*)\Disk Read Bytes/sec" sampleRate="PT15S" /> </PerformanceCounters> <WindowsEventLog scheduledTransferPeriod="PT1M"> <DataSource name="Application!*[System[(Level=1 or Level=2 or Level=3)]]" /> <DataSource name="Windows Azure!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]" /> </WindowsEventLog> <CrashDumps> <CrashDumpConfiguration processName="WaIISHost.exe" /> <CrashDumpConfiguration processName="WaWorkerHost.exe" /> <CrashDumpConfiguration processName="w3wp.exe" /> </CrashDumps> <Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" /> <Metrics resourceId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ClassicCompute/virtualMachines/MyClassicVM"> <MetricAggregation scheduledTransferPeriod="PT1M" /> <MetricAggregation scheduledTransferPeriod="PT1H" /> </Metrics> </DiagnosticMonitorConfiguration> <SinksConfig> </SinksConfig> </WadCfg> <StorageAccount /> </PublicConfig> <PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> <StorageAccount name="" endpoint="" /> </PrivateConfig> <IsEnabled>true</IsEnabled> </DiagnosticsConfiguration>在诊断文件的
SinksConfig部分中,定义新的Azure Monitor接收器,如下所示:<SinksConfig> <Sink name="AzMonSink"> <AzureMonitor> <ResourceId>Provide the resource ID of your classic VM </ResourceId> <Region>The region your VM is deployed in</Region> </AzureMonitor> </Sink> </SinksConfig>在配置文件中列出要收集的性能计数器列表的部分中,将性能计数器路由到Azure Monitor接收器
"AzMonSink"。<PerformanceCounters scheduledTransferPeriod="PT1M" sinks="AzMonSink"> <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT15S" /> ... </PerformanceCounters>在专用配置中,定义Azure Monitor帐户。 然后添加用于发出指标的服务主体信息。
<PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> <StorageAccount name="" endpoint="" /> <AzureMonitorAccount> <ServicePrincipalMeta> <PrincipalId>clientId for your service principal</PrincipalId> <Secret>client secret of your service principal</Secret> </ServicePrincipalMeta> </AzureMonitorAccount> </PrivateConfig>在本地保存此文件。
将诊断扩展部署到云服务
启动 PowerShell 并登录。
Login-AzAccount一开始将上下文设置为经典 VM。
$VM = Get-AzureVM -ServiceName <VM's Service_Name> -Name <VM Name>设置通过 VM 创建的经典存储帐户的上下文。
$StorageContext = New-AzStorageContext -StorageAccountName <name of your storage account from earlier steps> -storageaccountkey "<storage account key from earlier steps>"使用以下命令将诊断文件路径设置为一个变量:
$diagconfig = "<path of the diagnostics configuration file with the Azure Monitor sink configured>"使用配置了Azure Monitor接收器的诊断文件为经典 VM 准备更新。
$VM_Update = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $diagconfig -VM $VM -StorageContext $Storage_Context运行以下命令,部署对 VM 的更新:
Update-AzureVM -ServiceName "ClassicVMWAD7216" -Name "ClassicVMWAD" -VM $VM_Update.VM
注释
在安装诊断扩展过程中,仍必须提供存储帐户。 诊断配置文件中指定的任何日志或性能计数器将写入指定的存储帐户。
在 Azure 门户中绘制指标
转到Azure门户。
在左侧菜单中,选择“监控”。
在左侧的“监视器”窗格中,选择“指标”。
在资源下拉菜单中,选择你的经典 VM。
在命名空间下拉菜单中,选择“azure.vm.windows.guest”。
在指标下拉菜单中,选择“内存\已提交的使用字节数”。
后续步骤
- 详细了解自定义指标。