Pantau node komputasi kumpulan Azure Batch dengan Azure Monitor Agent

Metrik platform pada akun Azure Batch menyediakan informasi tentang pool, node, inti, job, dan tugas. Untuk memantau kinerja sistem operasi tamu, seperti penggunaan CPU, memori, disk, dan jaringan, instal Azure Monitor Agent (AMA) pada node komputasi pool.

Artikel ini menunjukkan cara:

  • Buat kumpulan Batch dengan identitas terkelola yang ditetapkan pengguna dan AMA.
  • Buat aturan pengumpulan data (DCR) untuk penghitung kinerja Linux dan Syslog.
  • Asosiasikan DCR dengan sumber daya kumpulan Batch.
  • Verifikasi data di Log Analytics dan Azure Monitor Metrics.

Contoh-contoh tersebut menggunakan Azure CLI dan pool Linux. Arsitektur yang sama juga mendukung kumpulan Windows dengan ekstensi Windows AMA dan sumber data Windows.

Important

Pemantauan node komputasi kumpulan Batch dengan AMA hanya didukung untuk akun Batch yang menggunakan mode alokasi kumpulan langganan pengguna. Dalam mode alokasi pool layanan batch, compute node dibuat dalam langganan yang dikelola secara batch yang tidak dapat diakses pelanggan.

Cara kerja pemantauan node

Pool Batch yang dipantau menggunakan sumber daya berikut:

  • Akun Batch yang berada dalam mode alokasi pool langganan pengguna.
  • Pool Batch yang memiliki identitas terkelola yang ditetapkan pengguna.
  • Ekstensi Azure Monitor Agent terpasang saat pool dibuat.
  • DCR yang menentukan data yang akan dikumpulkan dan tujuan.
  • Asosiasi DCR yang targetnya adalah sumber daya Batch pool Azure Resource Manager.
  • Ruang kerja Log Analytics untuk data log dan, secara opsional, Azure Monitor Metrics untuk metrik guest.

Asosiasikan DCR dengan ID sumber daya Batch pool:

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

Jangan kaitkan DCR hanya dengan set skala komputer virtual yang dibuat oleh Batch untuk pool tersebut. Batch mengelola siklus hidup set skala tersebut. Ketika sebuah pool mencapai nol node, Batch dapat menghapus set skala dan membuat yang baru saat melakukan resize di kemudian hari.

Catatan Log Analytics mempertahankan ID sumber daya dari sumber daya komputasi yang dibuat secara batch. Metrik tamu tersedia pada kumpulan skala mesin virtual yang saat ini dibuat oleh Batch dalam namespace azure.vm.linux.guestmetrics untuk Linux atau namespace Virtual Machine Guest (Windows) untuk Windows.

Prerequisites

Sebelum memulai, Anda memerlukan:

Buat DCR, workspace Log Analytics, dan pool Batch di wilayah Azure yang sama. Jika pool menggunakan jaringan virtual dengan akses keluar terbatas, tinjau persyaratan jaringan Azure Monitor Agent.

Tip

Pool dengan ekstensi harus menggunakan Virtual Machine Configuration. Anda tidak bisa menambahkan ekstensi ke pool yang sudah ada. Untuk menambah, menghapus, atau memperbarui AMA, buat pool baru. Untuk informasi lebih lanjut, lihat Menggunakan ekstensi dengan kumpulan Batch.

Mengatur variabel lingkungan

Atur variabel untuk sumber daya Anda. Ganti nilai placeholder.

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"

Membuat aturan pengumpulan data

Aturan pengumpulan data (DCR) berikut mengumpulkan penghitung kinerja Linux yang umum setiap 60 detik. Ini mengirimkan penghitung ke tabel Perf di Log Analytics dan ke Azure Monitor Metrics. Ia juga mengirimkan peringatan dan catatan Syslog dengan tingkat keparahan lebih tinggi ke Log Analytics.

Azure Monitor Metrics sebagai tujuan untuk penghitung performa tamu sedang dalam preview. Untuk batasan saat ini, lihat Kumpulkan penghitung performa dengan Azure Monitor Agent.

Buat file bernama dcr.json. Ganti <location> dan <workspace-resource-id> dengan nilai Anda.

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

Buat atau perbarui DCR:

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

Untuk informasi tentang memilih penghitung dan mengendalikan biaya pemasukan data, lihat Kumpulkan penghitung kinerja dengan Azure Monitor Agent.

Buat pool dengan Azure Monitor Agent

Buat file bernama pool.json. Contoh berikut menggunakan Ubuntu 22.04 dan menginstal ekstensi Linux AMA. Ganti <pool-name> dengan nilai , $poolNamedan ganti <managed-identity-resource-id> dengan nilai $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"
      }
    }
  }
}

Buat pool menggunakan API manajemen Batch:

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

Untuk pool Windows, gunakan:

  • Jenis ekstensi AzureMonitorWindowsAgent.
  • image Windows dan SKU agen node Batch yang kompatibel.
  • DCR Windows dengan kind diatur ke Windows.
  • Penghitung performa Windows dan, jika diperlukan, pengumpulan event Windows sebagai pengganti Syslog.

Jangan gunakan satu DCR untuk counter Windows dan Linux. Beberapa nama penghitung dapat merujuk ke metrik yang sama dan menyebabkan pengumpulan ganda.

Kaitkan DCR dengan kumpulan Batch

Buat asosiasi pada sumber daya Batch pool:

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

Konfirmasikan asosiasi:

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

Asosiasi tetap ada di pool saat node dihapus atau diganti. Jangan menggantinya dengan asosiasi yang hanya menargetkan set skala mesin virtual saat ini yang dibuat oleh Batch.

