Azure İzleyici Agent ile Azure Batch havuzu işlem düğümlerini izleme

Azure Batch hesap platformu metrikleri, havuzlar, düğümler, çekirdekler, işler ve görevler hakkında bilgi sağlar. CPU, bellek, disk ve ağ kullanımı gibi misafir işletim sistemi performansını izlemek için havuz hesaplama düğümlerine Azure İzleyici Agent (AMA) kurun.

Bu makalede şunların nasıl yapıldığını gösterir:

  • Kullanıcı tarafından atanan yönetilen kimlik ve AMA ile bir Batch havuzu oluşturun.
  • Linux performans sayaçları ve Syslog için bir veri toplama kuralı (DCR) oluşturun.
  • DCR'yi Batch havuzu kaynağı ile ilişkilendirin.
  • Log Analytics ve Azure İzleyici Metrics içindeki verileri doğrulayın.

Örnekler Azure CLI ve Linux havuzu kullanıyor. Aynı mimari, Windows AMA uzantısı ile Windows havuzlarını ve Windows veri kaynaklarını destekler.

Important

AMA ile Batch havuzu hesaplama düğümlerinin izlenmesi, yalnızca kullanıcı abonelik havuzu tahsis modunu kullanan Batch hesapları için desteklenir. Batch hizmet havuzu tahsisi modunda, müşterilerin erişemediği Batch tarafından yönetilen aboneliklerde hesaplama düğümleri oluşturulur.

Düğüm izleme nasıl çalışır

İzlenen bir Batch havuzu aşağıdaki kaynakları kullanır:

  • Kullanıcı abonelik havuzu tahsis modunda bir Batch hesabı.
  • Kullanıcı tarafından atanan yönetilen bir kimliğe sahip bir Batch havuzu.
  • Azure İzleyici Agent uzantısı, havuz oluşturulduğunda yüklenir.
  • Toplanacak veri ve hedefleri belirten bir DCR.
  • Hedefi Batch pool Azure Resource Manager kaynağı olan bir DCR ilişkilendirmesi.
  • Günlük verileri için bir Log Analytics çalışma alanı ve isteğe bağlı olarak konuk ölçümleri için Azure İzleyici Metrics.

DCR'yi Batch havuzu kaynak kimliği ile ilişkilendirin:

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

DCR'yi sadece Batch'in havuz için oluşturduğu sanal makine ölçek setiyle ilişkilendirmeyin. Batch o ölçek setinin yaşam döngüsünü yönetiyor. Bir havuz sıfır düğüme ölçeklendiğinde, Batch ölçek setini silebilir ve sonraki bir yeniden boyutlandırma sırasında yenisini oluşturabilir.

Log Analytics kayıtları, Batch tarafından oluşturulan hesaplama kaynağının kaynak kimliğini korur. Konuk ölçümleri, Linux için ad alanında veya Windows için azure.vm.linux.guestmetrics ad alanında, geçerli Batch tarafından oluşturulmuş sanal makine ölçek kümesinde kullanılabilir.

Prerequisites

Başlamadan önce şunları yapmanız gerekir:

Aynı Azure bölgesinde DCR, Log Analytics çalışma alanı ve Batch havuzunu oluşturun. Havuz, sınırlı çıkış erişimi olan sanal bir ağ kullanıyorsa, Azure İzleyici Agent ağ gereksinimlerini inceleyin.

Tip

Uzantıları olan havuzlar Sanal Makine Yapılandırması kullanmalıdır. Mevcut bir havuza uzantı ekleyemezsiniz. AMA eklemek, kaldırmak veya güncellemek için yeni bir havuz oluşturun. Daha fazla bilgi için bkz. Batch havuzlarıyla uzantıları kullanma.

Ortam değişkenlerini ayarlama

Kaynaklarınız için değişkenler belirleyin. Yer tutucu değerlerini değiştirin.

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"

Veri toplama kuralı oluşturma

