Monitorování výpočetních uzlů fondu Azure Batch pomocí agenta Azure Monitor

Metriky platformy účtu Azure Batch poskytují informace o fondech, uzlech, jádrech, úlohách a úkolech. Pro monitorování výkonu hostujícího operačního systému, jako je využití CPU, paměti, disku a sítě, nainstalujte Azure Monitor Agent (AMA) na výpočetní uzly poolu.

V tomto článku se dozvíte, jak:

  • Vytvořte fond služby Batch se spravovanou identitou přiřazenou uživatelem a AMA.
  • Vytvořte pravidlo pro sběr dat (DCR) pro výkonnostní čítače Linuxu a Syslog.
  • Spojte DCR se zdrojem Batch poolu.
  • Ověřujte data v Log Analytics a Azure Monitor Metrics.

Příklady používají Azure CLI a Linux pool. Stejná architektura podporuje Windows pooly s rozšířením Windows AMA a zdroji dat Windows.

Important

Monitorování výpočetních uzlů fondu Batch pomocí AMA je podporováno pouze pro účty Batch, které používají režim přidělování fondu uživatelského předplatného. V režimu přidělování fondu ve službě Batch jsou výpočetní uzly vytvářeny v předplatných spravovaných službou Batch, ke kterým zákazníci nemají přístup.

Jak funguje monitorování uzlů

Monitorovaný fond Batch používá následující prostředky:

  • Účet Batch v režimu přidělování fondu uživatelského předplatného.
  • Dávkový pool, který má uživatelem přiřazenou spravovanou identitu.
  • Rozšíření Azure Monitor Agent se nainstaluje při vytvoření poolu.
  • DCR, který určuje data, která se mají shromažďovat, a cílová umístění.
  • DCR asociace, jejímž cílem je Batch pool Azure Resource Manager resource.
  • Pracovní prostor Log Analytics pro data z logů a volitelně Azure Monitor Metrics pro hostovské metriky.

Přiřaďte DCR k ID zdroje dávkového poolu:

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

Nespojujte DCR pouze s škálovací sadou virtuálního stroje, kterou Batch vytváří pro pool. Batch spravuje životní cyklus této škálovací sady. Když se pool škáluje na nulu uzlů, Batch může smazat škálovací sadu a vytvořit novou při pozdějším změně.

Záznamy Log Analytics uchovávají ID zdroje generovaného dávkovým výpočetním zdrojem. Metriky hostovaného systému jsou k dispozici v aktuální škálovací sadě virtuálních počítačů vytvořené službou Batch v azure.vm.linux.guestmetrics jmenném prostoru pro Linux nebo v Virtual Machine Guest (Windows) jmenném prostoru pro Windows.

Předpoklady

Než začnete, potřebujete:

Vytvořte DCR, pracovní prostor Log Analytics a Batch pool ve stejném Azure regionu. Pokud pool používá virtuální síť s omezeným odchozím přístupem, zkontrolujte požadavky na síť Azure Monitor Agent.

Tip

Pooly s rozšířeními musí používat konfiguraci virtuálních strojů. Rozšíření do existujícího poolu nemůžete přidávat. Pro přidání, odstranění nebo aktualizaci AMA vytvořte nový pool. Pro více informací viz Použít rozšíření s dávkovými pooly.

Nastavení proměnných prostředí

Nastavte proměnné pro své zdroje. Nahraďte zástupné hodnoty.

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"

Vytvoření pravidla shromažďování dat

Následující pravidlo shromažďování dat (DCR) shromažďuje běžné čítače výkonu systému Linux každých 60 sekund. Odesílá čítače jak do tabulky Perf v Log Analytics, tak v Azure Monitor Metrics. Také posílá varovné a závažnější Syslog záznamy do Log Analytics.

Azure Monitor Metrics jako cíl pro čítače výkonu hostovaného systému je ve verzi Preview. Pro aktuální omezení viz Sběr výkonnostních čítačů pomocí Azure Monitor Agent.

Vytvořte soubor s názvem dcr.json. Nahraďte <location> a <workspace-resource-id> svými hodnotami.

{
  "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"
        ]
      }
    ]
  }
}

Vytvořte nebo aktualizujte DCR:

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

Informace o výběru čítačů a řízení nákladů na ingestaci dat najdete v tématu Sběr výkonnostních čítačů pomocí Azure Monitor Agent.

Vytvoření fondu s agentem Azure Monitor

Vytvořte soubor s názvem pool.json. Následující příklad je uveden pro Ubuntu 22.04 a nainstaluje rozšíření AMA pro Linux. Nahraďte $poolName hodnotou <pool-name> a <managed-identity-resource-id> hodnotou $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"
      }
    }
  }
}

Vytvořte pool pomocí Batch management API:

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

Pro Windows pool použijte:

  • typ rozšíření AzureMonitorWindowsAgent.
  • Bitová kopie systému Windows a kompatibilní SKU agenta výpočetního uzlu Batch.
  • Windows DCR, ve kterém je kind nastaveno na Windows.
  • Čítače výkonu systému Windows a v případě potřeby shromažďování událostí systému Windows místo Syslogu.

Nepoužívejte jeden DCR pro čítače ve Windows i Linuxu. Některé názvy čítačů mohou odkazovat na stejnou metriku a způsobit duplicitní sběr dat.

Spojte DCR s dávkovým poolem

Vytvořte asociaci na zdroji Batch pool:

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

Potvrďte spojení:

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

