Inviare le metriche del sistema operativo guest all'archivio delle metriche di Monitoraggio di Azure usando un modello di Resource Manager per una macchina virtuale Windows

I dati sulle prestazioni del sistema operativo guest delle macchine virtuali di Azure non vengono raccolti automaticamente come altre metriche della piattaforma. Installare l'estensione Diagnostica di Monitoraggio di Azure per raccogliere le metriche del sistema operativo guest nel database delle metriche in modo che possa essere usata con tutte le funzionalità delle metriche di Monitoraggio di Azure. Queste funzionalità includono avvisi quasi in tempo reale, creazione di grafici, routing e accesso da un'API REST. Questo articolo descrive il processo di invio delle metriche delle prestazioni del sistema operativo guest per una macchina virtuale Windows al database delle metriche usando un modello di Azure Resource Manager (modello di Resource Manager).

Nota

Per informazioni dettagliate sulla configurazione dell'estensione di diagnostica per raccogliere le metriche del sistema operativo guest tramite il portale di Azure, vedere Installare e configurare l'estensione Windows Diagnostica di Azure (WAD).

Se non si ha familiarità con i modelli di Resource Manager, vedere distribuzioni di modelli e la relativa struttura e sintassi.

Prerequisiti

Configurare Monitoraggio di Azure come sink dei dati

L'estensione Diagnostica di Azure usa una funzionalità denominata sink di dati per instradare le metriche e i log in posizioni diverse. I passaggi seguenti illustrano come usare un modello di Resource Manager e PowerShell per distribuire una macchina virtuale usando il nuovo sink di dati di Monitoraggio di Azure.

Modello ARM

Per questo esempio è possibile usare un modello di esempio disponibile pubblicamente. I modelli iniziali sono disponibili in GitHub.

  • Azuredeploy.json: modello di Resource Manager preconfigurato per la distribuzione di una macchina virtuale.
  • Azuredeploy.parameters.json: file di parametri che archivia informazioni come il nome utente e la password da impostare per la macchina virtuale. Durante la distribuzione, il modello di Resource Manager usa i parametri impostati in questo file.

Scaricare e salvare entrambi i file in locale.

Modificare azuredeploy.parameters.json

  1. Aprire il file azuredeploy.parameters.json .

  2. Immettere i valori per adminUsername e adminPassword per la macchina virtuale. Questi parametri vengono usati per l'accesso remoto alla macchina virtuale. Per evitare che la macchina virtuale venga dirottata, non usare i valori in questo modello. I bot eseguono la ricerca in Internet dei nomi utente e delle password archiviati nei repository GitHub pubblici. È probabile che le VM vengano testate con queste impostazioni predefinite.

  3. Creare un oggetto univoco dnsname per la macchina virtuale.

Modificare azuredeploy.json

  1. Aprire il file azuredeploy.json.

  2. Aggiungere un ID account di archiviazione alla variables sezione del modello dopo la voce per storageAccountName.

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Aggiungere questa estensione identità del servizio gestita al modello nella parte superiore della resources sezione. L'estensione assicura l'accettazione da parte di Monitoraggio di Azure delle metriche inviate.

    //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. Aggiungere la identity configurazione alla risorsa macchina virtuale per assicurarsi che Azure assegni un'identità di sistema all'estensione MSI. Questo passaggio garantisce che la VM possa inviare metriche guest su se stessa a Monitoraggio di Azure.

    // 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. Aggiungere la configurazione seguente per abilitare l'estensione di diagnostica in una macchina virtuale Windows. Per una semplice macchina virtuale basata su Resource Manager, è possibile aggiungere la configurazione dell'estensione all'array di risorse per la macchina virtuale. La riga "sinks": "AzMonSink"e la corrispondente "SinksConfig" più avanti nella sezione consentono all'estensione di generare metriche direttamente in Monitoraggio di Azure. È possibile aggiungere o rimuovere i contatori delle prestazioni in base alle esigenze.

            "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. Salvare e chiudere entrambi i file.

Distribuire il modello di Resource Manager

Nota

È necessario eseguire Diagnostica di Azure'estensione versione 1.5 o successiva e impostare la autoUpgradeMinorVersion: proprietà su true nel modello di Resource Manager. Azure carica quindi l'estensione corretta all'avvio della macchina virtuale. Se nel modello sono specificate impostazioni diverse, modificarle e ridistribuire il modello.

Per distribuire il modello di Resource Manager, si usa Azure PowerShell.

  1. Avviare PowerShell.

  2. Accedere ad Azure usando Login-AzAccount.

  3. Ottenere l'elenco delle sottoscrizioni usando Get-AzSubscription.

  4. Impostare la sottoscrizione usata per creare/aggiornare la macchina virtuale in:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Per creare un nuovo gruppo di risorse per la VM che viene distribuita, eseguire il comando seguente:

     New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. Eseguire i comandi seguenti per distribuire la macchina virtuale usando il modello di Resource Manager.

    Nota

    Se si vuole aggiornare una macchina virtuale esistente, aggiungere -Mode Incremental alla fine del comando seguente.

    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. Al termine della distribuzione, la VM deve essere disponibile nel portale di Azure per inviare metriche a Monitoraggio di Azure.

    Nota

    È possibile che si verifichino errori intorno all'oggetto selezionato vmSkuSize. Se questo errore si verifica, tornare al file azuredeploy.json e aggiornare il valore predefinito del vmSkuSize parametro. In questo caso, è consigliabile provare "Standard_DS1_v2").

Tracciare il grafico delle metriche

  1. Accedere al portale di Azure.

  2. Nel menu a sinistra selezionare Monitoraggio.

  3. Nella pagina Monitoraggio selezionare Metriche.

    Screenshot that shows the Metrics page.

  4. Modificare il periodo di aggregazione in Ultimi 30 minuti.

  5. Nel menu a discesa della risorsa selezionare la macchina virtuale creata. Se non si è modificato il nome nel modello, deve essere SimpleWinVM2.

  6. Nell'elenco a discesa spazi dei nomi selezionare azure.vm.windows.guestmetrics.

  7. Nell'elenco a discesa metriche selezionare Memory%Committed Bytes in Use (Memoria%Byte commit in usa).

Passaggi successivi

Altre informazioni sulle metriche personalizzate.