Monitor Azure Batch pool compute nodes with Azure Monitor Agent

توفر مقاييس منصة حسابات Azure Batch معلومات حول البرك، والعقد، والنوى، والوظائف، والمهام. لمراقبة أداء نظام التشغيل الضيف، مثل استخدام المعالج المركزي والذاكرة والقرص والشبكة، قم بتثبيت Azure Monitor Agent (AMA) على عقد الحوسبة في المجموعة.

يوضح هذا المقال طريقة القيام بما يلي:

  • أنشئ تجمع دفعات مع هوية مدارة وAMA مخصص للمستخدم.
  • أنشئ قاعدة جمع البيانات (DCR) لعدادات أداء لينكس وSyslog.
  • ربط DCR بمورد Batch Pool.
  • Verify data in Log Analytics و Azure Monitor Metrics.

تستخدم الأمثلة Azure CLI ومجموعة لينكس. تدعم نفس البنية مجموعات Windows مع إضافة Windows AMA ومصادر بيانات Windows.

هام

يدعم مراقبة عقد حسابات تجمع الدفعات باستخدام AMA فقط لحسابات الدفعات التي تستخدم وضع تخصيص تجمع اشتراك المستخدمين . في وضع تخصيص تجمع الخدمات الدفعية، يتم إنشاء عقد الحوسبة في اشتراكات مدارة بالدفعات لا يمكن للعملاء الوصول إليها.

كيف تعمل مراقبة العقد

تستخدم مجموعة الدفعات المراقبة الموارد التالية:

  • حساب Batch في وضع تخصيص تجمع اشتراك المستخدمين.
  • تجمع دفعات يحتوي على هوية مدارة معينة من قبل المستخدم.
  • تم تثبيت إضافة Azure Monitor Agent عند إنشاء المجموعة.
  • DCR يحدد البيانات التي يجب جمعها والوجهات.
  • ارتباط DCR هدفه هو مورد Batch Pool Azure Resource Manager.
  • A Log Analytics workspace for log data واختياريا، Azure Monitor Metrics for guest metrics.

ربط DCR بمعرف موارد تجمع الدفعات:

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

لا تربط DCR فقط بمجموعة مقياس الآلة الافتراضية التي تنشئها Batch للمجموعة. يدير Batch دورة حياة تلك المجموعة من المقياس. عندما يتغير تجمع إلى العقد الصفرية، يمكن ل Batch حذف مجموعة المقياس وإنشاء مجموعة جديدة أثناء إعادة تكبير لاحقا.

تحتفظ سجلات Log Analytics بمعرف مورد المورد الذي أنشأته دفعة الدفع. تتوفر مؤشرات الضيوف على مقياس الآلة الافتراضية الحالي الذي أنشأته دفعة في azure.vm.linux.guestmetrics الفضاء الاسم للينكس أو على مساحة اسم ضيف الآلة الافتراضية (Windows) ل Windows.

المتطلبات المسبقه

قبل أن تبدأ، تحتاج إلى:

أنشئ DCR ومساحة Log Analytics ومجموعة Batch في نفس منطقة Azure. إذا كان المجمع يستخدم شبكة افتراضية ذات وصول خارجي محدود، راجع متطلبات شبكة Azure Monitor Agent.

تلميح

يجب أن تستخدم مجموعات الامتدادات تكوين الآلة الافتراضية. لا يمكنك إضافة امتدادات إلى مجموعة موجودة. لإضافة أو إزالة أو تحديث AMA، أنشئ مجموعة جديدة. لمزيد من المعلومات، انظر استخدام الإضافات مع مجموعات الدفعات.

تعيين متغيرات البيئة

حدد متغيرات لمواردك. استبدل القيم المؤقتة.

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"

إنشاء قاعدة تجميع البيانات

تجمع قاعدة جمع البيانات التالية (DCR) عدادات أداء لينكس الشائعة كل 60 ثانية. يرسل العدادات إلى كل من Perf الجدول في Log Analytics وAzure Monitor Metrics. كما يرسل تحذيرا وسجلات Syslog ذات الشدة الأعلى إلى Log Analytics.

