Compartir a través de


Envío de métricas del sistema operativo invitado de máquina virtual Windows al almacén de métricas de Azure Monitor mediante una plantilla de ARM y una extensión de diagnóstico de Windows

Nota:

El agente de Azure Monitor (AMA) recopila datos de supervisión del sistema operativo invitado de máquinas virtuales de Azure e híbridas y los entrega a Azure Monitor para su uso en funcionalidades, análisis y otros servicios, como Microsoft Sentinel y Microsoft Defender for Cloud.

Se recomienda usar el agente de Azure Monitor para recopilar registros y métricas de Virtual Machines. Para más información, consulte Introducción al agente de Azure Monitor.

Los datos de rendimiento del sistema operativo invitado de las máquinas virtuales (VM) de Azure no se recopilan automáticamente como otras métricas de la plataforma. Instale la extensión Diagnósticos de Azure Monitor para recopilar métricas del sistema operativo invitado en la base de datos de métricas para que se pueda usar con todas las características de las métricas de Azure Monitor. Estas características incluyen la generación de alertas casi en tiempo real, la creación de gráficos, el enrutamiento y el acceso desde una API de REST. En este artículo se describe el proceso de envío de métricas de rendimiento del SO invitado para una máquina virtual Windows a la base de datos de métricas mediante una plantilla de Azure Resource Manager.

Nota:

Para más información sobre cómo configurar la extensión de diagnóstico para recopilar métricas del sistema operativo invitado mediante Azure Portal, consulte Instalación y configuración de la extensión de Diagnósticos de Windows Azure (WAD).

Si no está familiarizado con las plantillas de ARM, obtenga información sobre las implementaciones de plantillas y su estructura y sintaxis.

Prerrequisitos

Configuración de Azure Monitor como receptor de datos

La extensión Azure Diagnostics usa una característica denominada receptores de datos para enrutar métricas y registros a diferentes ubicaciones. En los pasos siguientes se muestra cómo usar una plantilla de ARM y PowerShell para implementar una VM con el nuevo receptor de datos Azure Monitor.

Plantilla ARM

En este ejemplo, puede usar una plantilla de ejemplo disponible públicamente. Las plantillas de inicio están en GitHub.

  • Azuredeploy.json: plantilla de ARM preconfigurada para la implementación de una máquina virtual.
  • Azuredeploy.parameters.json: un archivo de parámetros que almacena información como el nombre de usuario y la contraseña que desea establecer para la máquina virtual. Durante la implementación, la plantilla ARM usa los parámetros establecidos en este archivo.

Descargue y guarde ambos archivos localmente.

Modificación de azuredeploy.parameters.json

  1. Abra el archivo azuredeploy.parameters.json .

  2. Especifique los valores de adminUsername y adminPassword para la VM. Estos parámetros se utilizan para el acceso remoto a la VM. Para evitar que la máquina virtual se secuestre, no use los valores de esta plantilla. Los bots buscan por Internet los nombres de usuario y las contraseñas en repositorios públicos de GitHub. Es probable que estén probando máquinas virtuales con estos valores predeterminados.

  3. Cree un dnsname único para la VM.

Modificación de azuredeploy.json

  1. Abra el archivo azuredeploy.json .

  2. Agregue un identificador de cuenta de almacenamiento a la sección variables de la plantilla después de la entrada para storageAccountName.

    // Find these lines.
    "variables": {
        "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]",
    
    // Add this line directly below.
        "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    
  3. Agregue esta extensión de Managed Service Identity (MSI) a la plantilla en la parte superior de la sección resources. La extensión garantiza que Azure Monitor acepte las métricas que se emiten.

    //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. Agregue la configuración de identity en el recurso de VM para asegurarse de que Azure asigne a la extensión MSI una identidad del sistema. Este paso garantiza que la VM pueda emitir métricas de invitado sobre sí misma a 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. Agregue la siguiente configuración para habilitar la extensión de diagnóstico en una máquina virtual Windows. En una máquina virtual sencilla basada en el Administrador de recursos, puede agregar la configuración de extensión a la matriz de recursos de la máquina virtual. La línea "sinks": "AzMonSink" y la correspondiente "SinksConfig" más adelante en la sección permiten que la extensión emita métricas directamente a Azure Monitor. No dude en agregar o quitar contadores de rendimiento según sea necesario.

            "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. Guarde y cierre ambos archivos.

Implementación de la plantilla de ARM

Nota:

Debe estar ejecutando la versión de la extensión 1.5 o superior de Azure Diagnostics y tener la propiedad autoUpgradeMinorVersion: establecida en true en la plantilla de ARM. A continuación, Azure carga la extensión adecuada cuando se inicia la VM. Si no tiene estas opciones en la plantilla, modifíquelas y vuelva a implementar la plantilla.

Para implementar la plantilla de ARM, usamos Azure PowerShell.

  1. Inicie PowerShell.

  2. Inicio de sesión en Azure mediante Login-AzAccount.

  3. Obtenga una lista de suscripciones con Get-AzSubscription.

  4. Establezca la suscripción que se usa para crear o actualizar la máquina virtual en:

    Select-AzSubscription -SubscriptionName "<Name of the subscription>"
    
  5. Para crear un nuevo grupo de recursos para la VM que se está implementando, ejecute el comando siguiente:

    New-AzResourceGroup -Name "<Name of Resource Group>" -Location "<Azure Region>"
    
  6. Ejecute los comandos siguientes para implementar la máquina virtual mediante la plantilla de ARM.

    Nota:

    Si desea actualizar una máquina virtual existente, agregue -Mode Incremental al final del comando siguiente.

    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. Una vez que la implementación se realice correctamente, la máquina virtual debe estar en Azure Portal, emitiendo métricas a Azure Monitor.

    Nota:

    Puede que surjan errores en torno al parámetro vmSkuSize seleccionado. Si se produce este error, vuelva al archivo azuredeploy.json y actualice el valor predeterminado del vmSkuSize parámetro . En este caso, se recomienda probar "Standard_DS1_v2".

Gráfico de las métricas

  1. Inicie sesión en Azure Portal.

  2. En el menú de la izquierda, seleccione Supervisar.

  3. En la página Supervisión , seleccione Métricas.

    Captura de pantalla que muestra la página Métricas.

  4. Cambie el período de agregación a Últimos 30 minutos.

  5. En el menú desplegable de recursos, seleccione la VM que ha creado. Si no cambió el nombre de la plantilla, debe ser SimpleWinVM2.

  6. En la lista desplegable espacios de nombres, seleccione azure.vm.windows.guestmetrics.

  7. En la lista desplegable de métricas, seleccione Memory%Committed Bytes in Use (Memoria\bytes confirmados en uso).

Pasos siguientes

Obtenga más información sobre las métricas personalizadas.