Wysyłanie metryk systemu operacyjnego gościa do magazynu metryk usługi Azure Monitor przy użyciu szablonu usługi Azure Resource Manager dla zestawu skalowania maszyn wirtualnych z systemem Windows

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Za pomocą rozszerzenia usługi Azure Monitor Diagnostyka Azure dla systemu Windows (WAD) można zbierać metryki i dzienniki z systemu operacyjnego gościa działającego jako część maszyny wirtualnej, usługi w chmurze lub klastra usługi Azure Service Fabric. Rozszerzenie może wysyłać dane telemetryczne do wielu różnych lokalizacji wymienionych w wcześniej połączonym artykule.

W tym artykule opisano proces wysyłania metryk wydajności systemu operacyjnego gościa dla zestawu skalowania maszyn wirtualnych z systemem Windows do magazynu danych usługi Azure Monitor. Począwszy od usługi Microsoft Diagnostyka Azure w wersji 1.11, można zapisywać metryki bezpośrednio w magazynie metryk usługi Azure Monitor, gdzie już zbierane są standardowe metryki platformy. Przechowując je w tej lokalizacji, możesz uzyskać dostęp do tych samych akcji, które są dostępne dla metryk platformy. Akcje obejmują alerty niemal w czasie rzeczywistym, wykresy, routing, dostęp z interfejsu API REST i nie tylko. W przeszłości rozszerzenie Microsoft Diagnostyka Azure napisało do usługi Azure Storage, ale nie do magazynu danych usługi Azure Monitor.

Jeśli dopiero zaczynasz korzystać z szablonów usługi Resource Manager, dowiedz się więcej o wdrożeniach szablonów i ich strukturze i składni.

Wymagania wstępne

Konfigurowanie usługi Azure Monitor jako ujścia danych

Rozszerzenie Diagnostyka Azure używa funkcji nazywanej ujściami danych do kierowania metryk i dzienników do różnych lokalizacji. W poniższych krokach pokazano, jak za pomocą szablonu usługi Resource Manager i programu PowerShell wdrożyć maszynę wirtualną przy użyciu nowego ujścia danych usługi Azure Monitor.

Tworzenie szablonu usługi Resource Manager

W tym przykładzie można użyć publicznie dostępnego przykładowego szablonu:

  • Azuredeploy.json to wstępnie skonfigurowany szablon usługi Resource Manager na potrzeby wdrażania zestawu skalowania maszyn wirtualnych.

  • Azuredeploy.parameters.json to plik parametrów, który przechowuje informacje, takie jak nazwa użytkownika i hasło, które chcesz ustawić dla maszyny wirtualnej. Podczas wdrażania szablon usługi Resource Manager używa parametrów ustawionych w tym pliku.

Pobierz i zapisz oba pliki lokalnie.

Modyfikowanie pliku azuredeploy.parameters.json

Otwórz plik azuredeploy.parameters.json:

  • Podaj maszynę wirtualną VMSKU , którą chcesz wdrożyć. Zalecamy Standard_D2_v3.
  • Określ wartość windowsOSVersion , która ma być odpowiednia dla zestawu skalowania maszyn wirtualnych. Zalecamy 2016-Datacenter.
  • Nazwij zasób zestawu skalowania maszyn wirtualnych, który ma zostać wdrożony przy użyciu właściwości vmssName . Przykładem jest usługa VMSS-WAD-TEST.
  • Określ liczbę maszyn wirtualnych, które mają być uruchamiane w zestawie skalowania maszyn wirtualnych przy użyciu właściwości instanceCount .
  • Wprowadź wartości adminUsername i adminPassword dla zestawu skalowania maszyn wirtualnych. Te parametry są używane do zdalnego dostępu do maszyn wirtualnych w zestawie skalowania. Aby uniknąć porwania maszyny wirtualnej, nie używaj tych w tym szablonie. Boty skanują Internet pod kątem nazw użytkowników i haseł w publicznych repozytoriach GitHub. Prawdopodobnie będą testować maszyny wirtualne przy użyciu tych wartości domyślnych.

Modyfikowanie pliku azuredeploy.json

Otwórz plik azuredeploy.json.

Dodaj zmienną do przechowywania informacji o koncie magazynu w szablonie usługi Resource Manager. Wszystkie dzienniki lub liczniki wydajności określone w pliku konfiguracji diagnostyki są zapisywane zarówno w magazynie metryk usługi Azure Monitor, jak i na koncie magazynu, które określisz tutaj:

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

