Monitore os nós de computação do pool do Lote do Azure com o Azure Monitor Agent

As métricas da plataforma da conta do Lote do Azure fornecem informações sobre pools, nós, núcleos, trabalhos e tarefas. Para monitorar o desempenho do sistema operacional convidado, como CPU, memória, disco e uso de rede, instale o Azure Monitor Agent (AMA) nos nós de computação do pool.

Este artigo mostra como:

  • Crie um pool de lote com uma identidade gerenciada atribuída pelo usuário e AMA.
  • Crie uma regra de coleta de dados (DCR) para contadores de desempenho do Linux e Syslog.
  • Associe o DCR ao recurso do pool de lote.
  • Verifique dados no Log Analytics e no Azure Monitor Metrics.

Os exemplos usam CLI do Azure e um pool Linux. A mesma arquitetura suporta pools do Windows com a extensão Windows AMA e fontes de dados do Windows.

Importante

O monitoramento de nós de computação em pool Batch com AMA é suportado apenas para contas Batch que utilizam o modo de alocação de pool de assinaturas de usuários . No modo de alocação de pool do serviço Batch, os nós de computação são criados em assinaturas gerenciadas pelo Batch, às quais os clientes não têm acesso.

Como funciona o monitoramento de nós

Um pool de lotes monitorado utiliza os seguintes recursos:

  • Uma conta em lote no modo de alocação de pool de assinaturas de usuários.
  • Um pool do Batch que tem uma identidade gerenciada atribuída pelo usuário.
  • A extensão do Azure Monitor Agent que é instalada quando o pool é criado.
  • Um DCR que especifica os dados a serem coletados e os destinos.
  • Uma associação DCR cujo alvo é o recurso Azure Resource Manager do Batch pool.
  • Um espaço de trabalho do Log Analytics para dados de log e, opcionalmente, o Azure Monitor Metrics para métricas de convidado.

Associe o DCR ao ID do recurso do pool de lote:

/subscriptions/<subscription-id>/resourceGroups/<resource-group>/
providers/Microsoft.Batch/batchAccounts/<batch-account>/pools/<pool-name>

Não associe o DCR apenas ao conjunto de dimensionamento de máquinas virtuais que o Batch cria para o pool. O Batch gerencia o ciclo de vida desse conjunto de dimensionamento. Quando um pool escala para zero nós, o Batch pode excluir o conjunto de escala e criar um novo durante uma redimensionação posterior.

Os registros do Log Analytics mantêm o ID de recurso do recurso computacional criado em lote. As métricas de convidado estão disponíveis no conjunto de dimensionamento de máquinas virtuais atual criado pelo Batch no namespace azure.vm.linux.guestmetrics para Linux ou no namespace Virtual Machine Guest (Windows) para Windows.

Pré-requisitos

Antes de começar, você precisa de:

Crie a DCR, o espaço de trabalho do Log Analytics e o pool do Batch na mesma região do Azure. Se o pool usa uma rede virtual com acesso restrito de saída, revise os requisitos de rede do Azure Monitor Agent.

Dica

Pools com extensões devem usar a Configuração de Máquina Virtual. Você não pode adicionar extensões a uma piscina existente. Para adicionar, remover ou atualizar AMA, crie um novo pool. Para mais informações, veja Usar extensões com pools do Batch.

Definir variáveis de ambiente

Defina variáveis para seus recursos. Substitua os valores de espaço reservado.

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"

Criar uma regra de coleta de dados

A seguinte regra de coleta de dados (DCR) coleta contadores de desempenho comuns do Linux a cada 60 segundos. Ele envia os contadores tanto para a tabela Perf no Log Analytics quanto para o Azure Monitor Metrics. Também envia registros de aviso e de maior severidade do Syslog para a Log Analytics.

Azure Monitor Metrics como destino para contadores de desempenho do convidado está em versão prévia. Para as limitações atuais, veja Coletar contadores de desempenho com o Azure Monitor Agent.