Azure Monitor Metrics كوجهة لعدادات أداء الضيوف قيد المعاينة. للقيود الحالية، راجع جمع عدادات الأداء مع Azure Monitor Agent.

أنشئ ملفا باسم dcr.json. الاستبدال <location> و<workspace-resource-id> وكذلك من خلال القيم الخاصة بك.

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

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

للحصول على معلومات حول اختيار العدادات والتحكم في تكلفة الاستيعاب، راجع جمع عدادات الأداء باستخدام Azure Monitor Agent.

Create a Pool with Azure Monitor Agent

أنشئ ملفا باسم pool.json. المثال التالي يستخدم أوبونتو 22.04 ويثبت إضافة AMA الخاصة بلينكس. استبدل <managed-identity-resource-id> بقيمة .$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"
      }
    }
  }
}

أنشئ المجموعة باستخدام واجهة برمجة تطبيقات إدارة الدفعات:

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

لمجموعة Windows، استخدم:

  • نوع AzureMonitorWindowsAgentالامتداد .
  • صورة Windows ووحدة SKU لعقد وكيل Batch متوافق.
  • DCR Windows مع kind ضبط على Windows.
  • عدادات أداء Windows، وإذا لزم الأمر، مجموعة أحداث Windows بدلا من Syslog.

لا تستخدم DCR واحد لكل من عدادات Windows وLinux. بعض أسماء العدادات يمكن أن تحل إلى نفس المقياس وتسبب جمع مكرر.

ربط DCR بمجموعة الدفعات

إنشاء الارتباط على مورد مجموعة الدفعات:

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

أكد الارتباط:

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

يبقى الارتباط على المجموعة عند إزالة أو استبدال العقد. لا تستبدلها بارتباط يستهدف فقط مجموعة مقياس الآلة الافتراضية التي أنشأتها الدفعة الحالية.

التحقق من جمع الوكيل والسجلات

اترك حتى خمس دقائق بعد وصول العقدة إلى حالة الخمول لوصول أول السجلات.

تحقق من نبض قلب العميل

شغل الاستعلام التالي في مساحة عمل Log Analytics:

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

عادة ما يرسل العميل التشغيلي نبضة قلب واحدة في كل دقيقة.

تحقق من عدادات الأداء

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

تتضمن عدادات الأقراص المنطقية في لينكس عدة نسخ نقطة تركيب. قم بالتصفية عند InstanceName إنشاء مخططات أو تنبيهات حتى لا تشوه التركيبات القابلة للقراءة فقط والتركيبات المؤقتة النتيجة.

تحقق من Syslog

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

عرض مؤشرات الضيوف

إذا أرسل DCR التدفق Microsoft-InsightsMetrics إلى وجهة Azure Monitor Metrics، تظهر مقاييس الضيوف على مجموعة مقياس الآلة الافتراضية التي أنشأتها الدفعة الحالية.

  1. في بوابة Azure، افتح مجموعة مقياس الآلة الافتراضية التي أنشأها Batch للمجموعة.
  2. حدد القياسات.
  3. بالنسبة لمساحة أسماء مترية، اختر azure.vm.linux.guestmetrics لينكس أو ضيف الآلة الافتراضية (Windows) ل Windows.
  4. اختر مقياسا وتجميعا.

يمكنك تحديد معرف مورد الحوسبة الحالي من السجلات الحديثة Perf :

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

ملحوظة

عندما يتدرج تجمع إلى عقد صفرية، يمكن لباتش حذف مجموعة مقياس الآلة الافتراضية الداعمة. مورد مقياس الضيف غير متاح طالما أن مجموعة المقياس غير موجودة. تظل بيانات Log Analytics المجمعة بالفعل في مساحة العمل متاحة وفقا لإعدادات الاحتفاظ في مساحة العمل.

مراقبة مقاييس منصة الدفعات باستخدام بيانات العقدة