Znajdź definicję zestawu skalowania maszyn wirtualnych w sekcji zasobów i dodaj sekcję tożsamości do konfiguracji. Dzięki temu platforma Azure przypisze jej tożsamość systemową. Ten krok gwarantuje również, że maszyny wirtualne w zestawie skalowania mogą emitować metryki gościa dotyczące siebie do usługi 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
   ...
}

W zasobie zestawu skalowania maszyn wirtualnych znajdź sekcję virtualMachineProfile . Dodaj nowy profil o nazwie extensionsProfile , aby zarządzać rozszerzeniami.

W pliku extensionProfile dodaj nowe rozszerzenie do szablonu, jak pokazano w sekcji VMSS-WAD-extension. Ta sekcja to tożsamości zarządzane dla rozszerzenia zasobów platformy Azure, które zapewnia akceptowanie emitowanych metryk przez usługę Azure Monitor. Pole nazwy może zawierać dowolną nazwę.

Poniższy kod z rozszerzenia MSI dodaje również rozszerzenie diagnostyki i konfigurację jako zasób rozszerzenia do zasobu zestawu skalowania maszyn wirtualnych. Możesz dodawać lub usuwać liczniki wydajności zgodnie z potrzebami:

  "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",
  ...
  }

Dodaj element dependsOn dla konta magazynu, aby upewnić się, że został utworzony w odpowiedniej kolejności:

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

Utwórz konto magazynu, jeśli nie zostało jeszcze utworzone w szablonie:

"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')]",
    ...
  }
]

Zapisz i zamknij oba pliki.

Wdrażanie szablonu usługi Resource Manager

Uwaga

Musisz uruchomić rozszerzenie Diagnostyka Azure w wersji 1.5 lub nowszej i mieć właściwość autoUpgradeMinorVersion: właściwość ustawiona na wartość true w szablonie usługi Resource Manager. Następnie platforma Azure ładuje odpowiednie rozszerzenie podczas uruchamiania maszyny wirtualnej. Jeśli nie masz tych ustawień w szablonie, zmień je i ponownie wdróż szablon.

Aby wdrożyć szablon usługi Resource Manager, użyj programu Azure PowerShell:

  1. Uruchom program PowerShell.

  2. Zaloguj się do platformy Azure przy użyciu polecenia Login-AzAccount.

  3. Pobierz listę subskrypcji przy użyciu polecenia Get-AzSubscription.

  4. Ustaw subskrypcję, którą utworzysz, lub zaktualizuj maszynę wirtualną:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Utwórz nową grupę zasobów dla wdrażanej maszyny wirtualnej. Uruchom następujące polecenie:

     New-AzResourceGroup -Name "VMSSWADtestGrp" -Location "<Azure Region>"
    
  6. Uruchom następujące polecenia, aby wdrożyć maszynę wirtualną:

    Uwaga

    Jeśli chcesz zaktualizować istniejący zestaw skalowania, dodaj polecenie -Mode Incremental na końcu polecenia.

    New-AzResourceGroupDeployment -Name "VMSSWADTest" -ResourceGroupName "VMSSWADtestGrp" -TemplateFile "<File path of your azuredeploy.JSON file>" -TemplateParameterFile "<File path of your azuredeploy.parameters.JSON file>"
    
  7. Po pomyślnym zakończeniu wdrażania zestaw skalowania maszyn wirtualnych powinien znajdować się w witrynie Azure Portal. Powinna ona emitować metryki do usługi Azure Monitor.

    Uwaga

    Mogą wystąpić błędy wokół wybranej maszyny wirtualnej VmSkuSize. W takim przypadku wróć do pliku azuredeploy.json i zaktualizuj wartość domyślną parametru vmSkuSize . Zalecamy wypróbowanie Standard_DS1_v2.

Wykres metryk

  1. Zaloguj się w witrynie Azure Portal.

  2. W menu po lewej stronie wybierz pozycję Monitor.

  3. Na stronie Monitorowanie wybierz pozycję Metryki.

    A screenshot showing the metrics menu item on the Azure Monitor menu page.

  4. Zmień okres agregacji na Ostatnie 30 minut.

  5. W menu rozwijanym zasobu wybierz utworzony zestaw skalowania maszyn wirtualnych.

  6. W menu rozwijanym Przestrzenie nazw wybierz pozycję Gość maszyny wirtualnej.

  7. W menu rozwijanym metryki wybierz pozycję Pamięć%Zatwierdzone bajty w obszarze Użyj.

    A screenshot showing the selection of namespace metric and aggregation for a metrics chart.

Następnie możesz również użyć wymiarów tej metryki, aby utworzyć wykres dla określonej maszyny wirtualnej lub wykreślić każdą maszynę wirtualną w zestawie skalowania.

Następne kroki

  • Dowiedz się więcej o metrykach niestandardowych.