Отправка метрик гостевой ОС Windows виртуальной машины в хранилище метрик Azure Monitor с помощью шаблона ARM и расширения диагностики Windows

Замечание

агент Azure Monitor (AMA) собирает данные мониторинга из гостевой операционной системы Azure и гибридных виртуальных машин и предоставляет его Azure Monitor для использования функциями, аналитическими сведениями и другими службами, такими как Microsoft Sentinel и Microsoft Defender для облака.

Мы рекомендуем использовать агент Azure Monitor для сбора журналов и метрик из Виртуальные машины. Дополнительные сведения см. в обзоре агента Azure Monitor.

Данные о производительности из гостевой ОС виртуальных машин Azure не собираются автоматически, как и другие метрики платформа. Установите расширение Azure Monitor Diagnostics для сбора метрик гостевой ОС в базу данных метрик, чтобы можно было использовать его со всеми функциями Azure Monitor Metrics. К этим функциям относятся оповещения почти в режиме реального времени, диаграммы, маршрутизация и доступ из REST API. В этой статье описывается процесс отправки метрик производительности гостевой ОС для виртуальной машины Windows в базу данных метрик с помощью шаблона Azure Resource Manager (шаблона ARM).

Это важно

Расширение Диагностика Azure было устарело 31 марта 2026 года и больше не поддерживается. Новые развертывания расширения не рекомендуется. Чтобы обеспечить постоянную поддержку и доступ к новым функциям, перейдите к альтернативным решениям, рекомендуемыми здесь.

Замечание

Дополнительные сведения о настройке расширения диагностики для сбора метрик гостевой ОС с помощью портала Azure см. в разделе Install и настройка расширения Windows Диагностика Azure (WAD.

Если вы не знакомы с шаблонами ARM, узнайте о развертываниях шаблонов и их структуре и синтаксисе.

Предпосылки

Настройка Azure Monitor в качестве приемника данных

Расширение Диагностика Azure использует функцию, называемую «data sinks», для маршрутизации метрик и журналов в разные места. Ниже показано, как использовать шаблон ARM и PowerShell для развертывания виртуальной машины с помощью нового приемника данных Azure Monitor.

Шаблон ARM

В этом примере можно использовать общедоступный пример шаблона. Начальные шаблоны находятся на GitHub.

  • Azuredeploy.json. Предварительно настроенный шаблон ARM для развертывания виртуальной машины.
  • Azuredeploy.parameters.json. Файл параметров, в который хранятся такие сведения, как имя пользователя и пароль, которые вы хотите задать для виртуальной машины. Во время развертывания шаблон ARM использует параметры, заданные в этом файле.

Скачайте и сохраните оба файла в локальном расположении.

Изменение файла azuredeploy.parameters.json

  1. Откройте файл azuredeploy.parameters.json.

  2. Введите значения для adminUsername и adminPassword для виртуальной машины. Эти параметры используются для удаленного доступа к виртуальной машине. Чтобы избежать взлома виртуальной машины, не используйте значения в этом шаблоне. Боты сканируют Интернет для имен пользователей и паролей в общедоступных репозиториях GitHub. Вероятно, они будут тестировать виртуальные машины с этими значениями по умолчанию.

  3. Создайте уникальный dnsname объект для виртуальной машины.

Изменение файла azuredeploy.json

  1. Откройте файл azuredeploy.json.

  2. Добавьте идентификатор учетной записи хранения в variables раздел шаблона после записи storageAccountName.

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Добавьте это расширение управляемого удостоверения службы (MSI) в шаблон в верхней части resources раздела. Расширение гарантирует, что Azure Monitor принимает передаваемые метрики.

    //Find this code.
    "resources": [
    // Add this code directly below.
        {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "name": "[concat(variables('vmName'), '/', 'WADExtensionSetup')]",
            "apiVersion": "2017-12-01",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" ],
            "properties": {
                "publisher": "Microsoft.ManagedIdentity",
                "type": "ManagedIdentityExtensionForWindows",
                "typeHandlerVersion": "1.0",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "port": 50342
                }
            }
        },
    
  4. Добавьте конфигурацию identity в ресурс виртуальной машины, чтобы убедиться, что Azure назначает системное удостоверение расширению MSI. Этот шаг гарантирует, что виртуальная машина может выдавать гостевые метрики о себе в Azure Monitor.

    // Find this section
                    "subnet": {
                "id": "[variables('subnetRef')]"
                }
            }
            }
        ]
        }
    },
    {
        "apiVersion": "2017-03-30",
        "type": "Microsoft.Compute/virtualMachines",
        "name": "[variables('vmName')]",
        "location": "[resourceGroup().location]",
        // add these 3 lines below
        "identity": {
        "type": "SystemAssigned"
        },
        //end of added lines
        "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
        ],
        "properties": {
        "hardwareProfile": {
        ...
    
  5. Добавьте следующую конфигурацию, чтобы включить расширение диагностики на виртуальной машине Windows. Для простой виртуальной машины на базе Resource Manager вы можете добавить конфигурацию расширения в массив ресурсов для этой ВМ. Строка "sinks": "AzMonSink" и соответствующая "SinksConfig" далее в этом разделе позволяют расширению отправлять метрики непосредственно в Azure Monitor. При желании счетчики производительности можно добавлять или удалять.

            "networkProfile": {
                "networkInterfaces": [
                {
                    "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
                }
                ]
            },
    "diagnosticsProfile": {
        "bootDiagnostics": {
        "enabled": true,
        "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]"
        }
    }
    },
    //Start of section to add
    "resources": [
    {
                "type": "Microsoft.Compute/virtualMachines/extensions",
                "name": "[concat(variables('vmName'), '/', 'Microsoft.Insights.VMDiagnosticsSettings')]",
                "apiVersion": "2017-12-01",
                "location": "[resourceGroup().location]",
                "dependsOn": [
                "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
                ],
                "properties": {
                "publisher": "Microsoft.Azure.Diagnostics",
                "type": "IaaSDiagnostics",
                "typeHandlerVersion": "1.12",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "WadCfg": {
                    "DiagnosticMonitorConfiguration": {
        "overallQuotaInMB": 4096,
        "DiagnosticInfrastructureLogs": {
                        "scheduledTransferLogLevelFilter": "Error"
            },
                        "Directories": {
                        "scheduledTransferPeriod": "PT1M",
        "IISLogs": {
                            "containerName": "wad-iis-logfiles"
                        },
                        "FailedRequestLogs": {
                            "containerName": "wad-failedrequestlogs"
                        }
                        },
                        "PerformanceCounters": {
                        "scheduledTransferPeriod": "PT1M",
                        "sinks": "AzMonSink",
                        "PerformanceCounterConfiguration": [
                            {
                            "counterSpecifier": "\\Memory\\Available Bytes",
                            "sampleRate": "PT15S"
                            },
                            {
                            "counterSpecifier": "\\Memory\\% Committed Bytes In Use",
                            "sampleRate": "PT15S"
                            },
                            {
                            "counterSpecifier": "\\Memory\\Committed Bytes",
                            "sampleRate": "PT15S"
                            }
                        ]
                        },
                        "WindowsEventLog": {
                        "scheduledTransferPeriod": "PT1M",
                        "DataSource": [
                            {
                            "name": "Application!*"
                            }
                        ]
                        },
                        "Logs": {
                        "scheduledTransferPeriod": "PT1M",
                        "scheduledTransferLogLevelFilter": "Error"
                        }
                    },
                    "SinksConfig": {
                        "Sink": [
                        {
                            "name" : "AzMonSink",
                            "AzureMonitor" : {}
                        }
                        ]
                    }
                    },
                    "StorageAccount": "[variables('storageAccountName')]"
                },
                "protectedSettings": {
                    "storageAccountName": "[variables('storageAccountName')]",
                    "storageAccountKey": "[listKeys(variables('accountid'),'2015-06-15').key1]",
                    "storageAccountEndPoint": "https://core.windows.net/"
                }
                }
            }
            ]
    //End of section to add
    
  6. Сохраните и закройте оба файла.