تكمل بيانات ضيوف العقدة مقاييس منصة حساب الدفعة التي يتم جمعها تلقائيا. استخدم كلا المصدرين:

  • استخدم مقاييس حساب الدفعة مثل TotalNodeCount، RunningNodeCount، IdleNodeCount، UnusableNodeCountTaskStartEvent، ، لمراقبة TaskCompleteEvent حالة الخدمة والجدولة.
  • استخدم عدادات أداء الضيوف للتحقيق في حالة وحدة المعالجة المركزية والذاكرة والقرص والشبكة على عقد الحوسبة.
  • استخدم سجلات خدمات الدفعات لربط أحداث دورة حياة المجموعة والوظائف والمهام مع سلوك العقدة.

لتعريفات المتريكيات وإرشادات التجميع، انظر Azure Batch monitoring data reference و Monitor Azure Batch.

استكشاف أخطاء جمع البيانات وإصلاحها

استخدم الفحوصات التالية عندما لا تصل البيانات:

عَرَض الشيكات
لا نبض قلب تأكد من أن إضافة AMA تم توفيرها بنجاح، وأن الهوية المعينة من قبل المستخدم مرتبطة بالمجموعة وتم الإشارة إليها في إعدادات الإضافة، وأن نقاط النهاية المطلوبة من Azure Monitor قابلة للوصول.
أفادت AMA أن المورد غير مرتبط ب DCR تأكد من أن ارتباط DCR يستهدف معرف موارد تجمع الدفعات. الارتباط فقط على مجموعة مقياس الآلة الافتراضية الداعمة ليس بديلا عن جمعية التجمع.
يصل نبض القلب لكنه Perf فارغ تأكد من وجود ذلك Microsoft-Perf في كل من مصدر بيانات عداد الأداء وتدفق البيانات الذي يستهدف Log Analytics. تحقق من مسارات العداد ونوع نظام التشغيل DCR.
مساحة أسماء المعيار الضيف غير متوفرة تأكد من أن Microsoft-InsightsMetrics الأهداف azureMonitorMetrics-default، وامنح عدة دقائق للتجميع، وتأكد من أن المجموعة تحتوي حاليا على عقد ومقياس دعم محدد.
السجلات المكررة تحقق من وجود عدة DCRs تجمع نفس البيانات من المجموعة. جمع التكرار يزيد من تكلفة الاستهلاك.

لمواقع سجلات AMA ومتطلبات القرص، راجع متطلبات Azure Monitor Agent. للحصول على تخصيص الدفعات وفشل العقد، انظر Azure Batch pool and node errors.

اعتبارات التكلفة

يمكن تطبيق رسوم Azure Monitor على ميزات Log Analytics للاستيعاب، والاحتفاظ، والتنبيهات، وغيرها من الميزات المفعلة. للتحكم في التكلفة:

  • اجمع فقط العدادات والسجلات المطلوبة لأهداف المراقبة.
  • استخدم تردد أخذ عينات مناسب لحجم عملك.
  • تصفية بيانات القرص حسب مثيلات نقطة التثبيت ذات معنى في الاستعلامات والتنبيهات.
  • تجنب ربط DCRs المتداخلة بنفس المجموعة.
  • راجع إعدادات الاحتفاظ بمساحة العمل.

لمزيد من المعلومات، راجع Azure Monitor cost and usage و Plan to Management Costs ل Azure Batch.

تنظيف الموارد

عندما لا تحتاج إلى المجموعة المراقبة، احذف المجموعة وأي موارد مراقبة غير مشتركة مع أحمال العمل الأخرى.

للاحتفاظ بتكوين المجموعة دون الاستمرار في تشغيل عقد الحوسبة، قم بإعادة تكبير المجموعة إلى الصفر:

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

التوسع إلى الصفر يمكن أن يزيل مجموعة مقياس الآلة الافتراضية الداعمة. البيانات المخزنة بالفعل في Log Analytics لا تزال متاحة وفقا لإعدادات الاحتفاظ بمساحة العمل.