Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диагностика Azure — это возможность в Azure, которая позволяет собирать диагностические данные в развернутом приложении. Расширение диагностики можно использовать для сбора диагностических данных, таких как журналы приложений или счетчики производительности из виртуальной машины Azure, работающей под управлением Windows.
Это важно
Перенос из расширения диагностики Azure
Расширение диагностики Azure будет устарело 31 марта 2026 г. После этой даты корпорация Майкрософт больше не будет предоставлять поддержку расширения диагностики Azure.
Чтобы обеспечить постоянную поддержку и доступ к новым функциям, необходимо перенести расширения диагностики Azure для Linux (LAD) и Windows (WAD) в агент Azure Monitor, который может собирать одни и те же данные и отправлять их в несколько назначений, включая рабочие области Log Analytics, Центры событий Azure и службу хранилища Azure. Удалите LAD или WAD после настройки агента Azure Monitor, чтобы избежать дублирования данных.
В качестве альтернативы хранилищу следует отправлять данные в таблицу с вспомогательным планом в рабочей области Log Analytics для эффективного ведения журнала.
Чтобы проверить, какие расширения установлены на одной виртуальной машине, выберите "Расширения и приложения " в разделе "Параметры " на виртуальной машине. Чтобы просмотреть расширения, установленные на всех виртуальных машинах в подписках, где у вас есть доступ, используйте следующий запрос в Azure Resource Graph:
resources
| where type contains "extension"
| extend parsedProperties = parse_json(properties)
| extend publisher = tostring(parsedProperties.publisher)
| project-away parsedProperties
| where publisher == "Microsoft.Azure.Diagnostics"
| distinct id
Это приводит к следующим результатам:
Замечание
Попробуйте использовать виртуальную машину для ускорения диагностики. Рекомендуется запустить Ассистент виртуальных машин для Windows или Ассистент виртуальных машин для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.
Если у вас возникли проблемы с производительностью виртуальных машин, перед обращением в службу поддержки запустите эти средства.
Включение расширения диагностики при использовании модели развертывания Resource Manager
Расширение диагностики можно включить при создании виртуальной машины Windows с помощью модели развертывания Azure Resource Manager, добавив конфигурацию расширения в шаблон Resource Manager. См. статью "Создание виртуальной машины Windows с мониторингом и диагностикой" с помощью шаблона Azure Resource Manager.
Чтобы включить расширение диагностики на существующей виртуальной машине, созданной с помощью модели развертывания Resource Manager, можно использовать командлет Set-AzVMDiagnosticsExtension PowerShell, как показано ниже.
$vm_resourcegroup = "myvmresourcegroup"
$vm_name = "myvm"
$diagnosticsconfig_path = "DiagnosticsPubConfig.xml"
Set-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name -DiagnosticsConfigurationPath $diagnosticsconfig_path
$diagnosticsconfig_path — это путь к файлу, который содержит конфигурацию диагностики в XML, как описано в примере ниже.
Если файл конфигурации диагностики указывает элемент StorageAccount с именем учетной записи хранения, скрипт Set-AzVMDiagnosticsExtension автоматически устанавливает расширение диагностики для отправки диагностических данных в учетную запись хранения. Для этого учетная запись хранения должна находиться в той же подписке, что и виртуальная машина.
Если в конфигурации диагностики не указан параметр StorageAccountName , необходимо передать параметр StorageAccountName командлету. Если указан параметр StorageAccountName , командлет всегда будет использовать учетную запись хранения, указанную в параметре, а не указанную в файле конфигурации диагностики.
Если учетная запись хранения диагностики находится в другой подписке от виртуальной машины, необходимо явно передать параметры StorageAccountName и StorageAccountKey командлету. Параметр StorageAccountKey не требуется, если учетная запись хранения диагностики находится в той же подписке, что командлет может автоматически запрашивать и задавать значение ключа при включении расширения диагностики. Однако если учетная запись хранения диагностики находится в другой подписке, командлет может не получить ключ автоматически, и необходимо явно указать ключ с помощью параметра StorageAccountKey .
Set-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name -DiagnosticsConfigurationPath $diagnosticsconfig_path -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key
После включения расширения диагностики на виртуальной машине можно получить текущие параметры с помощью командлета Get-AzVmDiagnosticsExtension .
Get-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name
Командлет возвращает PublicSettings, содержащий конфигурацию диагностики. Поддерживается два типа конфигурации: WadCfg и xmlCfg. WadCfg — это конфигурация JSON, а xmlCfg — это XML-конфигурация в формате, закодированном в кодировке Base64. Чтобы прочитать XML, необходимо декодировать его.
$publicsettings = (Get-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name).PublicSettings
$encodedconfig = (ConvertFrom-Json -InputObject $publicsettings).xmlCfg
$xmlconfig = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedconfig))
Write-Host $xmlconfig
Командлет Remove-AzVmDiagnosticsExtension можно использовать для удаления расширения диагностики из виртуальной машины.
Включение расширения диагностики при использовании классической модели развертывания
Это важно
Виртуальные машины, созданные с помощью классической модели развертывания, будут прекращены 1 сентября 2023 г.
Если вы используете ресурсы IaaS из службы управления службами Azure, выполните миграцию к 1 сентября 2023 года. Мы рекомендуем вам сделать этот переход раньше, чтобы воспользоваться преимуществами многих улучшений функций в Azure Resource Manager.
Дополнительные сведения см. в статье "Перенос ресурсов IaaS в Azure Resource Manager к 1 сентября 2023 г.".
Вы можете использовать командлет Set-AzureVMDiagnosticsExtension для включения расширения диагностики на виртуальной машине, создаваемой с помощью классической модели развертывания. В следующем примере показано, как создать виртуальную машину с помощью классической модели развертывания с включенным расширением диагностики.
$VM = New-AzureVMConfig -Name $VM -InstanceSize Small -ImageName $VMImage
$VM = Add-AzureProvisioningConfig -VM $VM -AdminUsername $Username -Password $Password -Windows
$VM = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $Config_Path -VM $VM -StorageContext $Storage_Context
New-AzVM -Location $Location -ServiceName $Service_Name -VM $VM
Чтобы включить расширение диагностики на существующей виртуальной машине, созданной с помощью классической модели развертывания, сначала используйте Get-AzureVM командлет для получения конфигурации виртуальной машины. Затем обновите конфигурацию виртуальной машины, чтобы включить расширение диагностики с помощью командлета Set-AzureVMDiagnosticsExtension . Наконец, примените обновленную конфигурацию к виртуальной машине с помощью Update-AzureVM.
$VM = Get-AzureVM -ServiceName $Service_Name -Name $VM_Name
$VM_Update = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $Config_Path -VM $VM -StorageContext $Storage_Context
Update-AzureVM -ServiceName $Service_Name -Name $VM_Name -VM $VM_Update.VM
Пример конфигурации диагностики
Следующий XML-код можно использовать для общедоступной конфигурации диагностики с помощью приведенных выше скриптов. В этом примере конфигурации будут передаваться различные счетчики производительности в учетную запись хранения диагностики, а также ошибки из приложений, безопасности и системных каналов в журналах событий Windows и любые ошибки из журналов инфраструктуры диагностики.
Чтобы включить следующую конфигурацию, необходимо обновить конфигурацию:
Атрибут resourceID элемента Metrics необходимо обновить с идентификатором ресурса для виртуальной машины.
Идентификатор ресурса можно создать с помощью следующего шаблона: "/subscriptions/{subscription id for the subscription with the VM}/resourceGroups/{Имя группы ресурсов для виртуальной машины}/providers/Microsoft.Compute/virtualMachines/{Имя виртуальной машины}".
Например, если идентификатор подписки для подписки, на которой выполняется виртуальная машина, — 1111111-1111-1111-1111-11111111, имя группы ресурсов для группы ресурсов — MyResourceGroup, а имя виртуальной машины — MyWindowsVM, то значением для resourceID будет:
<Metrics resourceId="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyWindowsVM" >Дополнительные сведения о том, как создаются метрики на основе счетчиков производительности и конфигурации метрик, см. в таблице метрик диагностики Azure в хранилище.
Элемент StorageAccount необходимо обновить с именем учетной записи хранения диагностики.
<?xml version="1.0" encoding="utf-8"?> <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"> <WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB="4096"> <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error"/> <PerformanceCounters scheduledTransferPeriod="PT1M"> <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="CPU utilization" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Privileged Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="CPU privileged time" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% User Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="CPU user time" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Processor Information(_Total)\Processor Frequency" sampleRate="PT15S" unit="Count"> <annotation displayName="CPU frequency" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\System\Processes" sampleRate="PT15S" unit="Count"> <annotation displayName="Processes" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Process(_Total)\Thread Count" sampleRate="PT15S" unit="Count"> <annotation displayName="Threads" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Process(_Total)\Handle Count" sampleRate="PT15S" unit="Count"> <annotation displayName="Handles" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\% Committed Bytes In Use" sampleRate="PT15S" unit="Percent"> <annotation displayName="Memory usage" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory available" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory committed" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\Commit Limit" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory commit limit" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\Pool Paged Bytes" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory paged pool" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\Memory\Pool Nonpaged Bytes" sampleRate="PT15S" unit="Bytes"> <annotation displayName="Memory non-paged pool" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="Disk active time" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Read Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="Disk active read time" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Write Time" sampleRate="PT15S" unit="Percent"> <annotation displayName="Disk active write time" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Transfers/sec" sampleRate="PT15S" unit="CountPerSecond"> <annotation displayName="Disk operations" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Reads/sec" sampleRate="PT15S" unit="CountPerSecond"> <annotation displayName="Disk read operations" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Writes/sec" sampleRate="PT15S" unit="CountPerSecond"> <annotation displayName="Disk write operations" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond"> <annotation displayName="Disk speed" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Read Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond"> <annotation displayName="Disk read speed" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Write Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond"> <annotation displayName="Disk write speed" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Queue Length" sampleRate="PT15S" unit="Count"> <annotation displayName="Disk average queue length" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Read Queue Length" sampleRate="PT15S" unit="Count"> <annotation displayName="Disk average read queue length" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Write Queue Length" sampleRate="PT15S" unit="Count"> <annotation displayName="Disk average write queue length" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(_Total)\% Free Space" sampleRate="PT15S" unit="Percent"> <annotation displayName="Disk free space (percentage)" locale="en-us"/> </PerformanceCounterConfiguration> <PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(_Total)\Free Megabytes" sampleRate="PT15S" unit="Count"> <annotation displayName="Disk free space (MB)" locale="en-us"/> </PerformanceCounterConfiguration> </PerformanceCounters> <Metrics resourceId="(Update with resource ID for the VM)" > <MetricAggregation scheduledTransferPeriod="PT1H"/> <MetricAggregation scheduledTransferPeriod="PT1M"/> </Metrics> <WindowsEventLog scheduledTransferPeriod="PT1M"> <DataSource name="Application!*[System[(Level = 1 or Level = 2)]]"/> <DataSource name="Security!*[System[(Level = 1 or Level = 2)]"/> <DataSource name="System!*[System[(Level = 1 or Level = 2)]]"/> </WindowsEventLog> </DiagnosticMonitorConfiguration> </WadCfg> <StorageAccount>(Update with diagnostics storage account name)</StorageAccount> </PublicConfig>
Дальнейшие шаги
- Дополнительные рекомендации по использованию возможностей диагностики Azure и других методов устранения неполадок см. в статье "Включение диагностики в облачных службах Azure и виртуальных машинах".
- Схема конфигураций диагностики объясняет различные параметры конфигураций XML для расширения диагностики.