Metrische gegevens van gastbesturingssystemen verzenden naar het metrische azure Monitor-archief met behulp van een Azure Resource Manager-sjabloon voor een virtuele-machineschaalset van Windows

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Met behulp van de Azure Monitor Azure Diagnostics-extensie voor Windows (WAD) kunt u metrische gegevens en logboeken verzamelen van het gastbesturingssysteem (gastbesturingssysteem) dat wordt uitgevoerd als onderdeel van een virtuele machine, cloudservice of Azure Service Fabric-cluster. De extensie kan telemetrie verzenden naar veel verschillende locaties die worden vermeld in het eerder gekoppelde artikel.

In dit artikel wordt het proces beschreven voor het verzenden van metrische gegevens over de prestaties van gastbesturingssystemen voor een virtuele-machineschaalset van Windows naar het Azure Monitor-gegevensarchief. Vanaf Microsoft Azure Diagnostics versie 1.11 kunt u metrische gegevens rechtstreeks naar het metrische azure Monitor-archief schrijven, waarbij standaardplatformgegevens al worden verzameld. Door ze op deze locatie op te slaan, hebt u toegang tot dezelfde acties die beschikbaar zijn voor metrische platformgegevens. Acties omvatten bijna realtime waarschuwingen, grafieken, routering, toegang vanuit de REST API en meer. In het verleden schreef de Microsoft Azure Diagnostics-extensie naar Azure Storage, maar niet naar het Azure Monitor-gegevensarchief.

Als u geen toegang hebt tot Resource Manager-sjablonen, kunt u meer informatie krijgen over sjabloonimplementaties en de bijbehorende structuur en syntaxis.

Vereisten

Azure Monitor instellen als een gegevenssink

De Azure Diagnostics-extensie maakt gebruik van een functie genaamd gegevenssinks om metrische gegevens en logboeken naar verschillende locaties te routeren. De volgende stappen laten zien hoe u een Resource Manager-sjabloon en PowerShell gebruikt om een virtuele machine te implementeren met behulp van de nieuwe Azure Monitor-gegevenssink.

Een Resource Manager-sjabloon maken

Voor dit voorbeeld kunt u een openbaar beschikbare voorbeeldsjabloon gebruiken:

  • Azuredeploy.json is een vooraf geconfigureerde Resource Manager-sjabloon voor de implementatie van een virtuele-machineschaalset.

  • Azuredeploy.parameters.json is een parameterbestand waarin informatie wordt opgeslagen, zoals de gebruikersnaam en het wachtwoord die u wilt instellen voor uw virtuele machine. Tijdens de implementatie gebruikt de Resource Manager-sjabloon de parameters die in dit bestand zijn ingesteld.

Download en sla beide bestanden lokaal op.

azuredeploy.parameters.json wijzigen

Open het bestand azuredeploy.parameters.json :

  • Geef een vmSKU op die u wilt implementeren. We raden Standard_D2_v3 aan.
  • Geef een windowsOSVersion op die u wilt gebruiken voor uw virtuele-machineschaalset. We raden 2016-Datacenter aan.
  • Geef de virtuele-machineschaalsetresource een naam die moet worden geïmplementeerd met behulp van een vmssName-eigenschap . Een voorbeeld is VMSS-WAD-TEST.
  • Geef het aantal virtuele machines op dat u wilt uitvoeren op de virtuele-machineschaalset met behulp van de eigenschap instanceCount .
  • Voer waarden in voor adminUsername en adminPassword voor de virtuele-machineschaalset. Deze parameters worden gebruikt voor externe toegang tot de VM's in de schaalset. Als u wilt voorkomen dat uw VIRTUELE machine wordt gekaapt, gebruikt u deze niet in deze sjabloon. Bots scannen internet op gebruikersnamen en wachtwoorden in openbare GitHub-opslagplaatsen. Ze testen waarschijnlijk VM's met deze standaardwaarden.

Azuredeploy.json wijzigen

Open het bestand azuredeploy.json .

Voeg een variabele toe voor het opslaan van de opslagaccountgegevens in de Resource Manager-sjabloon. Logboeken of prestatiemeteritems die zijn opgegeven in het configuratiebestand voor diagnostische gegevens, worden geschreven naar zowel het metrische azure Monitor-archief als het opslagaccount dat u hier opgeeft:

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

