Поделиться через


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

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

С помощью расширения Azure Monitor Диагностика Azure для Windows (WAD) можно собирать метрики и журналы из гостевой операционной системы (гостевой ОС), которая выполняется в составе виртуальной машины, облачной службы или кластера Azure Service Fabric. Расширение может отправлять телеметрию во множество различных расположений, перечисленных в предыдущей статье.

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

Если вы не знакомы с шаблонами Resource Manager, изучите сведения о развертывании шаблонов, их структуре и синтаксисе.

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

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

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

Создание шаблона Resource Manager

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

  • Azuredeploy.json — это предварительно настроенный шаблон Resource Manager для развертывания масштабируемого набора виртуальных машин.

  • Azuredeploy.Parameters.json — это файл параметров, в котором хранятся сведения, такие как имя пользователя и пароль, которые вы хотите задать для виртуальной машины. Во время развертывания шаблона Resource Manager используются параметры, заданные в этом файле.

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

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

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

  • Укажите vmSKU для развертывания. Рекомендуемое значение — Standard_D2_v3.
  • Укажите windowsOSVersion для масштабируемого набора виртуальных машин. Рекомендуемое значение — 2016-Datacenter.
  • Задайте имя для ресурса масштабируемого набора виртуальных машин, который будет развернут, с помощью свойства vmssName. Например, VMSS-WAD-TEST.
  • Укажите число виртуальных машин, которые следует запускать в масштабируемом наборе виртуальных машин, с помощью свойства instanceCount.
  • Введите значения adminUsername и adminPassword для масштабируемого набора виртуальных машин. Эти параметры используются для удаленного доступа к виртуальным машинам в масштабируемом наборе. Не используйте параметры, указанные в этом шаблоне, во избежание перехвата виртуальной машины. Боты сканируют Интернет на наличие имен пользователей и паролей в общедоступных репозиториях GitHub. Вероятно, они будут тестировать виртуальные машины с этими значениями по умолчанию.

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

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

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

"variables": {
  //add this line
  "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]",
  ...
}

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

{ 
  "type": "Microsoft.Compute/virtualMachineScaleSets", 
  "name": "[variables('namingInfix')]", 
  "location": "[resourceGroup().location]", 
  "apiVersion": "2017-03-30", 
  //add these lines below
  "identity": { 
       "type": "systemAssigned" 
   }, 
   //end of lines to add
   ...
}

В ресурсе масштабируемого набора виртуальных машин найдите раздел virtualMachineProfile. Добавьте новый профиль с именем extensionsProfile для управления расширениями.

