Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las métricas de la plataforma de cuentas de Azure Batch proporcionan información sobre pools, nodos, núcleos, trabajos y tareas. Para monitorizar el rendimiento del sistema operativo invitado, como el uso de CPU, memoria, disco y red, instala Azure Monitor Agent (AMA) en los nodos de cómputo del pool.
En este artículo se muestra cómo:
- Crea un pool por lotes con una identidad gestionada asignada por el usuario y un AMA.
- Crea una regla de recopilación de datos (DCR) para contadores de rendimiento de Linux y Syslog.
- Asocia el DCR con el recurso del grupo de Batch.
- Verifica datos en Log Analytics y Azure Monitor Metrics.
Los ejemplos utilizan CLI de Azure y un pool de Linux. La misma arquitectura admite agrupaciones de Windows con la extensión AMA para Windows y orígenes de datos de Windows.
Importante
La supervisión de los nodos de proceso del grupo de Batch con AMA solo es compatible con las cuentas de Batch que usan el modo de asignación de grupos de la suscripción del usuario. En el modo de asignación de pools de servicios por lotes, los nodos de cómputo se crean en suscripciones gestionadas por lotes a las que los clientes no pueden acceder.
Cómo funciona la monitorización de nodos
Un pool por lotes monitorizado utiliza los siguientes recursos:
- Una cuenta de Batch en modo de asignación de grupos de la suscripción del usuario.
- Un pool de lotes que tenga una identidad gestionada asignada por el usuario.
- La extensión de Azure Monitor Agent se instala cuando se crea el grupo.
- Un DCR que especifica los datos a recoger y los destinos.
- Una asociación DCR cuyo objetivo es el recurso Azure Resource Manager para el pool de lotes.
- Un espacio de trabajo de Log Analytics para datos de log y, opcionalmente, Azure Monitor Metrics para métricas invitadas.
Asocia el DCR con el identificador de recurso del grupo de Batch:
/subscriptions/<subscription-id>/resourceGroups/<resource-group>/
providers/Microsoft.Batch/batchAccounts/<batch-account>/pools/<pool-name>
No asocies el DCR solo con el conjunto de escalado de la máquina virtual que crea Batch para el pool. Batch gestiona el ciclo de vida de ese conjunto de escalas. Cuando un pool escala a cero nodos, Batch puede eliminar el conjunto de escalas y crear uno nuevo durante un redimensionamiento posterior.
Los registros de Log Analytics conservan el ID de recurso del recurso de cómputo creado por lotes. Las métricas de invitado están disponibles en el conjunto de escalado de máquinas virtuales actual creado por Batch en el espacio de nombres azure.vm.linux.guestmetrics para Linux o en el espacio de nombres Virtual Machine Guest (Windows) para Windows.
Prerequisites
Antes de comenzar, necesita lo siguiente:
- Una cuenta de Azure Batch en modo de asignación de pool de suscripción de usuarios.
- Permiso para crear pools usando el plano de gestión por lotes.
- Un área de trabajo de Log Analytics.
- Una identidad gestionada asignada por el usuario en el mismo tenant de Microsoft Entra que la cuenta por lotes.
- Permiso para crear DCR y asociaciones de DCR. Para más detalles, consulta Crear y editar reglas de recogida de datos en Azure Monitor.
- CLI de Azure instalado y autenticado en la suscripción.
Cree el DCR, el área de trabajo de Log Analytics y el grupo de Batch en la misma región de Azure. Si el pool utiliza una red virtual con acceso saliente restringido, revisa los requisitos de red de Azure Monitor Agent.
Tip
Los pools con extensiones deben usar la Configuración de Máquina Virtual. No puedes añadir extensiones a una piscina existente. Para añadir, eliminar o actualizar AMA, crea un nuevo pool. Para obtener más información, consulta Uso de extensiones con pools de Batch.
Establecimiento de variables de entorno
Establece variables para tus recursos. Reemplace los valores de marcador de posición.
subscriptionId="<subscription-id>"
resourceGroup="<resource-group>"
location="<location>"
batchAccount="<batch-account-name>"
poolName="<pool-name>"
workspaceName="<log-analytics-workspace-name>"
identityName="<managed-identity-name>"
dcrName="<data-collection-rule-name>"
az account set --subscription "$subscriptionId"
identityId=$(az identity show \
--resource-group "$resourceGroup" \
--name "$identityName" \
--query id \
--output tsv)
workspaceId=$(az monitor log-analytics workspace show \
--resource-group "$resourceGroup" \
--workspace-name "$workspaceName" \
--query id \
--output tsv)
batchAccountId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Batch/batchAccounts/$batchAccount"
poolResourceId="$batchAccountId/pools/$poolName"
dcrId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Insights/dataCollectionRules/$dcrName"
Creación de una regla de recopilación de datos
La siguiente regla de recopilación de datos (DCR) recopila los contadores de rendimiento comunes de Linux cada 60 segundos. Envía los contadores tanto a la Perf tabla de Log Analytics como de Azure Monitor Metrics. También envía registros de advertencia y de mayor severidad de Syslog a Log Analytics.
Azure Monitor Metrics como destino para contadores de rendimiento de invitados está en vista previa. Para las limitaciones actuales, consulte Recoger contadores de rendimiento con Azure Monitor Agent.
Crea un archivo llamado dcr.json. Reemplace <location> y <workspace-resource-id> con sus valores.
{
"location": "<location>",
"kind": "Linux",
"properties": {
"dataSources": {
"performanceCounters": [
{
"name": "batchNodePerformance",
"streams": [
"Microsoft-Perf",
"Microsoft-InsightsMetrics"
],
"samplingFrequencyInSeconds": 60,
"counterSpecifiers": [
"\\Processor(*)\\% Processor Time",
"\\Processor(*)\\% User Time",
"\\Processor(*)\\% Privileged Time",
"\\Processor(*)\\% Idle Time",
"\\Memory\\% Available Memory",
"\\Memory\\Used Memory MBytes",
"\\Memory\\% Used Memory",
"\\Logical Disk(*)\\% Free Space",
"\\Logical Disk(*)\\Free Megabytes",
"\\Logical Disk(*)\\Disk Reads/sec",
"\\Logical Disk(*)\\Disk Writes/sec",
"\\Logical Disk(*)\\Disk Read Bytes/sec",
"\\Logical Disk(*)\\Disk Write Bytes/sec",
"\\Network(*)\\Total Bytes Transmitted",
"\\Network(*)\\Total Bytes Received",
"\\Network(*)\\Total Bytes",
"\\System\\Uptime"
]
}
],
"syslog": [
{
"name": "batchNodeSyslog",
"streams": [
"Microsoft-Syslog"
],
"facilityNames": [
"auth",
"authpriv",
"cron",
"daemon",
"kern",
"syslog",
"user"
],
"logLevels": [
"Warning",
"Error",
"Critical",
"Alert",
"Emergency"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"name": "batchMonitorWorkspace",
"workspaceResourceId": "<workspace-resource-id>"
}
],
"azureMonitorMetrics": {
"name": "azureMonitorMetrics-default"
}
},
"dataFlows": [
{
"streams": [
"Microsoft-Perf"
],
"destinations": [
"batchMonitorWorkspace"
]
},
{
"streams": [
"Microsoft-InsightsMetrics"
],
"destinations": [
"azureMonitorMetrics-default"
]
},
{
"streams": [
"Microsoft-Syslog"
],
"destinations": [
"batchMonitorWorkspace"
]
}
]
}
}
Crea o actualiza el DCR:
az rest \
--method put \
--url "https://management.azure.com${dcrId}?api-version=2022-06-01" \
--body @dcr.json
Para obtener información sobre cómo seleccionar contadores y controlar el coste de ingestión, consulte Recopilación de contadores de rendimiento con Azure Monitor Agent.
Crea un pool con Azure Monitor Agent
Crea un archivo llamado pool.json. El siguiente ejemplo utiliza Ubuntu 22.04 e instala la extensión AMA para Linux. Sustituye <managed-identity-resource-id> por el valor de $identityId.
{
"name": "<pool-name>",
"type": "Microsoft.Batch/batchAccounts/pools",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<managed-identity-resource-id>": {}
}
},
"properties": {
"vmSize": "STANDARD_D2S_V3",
"taskSlotsPerNode": 1,
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts",
"version": "latest"
},
"nodeAgentSkuId": "batch.node.ubuntu 22.04",
"extensions": [
{
"name": "AzureMonitorAgent",
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorLinuxAgent",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"authentication": {
"managedIdentity": {
"identifier-name": "mi_res_id",
"identifier-value": "<managed-identity-resource-id>"
}
}
}
}
]
}
},
"scaleSettings": {
"fixedScale": {
"targetDedicatedNodes": 1,
"targetLowPriorityNodes": 0,
"resizeTimeout": "PT15M"
}
}
}
}
Crea el pool usando la API de gestión por lotes:
az rest \
--method put \
--url "https://management.azure.com${poolResourceId}?api-version=2024-07-01" \
--body @pool.json
Para un pool de Windows, utiliza:
- Tipo de extensión
AzureMonitorWindowsAgent. - Una imagen de Windows y un SKU compatible con un agente de nodos Batch.
- Un DCR de Windows con
kindconfigurado enWindows. - Contadores de rendimiento de Windows y, si es necesario, la recopilación de eventos de Windows en lugar de Syslog.
No uses un DCR para los contadores de Windows y Linux. Algunos nombres de contadores pueden corresponder a la misma métrica y provocar una recopilación duplicada.
Asociar el DCR con el grupo de nodos
Crea la asociación en el recurso de la piscina por lotes:
az monitor data-collection rule association create \
--name "batch-pool-monitoring" \
--resource "$poolResourceId" \
--rule-id "$dcrId"
Confirma la asociación:
az monitor data-collection rule association list \
--resource "$poolResourceId" \
--output table
La asociación permanece en el pool cuando se eliminan o reemplazan nodos. No lo sustituyas por una asociación que se dirija solo al conjunto de escalado de máquinas virtuales actual creado por Batch.
Verificar el agente y la recopilación de registros
Permite hasta cinco minutos después de que el nodo alcance el estado de reposo para que lleguen los primeros registros.
Verifica el latido del agente
Ejecuta la siguiente consulta en el espacio de trabajo de Log Analytics:
Heartbeat
| where TimeGenerated > ago(30m)
| summarize
Samples = count(),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated),
AgentVersion = any(Version)
by Computer, _ResourceId
Un agente operativo normalmente envía un latido cada minuto.
Verificar contadores de rendimiento
Perf
| where TimeGenerated > ago(30m)
| summarize
Samples = count(),
Average = avg(CounterValue),
P95 = percentile(CounterValue, 95),
Maximum = max(CounterValue)
by Computer, ObjectName, CounterName, InstanceName
| order by ObjectName asc, CounterName asc
Los contadores lógicos de discos de Linux incluyen múltiples instancias de punto de montaje. Filtra por InstanceName al crear gráficos o alertas para que los montajes de solo lectura y los montajes temporales no distorsionen el resultado.
Verificar Syslog
Syslog
| where TimeGenerated > ago(30m)
| project
TimeGenerated,
Computer,
Facility,
SeverityLevel,
ProcessName,
SyslogMessage,
_ResourceId
| order by TimeGenerated desc
Ver métricas de invitados
Si el DCR envía el flujo Microsoft-InsightsMetrics al destino Métricas de Azure Monitor, las métricas de invitado aparecen en el actual conjunto de escalado de máquinas virtuales creado por Batch.
- En el portal de Azure, abre el conjunto de escalado de la máquina virtual que Batch creó para el pool.
- Seleccione Métricas.
- Para el Espacio de Nombres Métrico, selecciona
azure.vm.linux.guestmetricsLinux o Invitado a la Máquina Virtual (Windows) para Windows. - Selecciona una métrica y agrega.
Puedes localizar el ID actual del recurso de cómputo a partir de registros recientes Perf :
Perf
| where TimeGenerated > ago(30m)
| summarize arg_max(TimeGenerated, _ResourceId) by Computer
Note
Cuando un pool escala a cero nodos, Batch puede eliminar su conjunto de escalas de la máquina virtual de respaldo. El recurso de métrica invitada no está disponible mientras que el conjunto de escalas no existe. Los datos de Log Analytics ya recogidos en el espacio de trabajo siguen disponibles según la configuración de retención del espacio de trabajo.
Supervisar las métricas de la plataforma Batch usando datos de nodos
Los datos de invitados de nodos complementan las métricas de la plataforma de cuentas por lotes recogidas automáticamente. Utiliza ambas fuentes:
- Utiliza métricas de cuenta por lotes como
TotalNodeCount,RunningNodeCount,IdleNodeCount,UnusableNodeCount,TaskStartEvent, , yTaskCompleteEventpara monitorizar el estado del servicio y la programación. - Utiliza contadores de rendimiento invitados para investigar las condiciones de CPU, memoria, disco y red en los nodos de cómputo.
- Use los registros del servicio Batch para correlacionar eventos del ciclo de vida del grupo, trabajo y tarea con el comportamiento de los nodos.
Para definiciones de métricas y orientación de agregación, consulta Azure Batch monitoring data reference y Monitor Azure Batch.
Solución de problemas de recopilación de datos
Utiliza las siguientes comprobaciones cuando los datos no lleguen:
| Síntoma | Comprobaciones |
|---|---|
| No hay latido | Confirma que la extensión AMA se ha aprovisionado correctamente, que la identidad asignada por el usuario está vinculada al pool y referenciada en la configuración de la extensión, y que los endpoints requeridos de Azure Monitor son accesibles. |
| AMA informa que el recurso no está asociado con un DCR | Confirme que la asociación de DCR tiene como destino el identificador del recurso del grupo de lotes. Una asociación solo en el conjunto de escalas de máquinas virtuales de respaldo no sustituye a la asociación de pool. |
Heartbeat llega pero Perf está vacío |
Confirma que Microsoft-Perf está presente tanto en la fuente de datos de contadores de rendimiento como en un flujo de datos que tiene como destino Log Analytics. Comprueba las rutas de acceso de los contadores y el tipo de sistema operativo de DCR. |
| El espacio de nombres de métricas invitadas no está disponible | Confirma que Microsoft-InsightsMetrics apunta a azureMonitorMetrics-default, deja pasar varios minutos para que se complete la agregación y confirma que el grupo tiene actualmente nodos y un conjunto de escalado de respaldo. |
| Registros duplicados | Revisa múltiples DCR que recopilen los mismos datos del pool. La recopilación duplicada aumenta el coste de ingesta. |
Para ubicaciones de registros AMA y requisitos de disco, consulta Azure Monitor Agent requirements. Para asignación por lotes y fallos de nodos, véase Azure Batch pool y errores de nodo.
Consideraciones sobre los costos
Los cargos de Azure Monitor pueden aplicarse a la ingestión, retención, alertas y otras funciones habilitadas de Log Analytics. Para controlar el coste:
- Recoge solo los contadores y registros necesarios para tus objetivos de monitorización.
- Utiliza una frecuencia de muestreo adecuada para tu carga de trabajo.
- Filtra los datos de disco por instancias de punto de montaje relevantes en consultas y alertas.
- Evita asociar los DCR superpuestos con el mismo grupo.
- Revise la configuración de retención del área de trabajo.
Para más información, consulta Costes y uso de Azure Monitor y Planificación para administrar los costes de Azure Batch.
Limpieza de recursos
Cuando ya no necesites el pool monitorizado, elimina el pool y cualquier recurso de monitorización que no se comparta con otras cargas de trabajo.
Para mantener la configuración del pool sin seguir ejecutando nodos de cálculo, redimensiona el pool a cero:
az batch account login \
--resource-group "$resourceGroup" \
--name "$batchAccount"
az batch pool resize \
--pool-id "$poolName" \
--target-dedicated-nodes 0 \
--target-low-priority-nodes 0
Reducir a cero puede eliminar el conjunto de escalado de máquinas virtuales subyacente. Los datos ya almacenados en Log Analytics siguen disponibles según la configuración de retención del espacio de trabajo.