Senden von Gastbetriebssystemmetriken an den Metrikspeicher von Azure Monitor unter Verwendung einer ARM-Vorlage für einen virtuellen Windows-Computer

Leistungsdaten vom Gastbetriebssystem auf virtuellen Azure-Computern werden nicht wie andere Platformmetriken automatisch erfasst. Installieren Sie die Diagnoseerweiterung von Azure Monitor, um Gastbetriebssystemmetriken in der Metrikdatenbank zu sammeln, damit sie mit allen Features von Azure Monitor-Metriken verwendet werden kann. Zu den Features gehören Benachrichtigung in Quasi-Echtzeit, Diagrammerstellung, Routing und Zugriff über eine REST-API. In diesem Artikel erfahren Sie, wie Sie Leistungsmetriken des Gastbetriebssystems für einen virtuellen Windows-Computer mithilfe einer Azure Resource Manager-Vorlage (ARM-Vorlage) an die Metrikendatenbank senden.

Hinweis

Ausführliche Informationen zum Konfigurieren der Diagnoseerweiterung für das Erfassen von Gastbetriebssystemmetriken über das Azure-Portal finden Sie unter Installieren und Konfigurieren der Azure-Diagnoseerweiterung für Windows (WAD).

Wenn Sie noch nicht mit ARM-Vorlagen vertraut sind, informieren Sie sich über Vorlagenbereitstellungen sowie deren Struktur und Syntax.

Voraussetzungen

Einrichten von Azure Monitor als Datensenke

Die Azure-Diagnoseerweiterung verwendet eine Feature namens Datensenken, um Metriken und Protokolle an verschiedene Orte zu leiten. Die folgenden Schritte zeigen, wie Sie eine ARM-Vorlage und PowerShell verwenden, um eine VM mit der neuen Azure Monitor-Datensenke bereitzustellen.

ARM-Vorlage

Für dieses Beispiel können Sie eine öffentlich zugängliche Beispielvorlage verwenden. Die Startvorlagen befinden sich auf GitHub.

  • Azuredeploy.json: Eine vorkonfigurierte ARM-Vorlage für die Bereitstellung eines virtuellen Computers
  • Azuredeploy.parameters.json: Eine Parameterdatei, die Informationen wie Benutzername und Kennwort speichert, die Sie für Ihre VM festlegen. Während der Bereitstellung verwendet die ARM-Vorlage die in dieser Datei festgelegten Parameter.

Laden Sie beide Dateien herunter und speichern Sie sie lokal.

Ändern von azuredeploy.parameters.json

  1. Öffnen Sie die Datei azuredeploy.parameters.json.

  2. Geben Sie Werte für adminUsername und adminPassword für die VM ein. Diese Parameter werden für den Remotezugriff auf die VMs verwendet. Verwenden Sie nicht die in dieser Vorlage enthaltenen Werte, um eine Übernahme Ihrer VM zu vermeiden. Bots durchsuchen das Internet nach Benutzernamen und Kennwörtern in öffentlichen GitHub-Repositorys. Es ist wahrscheinlich, dass sie VMs mit diesen Standardwerten testen.

  3. Erstellen Sie einen eindeutigen dnsname-Wert für die VM.

Ändern von azuredeploy.json

  1. Öffnen Sie die Datei azuredeploy.json.

  2. Fügen Sie dem Abschnitt variables der Vorlage hinter dem Eintrag für storageAccountName eine Speicherkonto-ID hinzu.

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Fügen Sie der Vorlage diese MSI-Erweiterung (verwaltete Dienstidentität) oben im Abschnitt resources hinzu. Die Erweiterung stellt sicher, dass Azure Monitor die ausgegebenen Metriken akzeptiert.

    //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. Fügen Sie der VM-Ressource die Konfiguration identity hinzu, um sicherzustellen, dass Azure der MSI-Erweiterung eine Systemidentität zuweist. Dieser Schritt stellt sicher, dass der virtuelle Computer Gastmetriken über sich selbst an Azure Monitor senden kann.

    // 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. Fügen Sie die folgende Konfiguration hinzu, um die Diagnoseerweiterung auf einem virtuellen Windows-Computer zu aktivieren. Bei einem einfachen, auf Resource Manager basierenden virtuellen Computer können Sie die Erweiterungskonfiguration dem Array „resources“ für den virtuellen Computer hinzufügen. Die Zeile "sinks": "AzMonSink" und das später im Abschnitt folgende entsprechende "SinksConfig"-Element ermöglichen es der Erweiterung, Metriken direkt an Azure Monitor zu senden. Sie können Leistungsindikatoren nach Bedarf hinzufügen oder entfernen.

            "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. Speichern und schließen Sie beide Dateien.

Bereitstellen der ARM-Vorlage

Hinweis

Sie müssen mindestens Version 1.5 der Azure-Diagnoseerweitertung ausführen und die Eigenschaft autoUpgradeMinorVersion: in Ihrer ARM-Vorlage auf true festgelegt haben. Azure lädt dann die richtige Erweiterung, wenn die VM gestartet wird. Wenn diese Einstellungen in Ihrer Vorlage nicht vorhanden sind, ändern Sie sie, und stellen Sie die Vorlage erneut bereit.

Zum Bereitstellen der ARM-Vorlage verwenden wir Azure PowerShell.

  1. Starten Sie PowerShell.

  2. Anmelden bei Azure mithilfe von Login-AzAccount.

  3. Rufen Sie Ihre Liste der Abonnements mit Get-AzSubscription ab.

  4. Legen Sie das Abonnement, das Sie zum Erstellen/Aktualisieren des virtuellen Computers verwenden, fest:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Erstellen Sie eine neue Ressourcengruppe für die bereitzustellende VM, indem Sie den folgenden Befehl ausführen:

     New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. Führen Sie die folgenden Befehle aus, um den virtuellen Computer mithilfe der ARM-Vorlage bereitzustellen.

    Hinweis

    Wenn Sie einen bestehenden virtuellen Computer aktualisieren möchten, fügen Sie -Mode Incremental am Ende des folgenden Befehls hinzu.

    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. Nachdem Ihre Bereitstellung erfolgreich abgeschlossen wurde, sollte der virtuelle Computer im Azure-Portal vorhanden sein und Metriken an Azure Monitor ausgeben.

    Hinweis

    Möglicherweise treten im Bereich um die vmSkuSize Fehler auf. Wechseln Sie in diesem Fall zurück zu Ihrer Datei azuredeploy.json, und aktualisieren Sie den Standardwert des Parameters vmSkuSize. In diesem Fall wird empfohlen, "Standard_DS1_v2" auszuprobieren.

Erfassen Ihrer Metriken

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü auf der linken Seite Überwachen aus.

  3. Wählen Sie auf der Seite Monitor die Option Metriken aus.

    Screenshot that shows the Metrics page.

  4. Ändern Sie den Aggregationszeitraum in Letzte 30 Minuten.

  5. Wählen Sie im Dropdownmenü mit den Ressourcen den von Ihnen erstellten virtuellen Computer aus. Wenn Sie den Namen in der Vorlage nicht geändert haben, sollte er SimpleWinVM2 lauten.

  6. Wählen Sie in der Dropdownliste der Namespaces die Option azure.vm.windows.guestmetrics aus.

  7. Wählen Sie in der Dropdownliste der Metriken Arbeitsspeicher%Verwendete zugesicherte Bytes aus.

Nächste Schritte

Erfahren Sie mehr über benutzerdefinierte Metriken.