Zoek de definitie van de virtuele-machineschaalset in de sectie Resources en voeg de identiteitssectie toe aan de configuratie. Deze toevoeging zorgt ervoor dat Azure deze een systeemidentiteit toewijst. Deze stap zorgt er ook voor dat de VM's in de schaalset metrische gastgegevens over zichzelf kunnen verzenden naar 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
   ...
}

Zoek in de resource van de virtuele-machineschaalset de sectie virtualMachineProfile . Voeg een nieuw profiel met de naam extensionsProfile toe om extensies te beheren.

Voeg in het extensionProfile een nieuwe extensie toe aan de sjabloon, zoals wordt weergegeven in de sectie VMSS-WAD-extensie . Deze sectie is de beheerde identiteiten voor de Azure-resources-extensie die ervoor zorgt dat de metrische gegevens die worden verzonden, worden geaccepteerd door Azure Monitor. Het naamveld kan elke naam bevatten.

Met de volgende code van de MSI-extensie worden ook de diagnostische extensie en configuratie als extensieresource toegevoegd aan de virtuele-machineschaalsetresource. U kunt desgewenst prestatiemeteritems toevoegen of verwijderen:

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

Voeg een dependsOn toe voor het opslagaccount om ervoor te zorgen dat het in de juiste volgorde wordt gemaakt:

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

Maak een opslagaccount als deze nog niet is gemaakt in de sjabloon:

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

Sla beide bestanden op en sluit deze.

De Resource Manager-sjabloon implementeren

Notitie

U moet de Azure Diagnostics-extensie versie 1.5 of hoger uitvoeren en de eigenschap autoUpgradeMinorVersion hebben ingesteld op true in uw Resource Manager-sjabloon. Azure laadt vervolgens de juiste extensie wanneer de VIRTUELE machine wordt gestart. Als u deze instellingen niet in uw sjabloon hebt, wijzigt u deze en implementeert u de sjabloon opnieuw.

Als u de Resource Manager-sjabloon wilt implementeren, gebruikt u Azure PowerShell:

  1. Start PowerShell.

  2. Meld u aan bij Azure met Login-AzAccount.

  3. Haal uw lijst met abonnementen op met behulp van Get-AzSubscription.

  4. Stel het abonnement in dat u gaat maken of werk de virtuele machine bij:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Maak een nieuwe resourcegroep voor de VM die wordt geïmplementeerd. Voer de volgende opdracht uit:

     New-AzResourceGroup -Name "VMSSWADtestGrp" -Location "<Azure Region>"
    
  6. Voer de volgende opdrachten uit om de VM te implementeren:

    Notitie

    Als u een bestaande schaalset wilt bijwerken, voegt u incrementeel -Mode toe aan het einde van de opdracht.

    New-AzResourceGroupDeployment -Name "VMSSWADTest" -ResourceGroupName "VMSSWADtestGrp" -TemplateFile "<File path of your azuredeploy.JSON file>" -TemplateParameterFile "<File path of your azuredeploy.parameters.JSON file>"
    
  7. Nadat de implementatie is voltooid, moet u de virtuele-machineschaalset vinden in Azure Portal. Er moeten metrische gegevens naar Azure Monitor worden verzonden.

    Notitie

    Er kunnen fouten optreden rond de geselecteerde vmSkuSize. Ga in dat geval terug naar uw bestand azuredeploy.json en werk de standaardwaarde van de parameter vmSkuSize bij. We raden u aan om Standard_DS1_v2 uit te proberen.

Uw metrische gegevens in kaart brengen

  1. Meld u aan bij de Azure-portal.

  2. Selecteer Controleren in het menu aan de linkerkant.

  3. Selecteer metrische gegevens op de pagina Monitor.

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

  4. Wijzig de aggregatieperiode in Afgelopen 30 minuten.

  5. Selecteer in de vervolgkeuzelijst voor resources de virtuele-machineschaalset die u hebt gemaakt.

  6. Selecteer In de vervolgkeuzelijst naamruimten de optie Gast van virtuele machine.

  7. Selecteer in de vervolgkeuzelijst met metrische gegevens geheugen%vastgelegde bytes in gebruik.

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

U kunt er vervolgens ook voor kiezen om de dimensies op deze metrische waarde te gebruiken om deze voor een bepaalde VIRTUELE machine in kaart te brengen of om elke VIRTUELE machine in de schaalset uit te zetten.

Volgende stappen