Periksa agen dan pengumpulan log

Tunggu hingga lima menit setelah node mencapai status idle hingga catatan pertama masuk.

Verifikasi detak jantung agen

Jalankan kueri berikut di ruang kerja Log Analytics:

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

Agen operasional biasanya mengirimkan satu detak jantung setiap menit.

Verifikasi penghitung kinerja

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

Penghitung disk logis Linux mencakup beberapa instance titik pemasang. Terapkan filter pada InstanceName saat membuat grafik atau peringatan agar mount baca-saja dan mount sementara tidak memengaruhi hasil.

Verifikasi Syslog

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

Lihat metrik tamu

Jika DCR mengirim aliran Microsoft-InsightsMetrics ke tujuan Azure Monitor Metrics, metrik tamu akan muncul pada kumpulan skala mesin virtual yang saat ini dibuat oleh Batch.

  1. Pada portal Azure, buka kumpulan skala komputer virtual yang dibuat oleh Batch untuk kumpulan.
  2. Pilih Metrik.
  3. Untuk Namespace Metric, pilih azure.vm.linux.guestmetrics untuk Linux atau Virtual Machine Guest (Windows) untuk Windows.
  4. Pilih metrik dan agregasi.

Anda dapat menemukan ID sumber daya komputasi saat ini dari catatan terbaru Perf :

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

Note

Ketika sebuah pool diskalakan ke nol node, Batch dapat menghapus kumpulan skala komputer virtual yang mendasarinya. Sumber daya metrik tamu tidak tersedia selama set skala tersebut tidak ada. Data Log Analytics yang telah dikumpulkan di ruang kerja tetap tersedia sesuai pengaturan retensi ruang kerja.

Pantau metrik platform Batch dengan data node

Data tamu node melengkapi metrik platform akun Batch yang dikumpulkan secara otomatis. Gunakan kedua sumber:

  • Gunakan metrik akun batch seperti TotalNodeCount, RunningNodeCount, IdleNodeCount, UnusableNodeCount, TaskStartEvent, dan TaskCompleteEvent untuk memantau status layanan dan penjadwalan.
  • Gunakan penghitung performa tamu untuk menyelidiki kondisi CPU, memori, disk, dan jaringan pada node komputasi.
  • Gunakan log layanan batch untuk mengkorelasikan peristiwa siklus hidup pool, pekerjaan, dan tugas dengan perilaku node.

Untuk definisi metrik dan panduan agregasi, lihat referensi data pemantauan Azure Batch dan Monitor Azure Batch.

Memecahkan masalah pengumpulan data

Gunakan pemeriksaan berikut ketika data tidak tiba:

Gejala Pemeriksaan
Tidak ada detak jantung Pastikan ekstensi AMA telah diprovisionasi dengan sukses, identitas yang diberikan pengguna telah dilampirkan ke pool dan direferensikan di pengaturan ekstensi, serta endpoint Azure Monitor yang diperlukan dapat dijangkau.
AMA melaporkan bahwa sumber daya tersebut tidak terkait dengan DCR Konfirmasi bahwa asosiasi DCR menargetkan ID sumber daya Batch pool. Asosiasi yang hanya ada pada set skala mesin virtual pendukung bukanlah pengganti asosiasi dengan pool.
Detak jantung tiba tapi Perf kosong Pastikan bahwa Microsoft-Perf ada baik di sumber data penghitung kinerja maupun di alur data yang menargetkan Log Analytics. Periksa jalur penghitung dan jenis sistem operasi DCR.
Namespace metrik tamu tidak tersedia Pastikan bahwa azureMonitorMetrics-default menargetkan Microsoft-InsightsMetrics, tunggu beberapa menit agar agregasi selesai, dan pastikan bahwa kumpulan tersebut saat ini memiliki node dan kumpulan skala pendukung.
Rekaman duplikat Periksa apakah ada beberapa DCR yang mengumpulkan data yang sama dari kumpulan. Pengumpulan data duplikat meningkatkan biaya ingesti.

Untuk lokasi log AMA dan persyaratan disk, lihat persyaratan Azure Monitor Agent. Untuk alokasi batch dan kegagalan node, lihat Azure Batch pool dan kesalahan node.

Pertimbangan biaya

Biaya Azure Monitor dapat diterapkan pada proses penelipan, retensi, peringatan, dan fitur lain yang diaktifkan di Log Analytics. Untuk mengendalikan biaya:

  • Kumpulkan hanya counter dan log yang diperlukan sesuai kebutuhan pemantauan Anda.
  • Gunakan frekuensi sampling yang sesuai dengan beban kerja Anda.
  • Filter data disk berdasarkan instance titik pemasangan yang bermakna dalam kueri dan peringatan.
  • Hindari mengaitkan DCR yang tumpang tindih dengan pool yang sama.
  • Tinjau pengaturan retensi ruang kerja.

Untuk informasi lebih lanjut, lihat biaya dan penggunaan Azure Monitor serta Rencana mengelola biaya untuk Azure Batch.

Membersihkan sumber daya

Ketika Anda tidak lagi membutuhkan pool yang dipantau, hapus pool dan sumber daya pemantauan yang tidak dibagikan dengan beban kerja lain.

Untuk mempertahankan konfigurasi pool tanpa terus menjalankan compute node, ubah ukuran pool menjadi nol:

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

Menskalakan ke nol dapat menghapus set skala komputer virtual pendukung. Data yang sudah disimpan di Log Analytics tetap tersedia sesuai dengan pengaturan retensi workspace.