Crie um arquivo chamado dcr.json. Substitua <location> e <workspace-resource-id> por seus 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"
        ]
      }
    ]
  }
}

Crie ou atualize o DCR:

az rest \
  --method put \
  --url "https://management.azure.com${dcrId}?api-version=2022-06-01" \
  --body @dcr.json

Para obter informações sobre como selecionar contadores e controlar o custo de ingestão, consulte Coletar contadores de desempenho com o Azure Monitor Agent.

Crie um pool com o Azure Monitor Agent

Crie um arquivo chamado pool.json. O exemplo a seguir usa o Ubuntu 22.04 e instala a extensão AMA para Linux. Substitua <managed-identity-resource-id> pelo 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"
      }
    }
  }
}

Crie o pool usando a API de gerenciamento de lotes:

az rest \
  --method put \
  --url "https://management.azure.com${poolResourceId}?api-version=2024-07-01" \
  --body @pool.json

Para um pool do Windows, use:

  • Tipo de extensão AzureMonitorWindowsAgent.
  • Uma imagem do Windows e um SKU Batch node agent compatível.
  • Um DCR do Windows com kind definido para Windows.
  • Contadores de desempenho do Windows e, se necessário, coleta de eventos do Windows em vez do Syslog.

Não use o mesmo DCR para os contadores do Windows e do Linux. Alguns nomes de contadores podem corresponder à mesma métrica e causar coleta em duplicidade.

Associe o DCR ao pool de lotes

Crie a associação no recurso de pool do Batch:

az monitor data-collection rule association create \
  --name "batch-pool-monitoring" \
  --resource "$poolResourceId" \
  --rule-id "$dcrId"

Confirme a associação:

az monitor data-collection rule association list \
  --resource "$poolResourceId" \
  --output table

A associação permanece no pool quando os nós são removidos ou substituídos. Não o substitua por uma associação que se aplique apenas ao conjunto de dimensionamento de máquinas virtuais atual criado pelo Batch.

Verificar a coleta de agentes e registros

Espere até cinco minutos após o nó atingir o estado ocioso para que os primeiros registros cheguem.

Verifique o batimento cardíaco do agente

Execute a seguinte consulta no espaço de trabalho Log Analytics:

Heartbeat
| where TimeGenerated > ago(30m)
| summarize
    Samples = count(),
    FirstSeen = min(TimeGenerated),
    LastSeen = max(TimeGenerated),
    AgentVersion = any(Version)
    by Computer, _ResourceId

Um agente operacional normalmente envia um batimento cardíaco a cada minuto.

Verificar contadores de desempenho

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

Contadores lógicos de disco Linux incluem múltiplas instâncias de pontos de montagem. Filtre por InstanceName ao criar gráficos ou alertas para que montagens somente para leitura e montagens temporárias não distorçam o resultado.

Verificar Syslog

Syslog
| where TimeGenerated > ago(30m)
| project
    TimeGenerated,
    Computer,
    Facility,
    SeverityLevel,
    ProcessName,
    SyslogMessage,
    _ResourceId
| order by TimeGenerated desc

Veja métricas de convidados

Se o DCR enviar o Microsoft-InsightsMetrics fluxo de dados para o destino Azure Monitor Metrics, as métricas do convidado aparecerão no conjunto de dimensionamento de máquinas virtuais atual criado pelo Batch.

  1. No portal do Azure, abra o conjunto de dimensionamento de máquinas virtuais que o Batch criou para o pool.
  2. Selecione Métricas.
  3. Para Namespace de Métrica, selecione azure.vm.linux.guestmetrics para Linux ou Máquina Virtual Convidada (Windows) para Windows.
  4. Selecione uma métrica e faça a agregação.

Você pode localizar o ID atual do recurso de computação a partir de registros recentes Perf :

