Delen via


Batch-oplossingen monitoren door taken en knooppunten per status te tellen

Als u grootschalige Azure Batch-oplossingen wilt bewaken en beheren, moet u mogelijk het aantal resources in verschillende statussen bepalen. Azure Batch biedt efficiënte bewerkingen voor het ophalen van tellingen voor Batch-taken en rekenknooppunten. U kunt deze bewerkingen gebruiken in plaats van mogelijk tijdrovende lijstquery's die gedetailleerde informatie retourneren over grote verzamelingen taken of knooppunten.

  • Taakaantallen ophalen krijgt een totaal aantal van actieve, lopende en voltooide taken in een opdracht, evenals van taken die zijn geslaagd of mislukt. Door taken in elke status te tellen, kunt u de voortgang van taken eenvoudig weergeven aan een gebruiker of onverwachte vertragingen of fouten detecteren die van invloed kunnen zijn op de taak.

  • List Pool Node Counts verwerft het aantal toegewezen en Spot-rekenknooppunten in elke pool die zich in verschillende staten bevinden: maken, inactief, offline, voortijdig beëindigd, opnieuw opstarten, herimageren, starten en andere. Door knooppunten in elke status te tellen, kunt u bepalen wanneer u voldoende rekenresources hebt om uw taken uit te voeren en potentiële problemen met uw pools te identificeren.

Soms zijn de getallen die door deze bewerkingen worden geretourneerd, mogelijk niet up-to-date. Als u er zeker van wilt zijn dat een telling juist is, gebruikt u een lijstquery om deze resources te tellen. Met lijstquery's kunt u ook informatie krijgen over andere Batch-resources, zoals toepassingen. Zie voor meer informatie over het toepassen van filters op lijstqueries Queries maken om Batch-resources efficiënt weer te geven.

Aantal taaktoestanden

Met de Get bewerking Taaktelling worden taken geteld op basis van de volgende statussen:

  • Actief: Een taak die in de wachtrij staat en klaar is om te worden uitgevoerd, maar momenteel niet is toegewezen aan een rekenknooppunt. Een taak is ook active als deze afhankelijk is van een bovenliggende taak die nog niet is voltooid.
  • Wordt uitgevoerd: Een taak die is toegewezen aan een rekenknooppunt, maar nog niet is voltooid. Een taak wordt geteld als running wanneer de status preparing of running is, zoals aangegeven door de Getinformatie over een taak bewerking.
  • Voltooid: Een taak die niet meer in aanmerking komt voor uitvoering, omdat deze is voltooid of mislukt en ook de limiet voor opnieuw proberen is uitgeput.
  • Geslaagd: een taak waarbij het resultaat van de taakuitvoering is success. Batch bepaalt of een taak is geslaagd of mislukt door de TaskExecutionResult eigenschap executionInfo te controleren.
  • Mislukt: een taak waarbij het resultaat van de taakuitvoering is failure.

In het volgende .NET-codevoorbeeld ziet u hoe u het aantal taken op status kunt ophalen.

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

U kunt een vergelijkbaar patroon gebruiken voor REST en andere ondersteunde talen om het aantal taken voor een taak op te halen.

Aantal knooppuntstatussen

Met de bewerking Aantal knooppunten lijstgroep worden rekenknooppunten geteld op basis van de volgende statussen in elke pool. Afzonderlijke aggregaties worden verstrekt voor toegewezen knooppunten en Spot-knooppunten in elke pool.

  • Maken: Een aan Azure toegewezen VM die nog niet is begonnen met het toevoegen van een pool.
  • Inactief: een rekenknooppunt dat beschikbaar is en momenteel geen taken uitvoert.
  • LeavingPool: een knooppunt dat de pool verlaat, omdat de gebruiker het expliciet heeft verwijderd of omdat de pool aan het verkleinen of automatisch aan het afschalen is.
  • Offline: Een knooppunt dat batch niet kan gebruiken om nieuwe taken te plannen.
  • Vooraf verwijderd: Een Spot-knooppunt dat uit de pool is verwijderd omdat Azure de VM heeft teruggevorderd. Een preempted knooppunt kan opnieuw worden geïnitialiseerd wanneer er een vervangende spot-VM-capaciteit beschikbaar is.
  • Opnieuw opstarten: een knooppunt dat opnieuw wordt opgestart.
  • Opnieuw opstarten: een knooppunt waarop het besturingssysteem opnieuw wordt geïnstalleerd.
  • Wordt uitgevoerd : een knooppunt waarop een of meer taken worden uitgevoerd (met uitzondering van de begintaak).
  • Starten: een knooppunt waarop de Batch-service wordt gestart.
  • StartTaskFailed: een knooppunt waarin de begintaak is mislukt na alle nieuwe pogingen en waitForSuccess is ingeschakeld. Dit knooppunt kan geen taken uitvoeren.
  • Onbekend: een knooppunt dat geen contact meer heeft met de Batch-service en waarvan de status niet bekend is.
  • Onbruikbaar: een knooppunt dat niet kan worden gebruikt voor taakuitvoering vanwege fouten.
  • WaitingForStartTask: een knooppunt waarop de begintaak wordt uitgevoerd, maar waitForSuccess is ingeschakeld en is niet voltooid.

In het volgende C#-fragment ziet u hoe u het aantal knooppunten voor alle pools in het huidige account weergeeft:

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

In het volgende C#-fragment ziet u hoe u het aantal knooppunten voor een bepaalde pool in het huidige account weergeeft.

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

U kunt een vergelijkbaar patroon gebruiken voor REST en andere ondersteunde talen om het aantal knooppunten voor pools op te halen.

Volgende stappen