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 Azure y las máquinas virtuales híbridas y los entrega a Azure Monitor para que los usen características, conclusiones 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 obtener más información, consulte la Información general del agente de Azure Monitor.
Los datos de rendimiento del sistema operativo invitado de las máquinas virtuales de Azure no se recopilan automáticamente como otras métricas de la plataforma. Instale la Extensión de diagnóstico 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 obtener más información sobre la configuración de la extensión de diagnósticos para recopilar métricas del SO invitado mediante Azure Portal, consulte Instalación y configuración de la extensión de Azure Diagnostics para Windows (WAD).
Si no está familiarizado con las plantillas de ARM, obtenga información sobre las implementaciones de plantilla y su estructura y sintaxis.
Prerrequisitos
- La suscripción debe estar registrada en Microsoft.Insights.
- Debe tener instalado Azure PowerShell o Azure Cloud Shell.
Configuración de Azure Monitor como receptor de datos
La extensión Azure Diagnostics usa una característica denominada receptores de datos para enrutar las métricas y los registros a distintas 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: una plantilla de ARM configurada previamente 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 quiere establecer para la VM. 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
Abra el archivo azuredeploy.parameters.json.
Especifique los valores de
adminUsername
yadminPassword
para la VM. Estos parámetros se utilizan para el acceso remoto a la VM. Para evitar el secuestro de la VM, 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 sean VM de prueba con estos valores predeterminados.Cree un
dnsname
único para la VM.
Modificación de azuredeploy.json
Abra el archivo azuredeploy.json.
Agregue un identificador de cuenta de almacenamiento a la sección
variables
de la plantilla después de la entrada parastorageAccountName
.// Find these lines. "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", // Add this line directly below. "accountid": "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
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 } } },
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": { ...
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
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.
Inicie PowerShell.
Inicio de sesión en Azure mediante
Login-AzAccount
.Obtenga una lista de suscripciones con
Get-AzSubscription
.Establezca la suscripción que se usa para crear o actualizar la máquina virtual en:
Select-AzSubscription -SubscriptionName "<Name of the subscription>"
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>"
Ejecute los comandos siguientes para implementar la máquina virtual mediante la plantilla de ARM.
Nota
Si quiere actualizar una VM 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>"
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 parámetrovmSkuSize
. En este caso, se recomienda probar"Standard_DS1_v2"
).
Gráfico de las métricas
Inicie sesión en Azure Portal.
En el menú de la izquierda, seleccione Monitor.
En la página Monitor, seleccione Métricas.
Cambie el período de agregación a Últimos 30 minutos.
En el menú desplegable de recursos, seleccione la VM que ha creado. Si no ha cambiado el nombre de la plantilla, debe ser SimpleWinVM2.
En la lista desplegable de espacios de nombres, seleccione azure.vm.windows.guestmetrics.
En la lista desplegable de métricas, seleccione Memory%Committed Bytes in Use (Memoria\bytes confirmados en uso).
Pasos siguientes
Más información acerca de las métricas personalizadas.