Отправка метрик ОС для виртуальной машины Windows (классическая) в базу данных метрик Azure Monitor
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Расширение диагностики Azure Monitor (также известное как WAD или "Диагностика") позволяет собирать метрики и журналы из гостевой операционной системы (гостевой ОС), работающей на виртуальной машине, в облачной службе или в кластере Service Fabric. Это расширение может отправлять данные телеметрии во множество различных расположений.
В этой статье описывается отправка метрик производительности из гостевой ОС на виртуальной машине под управлением Windows (классическая) в базу данных метрик Azure Monitor. Начиная с версии 1.11 расширение диагностики позволяет записывать метрики напрямую в хранилище метрик Azure Monitor, где уже собраны стандартные метрики платформы.
Хранение их в этом расположении позволяет получить доступ к тем же действиям, которые доступны для метрик платформы. К этим действиям относятся оповещения практически в реальном времени, построение диаграмм, маршрутизация, доступ из REST API и многое другое. Ранее расширение диагностики записывало данные в службу хранилища Azure, а не в хранилище данных Azure Monitor.
Процесс, описанный в этой статье, применим только к классическим виртуальным машинам под управлением ОС Windows.
Необходимые компоненты
Вам необходимы права администратора службы или соадминистратора в подписке Azure.
Подписку необходимо зарегистрировать в Microsoft.Insights.
Необходимо установить Azure PowerShell или Azure Cloud Shell.
Создание классической виртуальной машины и учетной записи хранения
При создании виртуальной машины выберите вариант создания новой классической учетной записи хранения. Мы воспользуемся этой учетной записью хранения на следующих шагах.
В портал Azure перейдите в область ресурсов учетных записей хранения. Выберите Ключи и запишите имя учетной записи хранения и ключ к ней. Они понадобятся для выполнения последующих действий.
Создание субъекта-службы
Создайте субъект-службу в клиенте Microsoft Entra с помощью инструкций по созданию субъекта-службы. Выполняя это действие, обратите внимание на следующее.
- Создайте новый секрет клиента для этого приложения.
- Сохраните ключ и идентификатор клиента, чтобы использовать их в дальнейшем.
Предоставьте этому приложению права "Издатель метрик мониторинга" для доступа к ресурсу, из которого вы хотите передавать метрики. Вы можете использовать группу ресурсов или целую подписку.
Примечание.
Расширение диагностики будет использовать субъект-службу для проверки подлинности в Azure Monitor и передавать метрики для классической виртуальной машины.
Создание конфигурации для расширения диагностики
Подготовьте файл конфигурации для расширения диагностики. Этот файл определяет, какие журналы и счетчики производительности для классической виртуальной машины должно собирать расширение диагностики. Ниже приведен пример:
<?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 = Get-AzureVM -ServiceName <VM’s Service_Name> -Name <VM Name>
Задайте контекст классической учетной записи хранения, созданной в виртуальной машине.
$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_Update = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $diagconfig -VM $VM -StorageContext $Storage_Context
Разверните это обновление на виртуальной машине, выполнив следующую команду:
Update-AzureVM -ServiceName "ClassicVMWAD7216" -Name "ClassicVMWAD" -VM $VM_Update.VM
Примечание.
В процессе установки расширения диагностики по-прежнему необходимо указывать учетную запись хранения. Все журналы и счетчики производительности, указанные в файле конфигурации диагностики, будут записываться в указанную учетную запись хранения.
График метрик на портале Azure
Перейдите на портал Azure.
В меню слева выберите Монитор.
На панели "Монитор" слева выберите метрики.
В раскрывающемся меню ресурсов выберите требуемую классическую виртуальную машину.
В раскрывающемся меню пространств имен выберите azure.vm.windows.guest.
В раскрывающемся списке метрик выберите Использование выделенной памяти (в байтах).
Следующие шаги
- Дополнительные сведения о настраиваемых метриках см. в этой статье.