Отправка метрик ОС для виртуальной машины 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.

Необходимые компоненты

Создание классической виртуальной машины и учетной записи хранения

  1. Создайте классическую виртуальную машину на портале Azure. Создание виртуальной машины, развернутой с помощью классической модели Azure

  2. При создании виртуальной машины выберите вариант создания новой классической учетной записи хранения. Мы воспользуемся этой учетной записью хранения на следующих шагах.

  3. В портал Azure перейдите в область ресурсов учетных записей хранения. Выберите Ключи и запишите имя учетной записи хранения и ключ к ней. Они понадобятся для выполнения последующих действий. Ключи доступа к хранилищу

Создание субъекта-службы

Создайте субъект-службу в клиенте Microsoft Entra с помощью инструкций по созданию субъекта-службы. Выполняя это действие, обратите внимание на следующее.

  • Создайте новый секрет клиента для этого приложения.
  • Сохраните ключ и идентификатор клиента, чтобы использовать их в дальнейшем.

Предоставьте этому приложению права "Издатель метрик мониторинга" для доступа к ресурсу, из которого вы хотите передавать метрики. Вы можете использовать группу ресурсов или целую подписку.

Примечание.

Расширение диагностики будет использовать субъект-службу для проверки подлинности в Azure Monitor и передавать метрики для классической виртуальной машины.

Создание конфигурации для расширения диагностики

  1. Подготовьте файл конфигурации для расширения диагностики. Этот файл определяет, какие журналы и счетчики производительности для классической виртуальной машины должно собирать расширение диагностики. Ниже приведен пример:

    <?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>
    
  2. В разделе 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>
    
  3. В разделе файла конфигурации, где указан список счетчиков производительности, с которых собираются данные, направьте данные счетчиков производительности в приемник Azure Monitor AzMonSink.

    <PerformanceCounters scheduledTransferPeriod="PT1M" sinks="AzMonSink">
        <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT15S" />
    ...
    </PerformanceCounters>
    
  4. В закрытой конфигурации укажите учетную запись 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>
    
  5. Сохраните файл локально.

Развертывание расширения диагностики в облачной службе

  1. Запустите PowerShell и войдите в систему.

    Login-AzAccount
    
  2. Начните с настройки контекста для классической виртуальной машины.

    $VM = Get-AzureVM -ServiceName <VM’s Service_Name> -Name <VM Name>
    
  3. Задайте контекст классической учетной записи хранения, созданной в виртуальной машине.

    $StorageContext = New-AzStorageContext -StorageAccountName <name of your storage account from earlier steps> -storageaccountkey "<storage account key from earlier steps>"
    
  4. Укажите путь к файлу диагностики в переменной с помощью следующей команды:

    $diagconfig = “<path of the diagnostics configuration file with the Azure Monitor sink configured>”
    
  5. Подготовьте обновление для классической виртуальной машины, содержащее файл диагностики с настроенным приемником Azure Monitor.

    $VM_Update = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $diagconfig -VM $VM -StorageContext $Storage_Context
    
  6. Разверните это обновление на виртуальной машине, выполнив следующую команду:

    Update-AzureVM -ServiceName "ClassicVMWAD7216" -Name "ClassicVMWAD" -VM $VM_Update.VM
    

Примечание.

В процессе установки расширения диагностики по-прежнему необходимо указывать учетную запись хранения. Все журналы и счетчики производительности, указанные в файле конфигурации диагностики, будут записываться в указанную учетную запись хранения.

График метрик на портале Azure

  1. Перейдите на портал Azure.

  2. В меню слева выберите Монитор.

  3. На панели "Монитор" слева выберите метрики.

    Переход к метрикам

  4. В раскрывающемся меню ресурсов выберите требуемую классическую виртуальную машину.

  5. В раскрывающемся меню пространств имен выберите azure.vm.windows.guest.

  6. В раскрывающемся списке метрик выберите Использование выделенной памяти (в байтах). График метрик

Следующие шаги

  • Дополнительные сведения о настраиваемых метриках см. в этой статье.