Развертывание шаблона ARM

Замечание

Необходимо запустить расширение Диагностика Azure версии 1.5 или более поздней и свойство autoUpgradeMinorVersion: должно быть установлено в значение true в вашем шаблоне ARM. Azure затем загружает соответствующее расширение при запуске виртуальной машины. Если этих параметров нет в шаблоне, внесите их и повторно разверните шаблон.

Для развертывания шаблона ARM мы используем Azure PowerShell.

  1. Запустите PowerShell.

  2. Войдите в Azure с помощью Login-AzAccount.

  3. Получите список подписок с помощью командлета Get-AzSubscription.

  4. Задайте подписку, используемую для создания и обновления виртуальной машины в:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Чтобы создать группу ресурсов для развертываемой виртуальной машины, выполните указанную ниже команду.

    New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. Выполните следующие команды, чтобы развернуть виртуальную машину с помощью шаблона ARM.

    Замечание

    Если вы хотите обновить существующую виртуальную машину, добавьте -Mode Incremental в конец следующей команды.

    New-AzResourceGroupDeployment -Name "<NameThisDeployment>" -ResourceGroupName "<Name of the Resource Group>" -TemplateFile "<File path of your Resource Manager template>" -TemplateParameterFile "<File path of your parameters file>"
    
  7. После успешного развертывания виртуальная машина должна находиться в портале Azure, отправляя метрики для Azure Monitor.

    Замечание

    Могут возникнуть ошибки, связанные с выбранным элементом vmSkuSize. Если эта ошибка возникает, вернитесь к файлу azuredeploy.json и обновите значение vmSkuSize по умолчанию параметра. В этом случае рекомендуется попробовать "Standard_DS1_v2".

Отслеживайте свои метрики

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

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

  3. На странице Монитор щелкните Метрики.

    Снимок экрана: страница

  4. Измените период агрегирования на Последние 30 минут.

  5. В раскрывающемся меню ресурса выберите созданную виртуальную машину. Если вы не изменяли имя в шаблоне, оно должно быть SimpleWinVM2.

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

  7. В раскрывающемся списке метрик выберите "Процент зафиксированных байтов памяти в использовании".

Дальнейшие действия

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