Asociace zůstává v poolu, když jsou uzly odstraněny nebo nahrazeny. Nenahrazujte ho asociací, která cílí pouze na aktuální škálovací sadu virtuálních strojů vytvořených v Batch.

Ověřujte agenta a sběr logů

Počkejte až pět minut poté, co uzel přejde do nečinného stavu, než dorazí první záznamy.

Ověřte srdeční tep agenta

Spusť následující dotaz v pracovním prostoru Log Analytics:

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

Operační agent obvykle pošle jeden tep za minutu.

Ověřte výkonnostní čítače

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

Čítače logických disků v systému Linux zahrnují více instancí přípojných bodů. Filtrujte podle InstanceName při vytváření grafů nebo výstrah, aby připojení jen pro čtení a dočasná připojení nezkreslovala výsledek.

Ověřte Syslog

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

Zobrazit metriky hostů

Pokud DCR odešle datový proud Microsoft-InsightsMetrics do cíle Azure Monitor Metrics, metriky hostovaného operačního systému se zobrazí v aktuální sadě škálování virtuálních počítačů vytvořené službou Batch.

  1. V portálu Azure otevřete škálovací sadu virtuálních strojů, kterou Batch vytvořil pro pool.
  2. Vyberte Metriky.
  3. Pro metrický jmenný prostor vyberte azure.vm.linux.guestmetrics pro Linux nebo virtuální stroj host (Windows) pro Windows.
  4. Vyberte metriku a agregaci.

Aktuální ID výpočetního zdroje najdete v nedávných Perf záznamech:

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

Note

Když se pool škáluje na nulový počet uzlů, Batch může odstranit podkladovou sadu škálování virtuálních počítačů. Zdroj pro hostovské metriky není dostupný, zatímco škálovací sada neexistuje. Data Log Analytics, již shromážděná v pracovním prostoru, zůstávají dostupná podle nastavení retenci pracovního prostoru.

Monitorovat metriky platformy Batch pomocí dat uzlů

Data hostů uzlů doplňují automaticky sbírané metriky platformy Batch účtu. Použijte oba zdroje:

  • Použijte metriky účtu Batch, například TotalNodeCount, RunningNodeCount, IdleNodeCount, UnusableNodeCount, TaskStartEvent a TaskCompleteEvent, ke sledování stavu služby a plánování.
  • Použijte výkonnostní čítače hostů k prozkoumání podmínek CPU, paměti, disku a sítě na výpočetních uzlech.
  • Použijte batchové servisní logy ke korelaci událostí poolu, úkolu a životního cyklu úkolu s chováním uzlů.

Pro definice metrik a pokyny k agregaci viz Azure Batch monitoring data reference a Monitor Azure Batch.

Řešení potíží se shromažďováním dat

Použijte následující kontroly, když data nepřicházejí:

Symptom Kontroly
Žádný prezenční signál Potvrďte, že rozšíření AMA bylo úspěšně nastaveno, že uživatelem přiřazená identita je připojena k poolu a odkazována v nastavení rozšíření a že požadované endpointy Azure Monitor jsou dostupné.
AMA uvádí, že zdroj není spojen s DCR Potvrďte, že asociace DCR cílí na ID zdroje dávkového poolu. Přidružení pouze u podkladové sady škálování virtuálních počítačů nenahrazuje přidružení k fondu.
Přichází Heartbeat, ale Perf je prázdný Potvrďte, že je přítomen Microsoft-Perf jak ve zdroji dat pro počítadlo výkonnosti, tak v datovém toku, který cílí na Log Analytics. Zkontrolujte cesty k čítačům a typ operačního systému DCR.
Jmenný prostor pro hostující metriky není dostupný Potvrďte, že Microsoft-InsightsMetrics cílí na azureMonitorMetrics-default, počkejte několik minut na agregaci a ověřte, že fond má v současnosti uzly a podkladovou sadu škálování.
Duplicitní záznamy Zkontrolujte, zda více DCR sbírá stejná data z poolu. Duplicitní sběr zvyšuje náklady na příjem dat.

Pro umístění logů AMA a požadavky na disk viz požadavky Azure Monitor Agent. Informace o přidělování prostředků ve službě Batch a selháních uzlů najdete v článku Chyby fondů a uzlů Azure Batch.

Důležité informace o nákladech

Na Azure Monitor se můžou vztahovat poplatky za příjem dat do Log Analytics, uchovávání dat, upozornění a další povolené funkce. Pro kontrolu nákladů:

  • Sbírejte pouze čítače a záznamy potřebné pro vaše monitorovací cíle.
  • Používejte frekvenci vzorkování odpovídající vaší pracovní zátěži.
  • Filtrujte disková data podle relevantních instancí přípojných bodů v dotazech a upozorněních.
  • Vyhněte se přiřazování překrývajících se DCR ke stejnému fondu.
  • Zkontrolujte nastavení uchovávání pracovních prostorů.

Pro více informací viz náklady a využití Azure Monitor a Plánujte řízení nákladů pro Azure Batch.

Vyčistěte zdroje

Když už monitorovaný pool nepotřebujete, smažte ho a všechny monitorovací zdroje, které nejsou sdíleny s jinými pracovními zátěžemi.

Chcete-li zachovat konfiguraci poolu, aniž by výpočetní uzly dále běžely, změňte velikost poolu na nulu:

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

Škálování na nulu může odstranit podkladovou sadu škálování virtuálního stroje. Data již uložená v Log Analytics zůstávají dostupná podle nastavení uchovávání pracovního prostoru.