В профиле extensionProfile добавьте в шаблон новое расширение, как показано в разделе VMSS-WAD-extension. Этот раздел представляет собой расширение управляемых удостоверений для ресурсов Azure, которое обеспечивает прием выдаваемых метрик в Azure Monitor. В поле name может содержаться любое имя.

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

  "extensionProfile": {
    "extensions": [
      // BEGINNING of added code
      // Managed identities for Azure resources
      {
        "name": "VMSS-WAD-extension",
        "properties": {
          "publisher": "Microsoft.ManagedIdentity",
          "type": "ManagedIdentityExtensionForWindows",
          "typeHandlerVersion": "1.0",
          "autoUpgradeMinorVersion": true,
          "settings": {
            "port": 50342
          },
          "protectedSettings": {}
        }
      },
      // add diagnostic extension. (Remove this comment after pasting.)
      { 
        "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", 
        "properties": { 
          "type": "IaaSDiagnostics",
          "autoUpgradeMinorVersion": true,
          "protectedSettings": {
            "storageAccountName": "[variables('storageAccountName')]",
            "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1]",
            "storageAccountEndPoint": "https://core.windows.net/"
          },
          "publisher": "Microsoft.Azure.Diagnostics", 
          "settings": { 
            "WadCfg": { 
              "DiagnosticMonitorConfiguration": { 
                "overallQuotaInMB": "50000", 
                "PerformanceCounters": { 
                  "scheduledTransferPeriod": "PT1M", 
                  "sinks": "AzMonSink", 
                  "PerformanceCounterConfiguration": [
                    { 
                      "counterSpecifier": "\\Memory\\% Committed Bytes In Use", 
                      "sampleRate": "PT15S" 
                    },
                    { 
                      "counterSpecifier": "\\Memory\\Available Bytes", 
                      "sampleRate": "PT15S" 
                    }, 
                    { 
                      "counterSpecifier": "\\Memory\\Committed Bytes", 
                      "sampleRate": "PT15S" 
                    }
                  ]
                },
                "EtwProviders": {
                  "EtwEventSourceProviderConfiguration": [
                    { 
                      "provider": "Microsoft-ServiceFabric-Actors", 
                      "scheduledTransferKeywordFilter": "1", 
                      "scheduledTransferPeriod": "PT5M", 
                      "DefaultEvents": { 
                        "eventDestination": "ServiceFabricReliableActorEventTable" 
                      } 
                    }, 
                    { 
                      "provider": "Microsoft-ServiceFabric-Services", 
                      "scheduledTransferPeriod": "PT5M", 
                      "DefaultEvents": { 
                        "eventDestination": "ServiceFabricReliableServiceEventTable" 
                      } 
                    } 
                  ], 
                  "EtwManifestProviderConfiguration": [
                    {
                       "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8", 
                       "scheduledTransferLogLevelFilter": "Information", 
                       "scheduledTransferKeywordFilter": "4611686018427387904", 
                       "scheduledTransferPeriod": "PT5M", 
                       "DefaultEvents": { 
                         "eventDestination": "ServiceFabricSystemEventTable" 
                       } 
                    } 
                  ]
                }
              },
              "SinksConfig": { 
                 "Sink": [ 
                    { 
                    "name": "AzMonSink", 
                    "AzureMonitor": {} 
                    } 
                 ]
              }
            },
            "StorageAccount": "[variables('storageAccountName')]" 
          },
          "typeHandlerVersion": "1.11" 
        }
      }
    ]
  },
  // end of added code. Be sure that the number and type of brackets match properly when done. 
  {
  "type": "Microsoft.Insights/autoscaleSettings",
  ...
  }

Добавьте dependsOn для учетной записи хранения, чтобы обеспечить ее создание в правильном порядке.

"dependsOn": [
  "[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]",
  "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]",
  //add this line below
  "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]"
]

Создайте учетную запись хранения, если она еще не создана в шаблоне.

"resources": [
  // add this code
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2015-05-01-preview",
    "location": "[resourceGroup().location]",
    "properties": {
      "accountType": "Standard_LRS"
    }
  },
  // end added code
  {
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[variables('virtualNetworkName')]",
    ...
  }
]

Сохраните и закройте оба файла.

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

Примечание.

Необходимо запустить расширение системы диагностики Azure 1.5 или более поздней версии, а также задать для свойства autoUpgradeMinorVersion значение true в шаблоне Resource Manager. Затем Azure загрузит нужное расширение при запуске виртуальной машины. Если этих параметров нет в шаблоне, внесите их и повторно разверните шаблон.

Чтобы развернуть шаблон Resource Manager, используйте Azure PowerShell.

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

  2. Войдите в Azure, используя команду Login-AzAccount.

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

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

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

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

    Примечание.

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

    New-AzResourceGroupDeployment -Name "VMSSWADTest" -ResourceGroupName "VMSSWADtestGrp" -TemplateFile "<File path of your azuredeploy.JSON file>" -TemplateParameterFile "<File path of your azuredeploy.parameters.JSON file>"
    
  7. После успешного развертывания сведения о масштабируемом наборе виртуальных машин отобразятся на портале Azure. Он будет выдавать метрики в Azure Monitor.

    Примечание.

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

Создание диаграммы метрик

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

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

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

    Снимок экрана: пункт меню метрик на странице меню Azure Monitor.

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

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

  6. В раскрывающемся меню пространств имен выберите "Гость виртуальной машины".

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

    Снимок экрана: выбор метрики пространства имен и агрегирование для диаграммы метрик.

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

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

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