Aşağıdaki veri toplama kuralı (DCR), her 60 saniyede bir yaygın Linux performans sayacı toplar. Sayaçları hem Perf Log Analytics'teki tabloya hem de Azure İzleyici Metrics'e gönderir. Ayrıca uyarı ve daha yüksek şiddetli Syslog kayıtlarını Log Analytics'e gönderir.

Azure İzleyici Metrics, konuk performans sayaçları için hedef olarak önizleme aşamasındadır. Güncel sınırlamalar için bkz. Collect performance counters with Azure İzleyici Agent.

dcr.jsonadlı bir dosya oluşturun. <location> ve <workspace-resource-id> değerlerini kendi değerlerinizle değiştirin.

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

DCR'yi oluşturun veya güncelleyin:

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

Sayaç seçme ve alım maliyetinin kontrolü hakkında bilgi için Performans sayacılarını Azure İzleyici Agent ile toplama sayfasına bakınız.

Azure İzleyici Aracısı ile bir havuz oluşturun

pool.jsonadlı bir dosya oluşturun. Aşağıdaki örnek Ubuntu 22.04 kullanır ve Linux AMA uzantısı yüklüdür. <pool-name> yerine $poolName değerini koyun ve <managed-identity-resource-id> yerine $identityId değerini koyun.

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

Batch yönetim API'si kullanılarak havuz oluşturun:

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

Windows havuzu için şunları kullanın:

  • Uzantı türü AzureMonitorWindowsAgent.
  • Bir Windows görüntüsü ve uyumlu Batch düğüm aracısı SKU'su.
  • kind değeri Windows olarak ayarlanmış bir Windows DCR.
  • Windows performans sayacı ve gerekirse Syslog yerine Windows olay koleksiyonu.

Hem Windows hem de Linux sayacı için tek bir DCR kullanmayın. Bazı sayaç adları aynı metriğe karşılık gelebilir ve yinelenen toplamaya neden olabilir.

DCR'yi Batch havuzuyla ilişkilendirin

Batch havuzu kaynağı üzerinde ilişkilendirme oluşturun:

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

Bağlantıyı onaylayın:

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

Düğümler çıkarıldığında veya değiştirildiğinde bu ilişki havuzda kalır. Bunu yalnızca Batch’in oluşturduğu mevcut sanal makine ölçek kümesini hedefleyen bir ilişkilendirmeyle değiştirmeyin.

Ajanı ve log toplamayı doğrulayın

Düğüm boş duruma geldikten sonra ilk kayıtların gelmesini beş dakikaya kadar bekleyin.

Ajanın kalp atışını doğrulayın

Log Analytics çalışma alanında aşağıdaki sorguyu çalıştırın:

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

Operasyonel bir ajan genellikle her dakika bir kalp atışı gönderir.

Performans sayaclarını doğrulayın

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

Linux mantıksal disk sayacları birden fazla mount point örneği içerir. Grafikler veya uyarılar oluştururken, salt okunur ve geçici bağlama noktalarının sonucu çarpıtmaması için InstanceName üzerinde filtre uygulayın.

Syslog'u Doğrula

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

Konuk metriklerini görüntüleyin

DCR, Microsoft-InsightsMetrics akışını Azure İzleyici Metrics hedefine gönderirse, konuk ölçümleri Batch tarafından oluşturulmuş geçerli sanal makine ölçek kümesinde görünür.

  1. Azure portalında, Batch'in havuz için oluşturduğu sanal makine ölçek setini açın.
  2. Ölçümler’i seçin.
  3. Metric Namespace için Linux adına veya Windows için azure.vm.linux.guestmetrics seçin.
  4. Bir metrik ve toplama seçeneği seçin.

Güncel hesaplama kaynak kimliğini son Perf kayıtlardan bulabilirsiniz:

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

Note

Bir havuzun düğüm sayısı sıfıra ölçeklendiğinde, Batch temelindeki sanal makine ölçek kümesini silebilir. Misafir metrik kaynağı mevcut değil çünkü ölçek seti yok. Çalışma alanında halihazırda toplanmış olan Log Analytics verileri, çalışma alanı saklama ayarlarına göre kullanılabilir olmaya devam eder.

Düğüm verileriyle Batch platformu metriklerini izleyin

