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

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

Примечание.

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

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

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

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

Расширение системы диагностики Azure использует функцию приемников данных для маршрутизации метрик и журналов в различные расположения. Ниже показано, как использовать шаблон 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>"
    

    Примечание.

    Не забывайте использовать регион Azure, включенный для пользовательских метрик.

  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. На странице Монитор щелкните Метрики.

    Screenshot that shows the Metrics page.

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

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

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

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

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

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