Perf
| where TimeGenerated > ago(30m)
| summarize arg_max(TimeGenerated, _ResourceId) by Computer

Note

Quando um pool escala para zero nós, o Batch pode excluir seu conjunto de escalas de máquina virtual de backup. O recurso de métrica convidada não está disponível enquanto o conjunto de escala não existe. Os dados do Log Analytics já coletados no espaço de trabalho permanecem disponíveis de acordo com as configurações de retenção do espaço.

Monitore métricas de plataforma Batch com dados de nós

Os dados de convidados do nó complementam as métricas coletadas automaticamente da plataforma de contas Batch. Use ambas as fontes:

  • Use métricas de conta em lote como TotalNodeCount, RunningNodeCount, IdleNodeCount, UnusableNodeCount, TaskStartEvent, , e TaskCompleteEvent para monitorar o estado do serviço e do agendamento.
  • Use contadores de desempenho convidados para investigar as condições da CPU, memória, disco e rede nos nós de computação.
  • Use logs de serviço em lote para correlacionar eventos do ciclo de vida do pool, do trabalho e da tarefa com o comportamento dos nós.

Para definições de métricas e orientações de agregação, veja Lote do Azure monitoring data reference e Monitor Lote do Azure.

Solucionar problemas de coleta de dados

Use as seguintes verificações quando os dados não chegarem:

Sintoma Verificações
Ausência de sinal de atividade Confirme que a extensão AMA foi provisionada com sucesso, que a identidade atribuída pelo usuário está anexada ao pool e referenciada nas configurações da extensão, e que os endpoints necessários do Azure Monitor estão acessíveis.
A AMA relata que o recurso não está associado a um DCR Confirme que a associação do DCR tem como alvo o ID do recurso do pool do Batch. Uma associação apenas no conjunto de dimensionamento de máquinas virtuais subjacente não substitui a associação ao pool.
O batimento cardíaco chega, mas Perf está vazio Confirme que Microsoft-Perf está presente tanto na fonte de dados de contadores de desempenho quanto em um fluxo de dados destinado ao Log Analytics. Verifique os caminhos dos contadores e o tipo de sistema operacional do DCR.
O namespace de métricas de convidado não está disponível Confirme que Microsoft-InsightsMetrics tem como destino azureMonitorMetrics-default, aguarde alguns minutos para a agregação e confirme que o pool atualmente tem nós e um conjunto de dimensionamento subjacente.
Registros duplicados Verifique se há múltiplos DCRs que coletam os mesmos dados do pool. A coleta duplicada aumenta o custo de ingestão.

Para localizações de logs AMA e requisitos de disco, veja requisitos do Azure Monitor Agent. Para alocação do Batch e falhas de nó, consulte erros de pool e de nó do Lote do Azure.

Considerações de custo

As cobranças do Azure Monitor podem se aplicar à ingestão, retenção, alertas e outros recursos habilitados do Log Analytics. Para controlar o custo:

  • Colete apenas os contadores e logs necessários para seus objetivos de monitoramento.
  • Use uma frequência de amostragem adequada para sua carga de trabalho.
  • Filtre os dados de disco por instâncias relevantes de pontos de montagem em consultas e alertas.
  • Evite associar DCRs sobrepostos ao mesmo pool.
  • Revise as configurações de retenção do espaço de trabalho.

Para mais informações, veja Azure Monitor custo e uso e Planeje para gerenciar custos para Lote do Azure.

Limpar os recursos

Quando você não precisar mais do pool monitorado, exclua o pool e quaisquer recursos de monitoramento que não sejam compartilhados com outras cargas de trabalho.

Para manter a configuração do pool sem continuar rodando nós de computação, redimensione o pool para zero:

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

Reduzir para zero pode remover o conjunto de dimensionamento de máquinas virtuais subjacente. Os dados já armazenados no Log Analytics continuam disponíveis de acordo com as configurações de retenção do espaço de trabalho.