مراقبة حلول Batch عن طريق إحصاء المهام والعقد حسب الحالة

لمراقبة حلول Azure Batch وإدارتها على نطاق واسع، قد تحتاج إلى تحديد عدد الموارد في حالات مختلفة. يوفر Azure Batch عمليات تشغيل فعّالة للحصول على عدد مهام Batch وحساب العقد. يمكنك استخدام هذه العمليات بدلاً من استعلامات القائمة التي تستغرق وقتاً طويلاً، والتي تسفر عن معلومات مفصلة حول مجموعاتٍ كبيرة من المهام أو العقد.

  • يحصل Get Task Counts على عدد إجمالي من المهام النشطة، والجارية والمكتملة في مهمة ما، بالإضافة إلى المهام التي نجحت أو فشلت. عن طريق حساب المهام في كل حالة، يمكنك بسهولة أكبر عرض تقدم المهمة إلى مستخدم، أو الكشف عن التأخيرات أو حالات الفشل غير المتوقعة التي قد تؤثر على المهمة.

  • تحصل List Pool Node Counts على عدد العقد المخصصة وعقد Spot compute في كل مجموعة في حالات مختلفة: الإنشاء، والخامل، وغير المتصل، والاستباق، وإعادة التشغيل، وإعادة التصوير، والبدء، وغيرها. عن طريق حساب العقد في كل حالة، يمكنك تحديد متى يكون لديك موارد حسابية كافية لتشغيل مهامك، وتحديد المشكلات المحتملة مع مجموعاتك.

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

عدد حالة المهمة

تَحسب عملية "الحصول على عدد المهام" المهام حسب الحالات التالية:

  • نشط: مهمة موجودة في قائمة الانتظار وقادرة على التشغيل، ولكنها غير معينة في الوقت الراهن إلى عقدة حسابية. وقد تكون المهمة أيضا active إذا كانت تعتمد على مهمة أصل لم تكتمل بعد.
  • تشغيل: مهمة عُيّنت إلى عقدة حسابية، ولكنها لم تكتمل بعد. تُحسب المهمة وفق running حالتها وتكون إما preparing أو running، كما هو موضح في الحصول على معلومات حول عملية المهمة.
  • مكتمل: مهمة لم تعد مؤهلة بعد للتشغيل، لأنها انتهت بنجاح أو انتهت دون جدوى، كما أنها قد استنفدت حد إعادة المحاولة الخاص بها.
  • ناجحة: مهمة تكون فيها نتيجة تنفيذ المهمة هيsuccess. يحدد Batch ما إذا كانت المهمة قد نجحت أو فشلت عن طريق التحقق TaskExecutionResult من خاصية executionInfo.
  • فاشلة: مهمة تكون فيها نتيجة تنفيذ المهمة هيfailure.

يوضح نموذج التعليمة البرمجية.NET التالي كيفية استرداد عدد المهام حسب الحالة.

var taskCounts = await batchClient.JobOperations.GetJobTaskCountsAsync("job-1");

Console.WriteLine("Task count in active state: {0}", taskCounts.Active);
Console.WriteLine("Task count in preparing or running state: {0}", taskCounts.Running);
Console.WriteLine("Task count in completed state: {0}", taskCounts.Completed);
Console.WriteLine("Succeeded task count: {0}", taskCounts.Succeeded);
Console.WriteLine("Failed task count: {0}", taskCounts.Failed);

يمكنك استخدام نمط مشابه لـ REST واللغات المدعومة الأخرى للحصول على عدد المهام لوظيفة.

عدد حالة العقدة

تحسب عملية "The List Pool Node Counts" العقد الحسابية في كل مجموعة حسب الحالات التالية. يتم توفير تعداد تجميع منفصل للعقد المخصصة والعقد الموضعية في كل مجموعة.

  • إنشاء: جهاز Azure الظاهري المخصص الذي لم يبدأ بعد في الانضمام إلى مجموعة.
  • خامل: عقدة حسابية متوفرة لا تقوم حالياً بتشغيل مهمة.
  • مغادرة المجموعة: العقدة التي تغادر المجموعة، إما لأن المستخدم قد أزالها صراحة أو لأن المجموعة تعيد تشكيل حجمها أو تنكمش آليا.
  • غير متصل: هي العقدة التي لا يمكن لـ Batch أن يستخدمها لجدولة مهام جديدة.
  • Preempted: عقدة موضعية تمت إزالتها من التجمع لأن Azure استعاد الجهاز الظاهري. يمكن إعادة تهيئة العقدة preempted عند توفر سعة Spot VM البديلة.
  • إعادة التشغيل: هي العقدة التي تخضع لعملية إعادة التشغيل.
  • إعادة التصوير: هي العقدة التي يُعاد تثبيت نظام التشغيل عليها.
  • تشغيل: هي العقدة التي تشغل مهمة واحدة أو أكثر (بخلاف مهمة البدء).
  • البدء: هي العقدة التي تبدأ خدمة Batch عليها.
  • إخفاق مهمة البدء: هي العقدة التي أخفقت عليها مهمة البدء والتي استنفذت جميع المحاولات، والتي يُعين عليها أيضاً waitForSuccess مهمة البدء. العقدة غير قابلة للاستخدام لتشغيل المهام.
  • غير معروف: هي العقدة التي فقدت الاتصال بخدمة Batch ولا يُعرف حالتها.
  • غير قابل للاستخدام: هي العقدة التي لا يمكن استخدامها لتنفيذ المهمة بسبب أخطاء.
  • الانتظار لمهمة البدء: هي العقدة التي تبدأ مهمة البدء التشغيل عليها، ولكنها waitForSuccess تُعين بينما مهمة البدء لم تكتمل بعد.

توضح القصاصة البرمجية C# التالية كيفية سرد عدد العقد لجميع المجموعات في الحساب الحالي:

foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts())
{
    Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);

    Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);

    // Get dedicated node counts in Idle and Offline states; you can get additional states.
    Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
    Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);

    Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);

    // Get Spot node counts in Running and Preempted states; you can get additional states.
    Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
    Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}

توضح القصاصة البرمجية C# التالية كيفية سرد عدد العقد لمجموعة معينة في الحساب الحالي.

foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts(new ODATADetailLevel(filterClause: "poolId eq 'testpool'")))
{
    Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);

    Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);

    // Get dedicated node counts in Idle and Offline states; you can get additional states.
    Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
    Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);

    Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);

    // Get Spot node counts in Running and Preempted states; you can get additional states.
    Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
    Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}

يمكنك استخدام نمط مشابه لـ REST واللغات المدعومة الأخرى للحصول على عدد العقد لوظيفة.

الخطوات التالية