Batch-megoldások monitorozása tevékenységek és csomópontok állapot szerinti számlálásával

A nagy léptékű Azure Batch megoldások monitorozásához és kezeléséhez szükség lehet a különböző állapotokban lévő erőforrások számának meghatározására. Azure Batch hatékony műveleteket biztosít a Batch-tevékenységek és számítási csomópontok számának lekéréséhez. Ezeket a műveleteket ahelyett használhatja, hogy esetleg időigényes lista lekérdezéseket ad vissza, amelyek részletes információkat adnak vissza a feladatok vagy csomópontok nagy gyűjteményeiről.

  • A Feladatszám lekérése egy feladat aktív, futó és befejezett tevékenységeinek összesített számát, valamint a sikeres vagy sikertelen tevékenységeket tartalmazza. Az egyes állapotokban lévő tevékenységek számlálásával könnyebben megjelenítheti a feladat előrehaladását a felhasználó számára, vagy észlelheti a feladatot érintő váratlan késéseket vagy hibákat.

  • A listakészlet csomópontjainak száma lekéri a dedikált és a kihasználatlan számítási csomópontok számát az egyes készletekben, amelyek különböző állapotban vannak: létrehozás, tétlen, offline, előzetes, újraindítás, újraimálás, indítás és mások. Az egyes állapotokban lévő csomópontok számlálásával meghatározhatja, hogy mikor rendelkezik megfelelő számítási erőforrásokkal a feladatok futtatásához, és azonosíthatja a készletekkel kapcsolatos lehetséges problémákat.

Vegye figyelembe, hogy időnként előfordulhat, hogy a műveletek által visszaadott számok nem naprakészek. Ha meg kell győződnie arról, hogy a szám pontos, használjon lista lekérdezést az erőforrások megszámlálásához. A listázási lekérdezések lehetővé teszik más Batch-erőforrások, például alkalmazások információinak lekérését is. További információ a szűrők listázási lekérdezésekre való alkalmazásáról: Lekérdezések létrehozása a Batch-erőforrások hatékony listázásához.

Tevékenységállapotok száma

A Feladatszám lekérése művelet a következő állapotok szerint számlálja meg a tevékenységeket:

  • Aktív: Egy várólistán lévő és futtatható feladat, amely jelenleg nincs hozzárendelve egy számítási csomóponthoz. A tevékenység akkor is active , ha olyan szülőtevékenységtől függ , amely még nem fejeződött be.
  • Futtatás: Egy számítási csomóponthoz rendelt feladat, de még nem fejeződött be. A rendszer úgy számolja a tevékenységeket, mint running amikor az állapota vagy running, preparing ahogy az a tevékenységművelet adatainak lekérése című témakörben látható.
  • Befejezve: Az a tevékenység, amely már nem futtatható, mert vagy sikeresen befejeződött, vagy sikertelenül fejeződött be, és kimerítette az újrapróbálkozási korlátot is.
  • Sikeres: Olyan tevékenység, amelyben a feladat végrehajtásának eredménye .success A Batch a végrehajtásInfo tulajdonságának ellenőrzésével TaskExecutionResult határozza meg, hogy egy tevékenység sikeres vagy sikertelen volt-e.
  • Sikertelen: Olyan tevékenység, amelyben a feladat végrehajtásának eredménye .failure

Az alábbi .NET-kódminta bemutatja, hogyan lehet állapot szerint lekérni a tevékenységek számát.

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);

A REST-hez és más támogatott nyelvekhez hasonló mintát használhat a feladatok feladatszámának lekéréséhez.

Csomópontállapotok száma

A Listakészlet csomópontszám művelete a számítási csomópontokat az egyes készletek alábbi állapotai szerint számlálja meg. A dedikált csomópontokhoz és az egyes készletekben lévő spot csomópontokhoz külön összesített számokat biztosítunk.

  • Létrehozás: Egy Azure-beli lefoglalt virtuális gép, amely még nem kezdett csatlakozni egy készlethez.
  • Tétlen: Rendelkezésre álló számítási csomópont, amely jelenleg nem futtat tevékenységet.
  • LeavingPool: Egy csomópont, amely elhagyja a készletet, vagy azért, mert a felhasználó explicit módon eltávolította, vagy mert a készlet átméretezi vagy automatikusan leskálázódik.
  • Offline: Olyan csomópont, amellyel a Batch nem tud új feladatokat ütemezni.
  • Előtag: A készletből eltávolított kihasználatlan csomópont, amely azért lett eltávolítva, mert az Azure visszavette a virtuális gépet. A preempted csomópontok újrainicializálhatók, ha rendelkezésre áll a kihasználatlan virtuálisgép-kapacitás cseréje.
  • Újraindítás: Újrainduló csomópont.
  • Újraimálás: Egy csomópont, amelyen az operációs rendszer újratelepítve van.
  • Futtatás : Olyan csomópont, amely egy vagy több tevékenységet futtat (a kezdő tevékenységtől eltérően).
  • Indítás: Egy csomópont, amelyen a Batch szolgáltatás elindul.
  • StartTaskFailed: Az a csomópont, amelyen a kezdési tevékenység meghiúsult, és kimerítette az összes újrapróbálkozásokat, és amelyen waitForSuccess az indítási tevékenység van beállítva. A csomópont nem használható feladatok futtatásához.
  • Ismeretlen: Olyan csomópont, amely elvesztette a kapcsolatot a Batch szolgáltatással, és amelynek állapota nem ismert.
  • Használhatatlan: Olyan csomópont, amely hibák miatt nem használható feladatvégrehajtáshoz.
  • WaitingForStartTask: Egy csomópont, amelyen a kezdési tevékenység elindult, de waitForSuccess be van állítva, és a kezdési tevékenység még nem fejeződött be.

Az alábbi C#-kódrészlet bemutatja, hogyan listázhatja az aktuális fiók összes készletének csomópontszámát:

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);
}

Az alábbi C#-kódrészlet bemutatja, hogyan listázhatja az adott készlet csomópontszámait az aktuális fiókban.

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);
}

A REST-hez és más támogatott nyelvekhez hasonló mintát használhat a készletek csomópontszámának lekéréséhez.

Következő lépések