Node misafir verisi, otomatik olarak toplanan Batch hesap platformu metriklerini tamamlar. Her iki kaynağı da kullanın:

  • Hizmet ve planlama durumunu izlemek için , RunningNodeCount, IdleNodeCount, TaskStartEventUnusableNodeCountve TaskCompleteEvent gibi Toplu hesap metriklerini TotalNodeCountkullanın.
  • Hesaplama düğümlerindeki CPU, bellek, disk ve ağ koşullarını incelemek için misafir performans sayacı kullanın.
  • Havuz, iş ve görev yaşam döngüsü olaylarını düğüm davranışıyla ilişkilendirmek için Batch servis loglarını kullanın.

Metrik tanımları ve toplama kılavuzu için bkz: Azure Batch izleme verileri başvurusu ve Azure Batch'i izleme.

Veri toplama sorunlarını giderme

Veri gelmediğinde aşağıdaki kontrolleri kullanın:

Belirti Denetimler
Kalp atışı yok AMA uzantısının başarıyla dağıtıldığını, kullanıcı tarafından atanan kimliğin havuzla ilişkilendirildiğini ve uzantı ayarlarında bu kimliğe başvurulduğunu, ayrıca gerekli Azure İzleyici uç noktalarına erişilebildiğini doğrulayın.
AMA, kaynağın bir DCR ile ilişkili olmadığını bildiriyor DCR ilişkisinin Batch havuzu kaynak ID'sini hedeflediğini doğrulayın. Yalnızca arka plandaki sanal makine ölçek kümesindeki bir ilişkilendirme, havuz ilişkilendirmesinin yerine geçmez.
Kalp atışı alınıyor ama Perf boş Bunun hem performans sayacı veri kaynağında hem de Log Analytics'i hedefleyen bir veri akışında bulunduğunu doğrulayınMicrosoft-Perf. Sayaç yollarını ve DCR işletim sistemi türünü kontrol edin.
Guest metric isim alanı mevcut değil Microsoft-InsightsMetrics öğesinin azureMonitorMetrics-default öğesini hedeflediğini doğrulayın, birleştirme için birkaç dakika bekleyin ve havuzun şu anda düğümler ile onu destekleyen bir ölçek kümesi içerdiğini doğrulayın.
Yinelenen kayıtlar Havuzdan aynı veriyi toplayan birden fazla DCR olup olmadığını kontrol edin. Yinelenen koleksiyon, içe aktarma maliyetini artırır.

AMA log konumları ve disk gereksinimleri için bkz. Azure İzleyici Agent requirements. Batch tahsisi ve düğüm arızaları için bkz: Azure Batch havuzu ve düğüm hataları.

Maliyetle ilgili konular

Azure İzleyici ücretleri, Log Analytics alımı, tutma, uyarılar ve diğer etkinleştirilmiş özellikler için geçerli olabilir. Maliyeti kontrol etmek için:

  • Sadece izleme hedefleriniz için gereken sayaçları ve logları toplayın.
  • İş yükünüze uygun bir örnekleme frekansı kullanın.
  • Disk verilerini sorgular ve uyarılarda anlamlı mount-point örneklerine göre filtreleyin.
  • Aynı havuzla örtüşen DCR'ları ilişkilendirmekten kaçının.
  • Çalışma alanı saklama ayarlarını gözden geçirin.

Daha fazla bilgi için Azure İzleyici maliyet ve kullanımı ve Azure Batch için maliyetleri yönetmeyi planlama konularına bakın.

Kaynakları temizle

Artık izlenen havuza ihtiyacınız kalmadığında, havuzu ve diğer iş yükleriyle paylaşılmayan izleme kaynaklarını silin.

Hesaplama düğümlerini çalıştırmadan havuz yapılandırmasını korumak için havuzu sıfıra kadar boyutlandırın:

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

Sıfıra ölçeklendirmek, arka plan sanal makine ölçek setini kaldırabilir. Log Analytics'te zaten depolanan veriler, çalışma alanı saklama ayarlarına göre erişilebilir kalır.