Wysyłanie metryk systemu operacyjnego gościa do magazynu metryk usługi Azure Monitor przy użyciu szablonu usługi ARM dla maszyny wirtualnej z systemem Windows

Dane wydajności z systemu operacyjnego gościa maszyn wirtualnych platformy Azure nie są zbierane automatycznie, podobnie jak inne metryki platformy. Zainstaluj rozszerzenie Diagnostyka usługi Azure Monitor, aby zebrać metryki systemu operacyjnego gościa w bazie danych metryk, aby można było jej używać ze wszystkimi funkcjami metryk usługi Azure Monitor. Te funkcje obejmują alerty niemal w czasie rzeczywistym, wykresy, routing i dostęp z interfejsu API REST. W tym artykule opisano proces wysyłania metryk wydajności systemu operacyjnego gościa dla maszyny wirtualnej z systemem Windows do bazy danych metryk przy użyciu szablonu usługi Azure Resource Manager (szablon usługi ARM).

Uwaga

Aby uzyskać szczegółowe informacje na temat konfigurowania rozszerzenia diagnostycznego w celu zbierania metryk systemu operacyjnego gościa przy użyciu witryny Azure Portal, zobacz Instalowanie i konfigurowanie rozszerzenia windows Diagnostyka Azure (WAD).

Jeśli dopiero zaczynasz korzystać z szablonów usługi ARM, 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 ARM i programu PowerShell wdrożyć maszynę wirtualną przy użyciu nowego ujścia danych usługi Azure Monitor.

Szablon ARM

W tym przykładzie można użyć publicznie dostępnego przykładowego szablonu. Szablony początkowe znajdują się w witrynie GitHub.

  • Azuredeploy.json: wstępnie skonfigurowany szablon usługi ARM na potrzeby wdrażania maszyny wirtualnej.
  • Azuredeploy.parameters.json: 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 ARM używa parametrów ustawionych w tym pliku.

Pobierz i zapisz oba pliki lokalnie.

Modyfikowanie pliku azuredeploy.parameters.json

  1. Otwórz plik azuredeploy.parameters.json.

  2. Wprowadź wartości dla adminUsername i adminPassword dla maszyny wirtualnej. Te parametry są używane do dostępu zdalnego do maszyny wirtualnej. Aby uniknąć porwania maszyny wirtualnej, nie używaj wartości 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.

  3. Utwórz unikatowy dnsname element dla maszyny wirtualnej.

Modyfikowanie pliku azuredeploy.json

  1. Otwórz plik azuredeploy.json.

  2. Dodaj identyfikator konta magazynu do variables sekcji szablonu po wpisie dla storageAccountNameelementu .

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Dodaj to rozszerzenie tożsamości usługi zarządzanej (MSI) do szablonu w górnej resources części sekcji. Rozszerzenie zapewnia, że usługa Azure Monitor akceptuje emitowane metryki.

    //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. Dodaj konfigurację identity do zasobu maszyny wirtualnej, aby upewnić się, że platforma Azure przypisuje tożsamość systemową do rozszerzenia MSI. Ten krok gwarantuje, że maszyna wirtualna może emitować metryki gościa dotyczące samego siebie do usługi 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. Dodaj następującą konfigurację, aby włączyć rozszerzenie diagnostyczne na maszynie wirtualnej z systemem Windows. W przypadku prostej maszyny wirtualnej opartej na usłudze Resource Manager można dodać konfigurację rozszerzenia do tablicy zasobów dla maszyny wirtualnej. Wiersz "sinks": "AzMonSink", i odpowiedni "SinksConfig" w dalszej części sekcji, włącz rozszerzenie, aby emitować metryki bezpośrednio do usługi Azure Monitor. Możesz dodawać lub usuwać liczniki wydajności zgodnie z potrzebami.

            "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. Zapisz i zamknij oba pliki.

Wdrażanie szablonu usługi ARM

Uwaga

Musisz uruchomić rozszerzenie Diagnostyka Azure w wersji 1.5 lub nowszej i mieć właściwość ustawioną autoUpgradeMinorVersion: na true wartość w szablonie usługi ARM. 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 ARM, użyjemy 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órej używasz, aby utworzyć/zaktualizować maszynę wirtualną w:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Aby utworzyć nową grupę zasobów dla wdrażanej maszyny wirtualnej, uruchom następujące polecenie:

     New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. Uruchom następujące polecenia, aby wdrożyć maszynę wirtualną przy użyciu szablonu usługi ARM.

    Uwaga

    Jeśli chcesz zaktualizować istniejącą maszynę wirtualną, dodaj pozycję -Mode Incremental na końcu następującego polecenia.

    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. Po pomyślnym zakończeniu wdrażania maszyna wirtualna powinna znajdować się w witrynie Azure Portal, emitując metryki do usługi Azure Monitor.

    Uwaga

    Mogą wystąpić błędy wokół wybranego vmSkuSizeelementu . Jeśli ten błąd wystąpi, wróć do pliku azuredeploy.json i zaktualizuj wartość domyślną parametru vmSkuSize . W takim przypadku zalecamy wypróbowanie polecenia "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.

    Screenshot that shows the Metrics page.

  4. Zmień okres agregacji na Ostatnie 30 minut.

  5. W menu rozwijanym zasobu wybierz utworzoną maszynę wirtualną. Jeśli nazwa szablonu nie została zmieniona, powinna to być simpleWinVM2.

  6. Z listy rozwijanej Przestrzenie nazw wybierz pozycję azure.vm.windows.guestmetrics.

  7. Z listy rozwijanej metryki wybierz pozycję Pamięć%Zatwierdzone bajty w obszarze Użyj.

Następne kroki

Dowiedz się więcej o metrykach niestandardowych.