Övervaka Batch-lösningar genom att räkna uppgifter och noder efter tillstånd

Om du vill övervaka och hantera storskaliga Azure Batch lösningar kan du behöva fastställa antalet resurser i olika tillstånd. Azure Batch tillhandahåller effektiva åtgärder för att få antal för Batch-uppgifter och beräkningsnoder. Du kan använda dessa åtgärder i stället för potentiellt tidskrävande listfrågor som returnerar detaljerad information om stora samlingar av uppgifter eller noder.

  • Get Task Counts hämtar ett aggregerat antal aktiva, aktiva och slutförda aktiviteter i ett jobb och av aktiviteter som lyckades eller misslyckades. Genom att räkna uppgifter i varje tillstånd kan du enklare visa jobbförloppet för en användare eller identifiera oväntade fördröjningar eller fel som kan påverka jobbet.

  • Listnodantal för pooler hämtar antalet dedikerade beräkningsnoder och skalningsnoder för oanvänd kapacitet i varje pool som finns i olika tillstånd: skapa, inaktiva, offline, avinstallerade, starta om, starta om och andra. Genom att räkna noder i varje tillstånd kan du avgöra när du har tillräckligt med beräkningsresurser för att köra jobben och identifiera potentiella problem med poolerna.

Observera att de tal som returneras av dessa åtgärder ibland inte är uppdaterade. Om du behöver vara säker på att antalet är korrekt använder du en listfråga för att räkna dessa resurser. Med listfrågor kan du också få information om andra Batch-resurser, till exempel program. Mer information om hur du tillämpar filter på listfrågor finns i Skapa frågor för att lista Batch-resurser effektivt.

Antal uppgiftstillstånd

Åtgärden Get Task Counts räknar aktiviteter med följande tillstånd:

  • Aktiv: En aktivitet som är i kö och kan köras, men som för närvarande inte är tilldelad till en beräkningsnod. En aktivitet är också active om den är beroende av en överordnad aktivitet som ännu inte har slutförts.
  • Körs: En aktivitet som har tilldelats till en beräkningsnod, men som ännu inte har slutförts. En aktivitet räknas som running när dess tillstånd är antingen preparing eller running, vilket anges av åtgärden Hämta information om en aktivitet .
  • Slutförd: En aktivitet som inte längre är berättigad att köras, eftersom den antingen har slutförts eller slutförts utan fel och också har förbrukat gränsen för återförsök.
  • Lyckades: En aktivitet där resultatet av aktivitetskörningen är success. Batch avgör om en uppgift har lyckats eller misslyckats genom att kontrollera TaskExecutionResult egenskapen för egenskapen executionInfo .
  • Misslyckades: En aktivitet där resultatet av aktivitetskörningen är failure.

Följande .NET-kodexempel visar hur du hämtar uppgiftsantal efter tillstånd.

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

Du kan använda ett liknande mönster för REST och andra språk som stöds för att få uppgiftsantal för ett jobb.

Antal nodtillstånd

Åtgärden List Pool Node Counts räknar beräkningsnoder enligt följande tillstånd i varje pool. Separata mängdantal tillhandahålls för dedikerade noder och noder för oanvänd kapacitet i varje pool.

  • Skapa: En Azure-allokerad virtuell dator som ännu inte har börjat ansluta till en pool.
  • Inaktiv: En tillgänglig beräkningsnod som för närvarande inte kör en aktivitet.
  • LeavingPool: En nod som lämnar poolen, antingen för att användaren uttryckligen tog bort den eller för att poolen ändrar storlek eller autoskalning nedåt.
  • Offline: En nod som Batch inte kan använda för att schemalägga nya aktiviteter.
  • Preempted: En nod för oanvänd kapacitet som togs bort från poolen eftersom Azure återtog den virtuella datorn. En preempted nod kan initieras om när det finns tillgänglig kapacitet för virtuella datorer med oanvänd kapacitet.
  • Omstart: En nod som startas om.
  • Återskapa: En nod där operativsystemet installeras om.
  • Körs : En nod som kör en eller flera aktiviteter (förutom startaktiviteten).
  • Startar: En nod där Batch-tjänsten startas.
  • StartTaskFailed: En nod där startaktiviteten misslyckades och förbrukade alla återförsök och som waitForSuccess har angetts för startaktiviteten. Noden kan inte användas för att köra aktiviteter.
  • Okänd: En nod som förlorade kontakten med Batch-tjänsten och vars tillstånd inte är känt.
  • Oanvändbar: En nod som inte kan användas för aktivitetskörning på grund av fel.
  • WaitingForStartTask: En nod där startaktiviteten började köras, men waitForSuccess har angetts och startaktiviteten inte har slutförts.

Följande C#-kodfragment visar hur du listar antalet noder för alla pooler i det aktuella kontot:

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

Följande C#-kodfragment visar hur du listar antalet noder för en viss pool i det aktuella kontot.

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

Du kan använda ett liknande mönster för REST och andra språk som stöds för att hämta antalet noder för pooler.

Nästa steg