Monitorowanie rozwiązań usługi Batch przez zliczanie zadań i węzłów według stanu

Aby monitorować rozwiązania Azure Batch na dużą skalę i zarządzać nimi, może być konieczne określenie liczby zasobów w różnych stanach. Azure Batch zapewnia wydajne operacje umożliwiające uzyskanie liczby zadań usługi Batch i węzłów obliczeniowych. Te operacje można używać zamiast potencjalnie czasochłonnych zapytań listy, które zwracają szczegółowe informacje o dużych kolekcjach zadań lub węzłów.

  • Liczba zadań pobierania pobiera zagregowaną liczbę aktywnych, uruchomionych i ukończonych zadań w zadaniu oraz zadań zakończonych powodzeniem lub niepowodzeniem. Policzając zadania w każdym stanie, można łatwiej wyświetlać postęp zadania dla użytkownika lub wykrywać nieoczekiwane opóźnienia lub błędy, które mogą mieć wpływ na zadanie.

  • Liczba węzłów puli listy pobiera liczbę dedykowanych i spot węzłów obliczeniowych w każdej puli, które znajdują się w różnych stanach: tworzenie, bezczynność, tryb offline, wywłaszczanie, ponowne uruchamianie, ponowne tworzenie, uruchamianie i inne. Zliczając węzły w każdym stanie, można określić, kiedy masz odpowiednie zasoby obliczeniowe do uruchamiania zadań i zidentyfikować potencjalne problemy z pulami.

Należy pamiętać, że czasami liczby zwracane przez te operacje mogą nie być aktualne. Jeśli musisz mieć pewność, że liczba jest dokładna, użyj zapytania listy, aby zliczyć te zasoby. Lista zapytań umożliwia również uzyskanie informacji o innych zasobach usługi Batch, takich jak aplikacje. Aby uzyskać więcej informacji na temat stosowania filtrów do wyświetlania listy zapytań, zobacz Tworzenie zapytań w celu wydajnego wyświetlania listy zasobów usługi Batch.

Liczba stanów zadania

Operacja Get Task Counts zlicza zadania według następujących stanów:

  • Aktywne: zadanie, które jest w kolejce i jest w stanie uruchomić, ale nie jest obecnie przypisane do węzła obliczeniowego. Zadanie jest również activezależne od zadania nadrzędnego , które nie zostało jeszcze ukończone.
  • Uruchomione: zadanie przypisane do węzła obliczeniowego, ale nie zostało jeszcze ukończone. Zadanie jest liczone tak, jak running w przypadku, gdy jego stan to lub preparingrunning, jak wskazano w sekcji Pobieranie informacji o operacji zadania .
  • Ukończono: Zadanie, które nie kwalifikuje się już do uruchomienia, ponieważ zakończyło się pomyślnie lub zakończyło się niepowodzeniem, a także wyczerpało limit ponawiania prób.
  • Powodzenie: zadanie, w którym wynikiem wykonania zadania jest success. Usługa Batch określa, czy zadanie zakończyło się pomyślnie, czy nie powiodło się, sprawdzając TaskExecutionResult właściwość executionInfo .
  • Niepowodzenie: zadanie, w którym wynikiem wykonania zadania jest failure.

Poniższy przykładowy kod platformy .NET przedstawia sposób pobierania liczby zadań według stanu.

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

Możesz użyć podobnego wzorca dla interfejsu REST i innych obsługiwanych języków, aby uzyskać liczbę zadań dla zadania.

Liczba stanów węzła

Operacja Liczba węzłów puli listy liczy węzły obliczeniowe według następujących stanów w każdej puli. Oddzielne liczby agregacji są udostępniane dla dedykowanych węzłów i węzłów typu spot w każdej puli.

  • Tworzenie: przydzielona do platformy Azure maszyna wirtualna, która nie zaczęła jeszcze dołączać do puli.
  • Bezczynność: dostępny węzeł obliczeniowy, który nie jest obecnie uruchomiony zadanie.
  • LeavingPool: węzeł opuszczający pulę, ponieważ użytkownik jawnie go usunął lub ponieważ pula zmienia rozmiar lub skalowanie automatyczne w dół.
  • Offline: węzeł, którego usługa Batch nie może używać do planowania nowych zadań.
  • Wywłaszczone: węzeł typu spot, który został usunięty z puli, ponieważ platforma Azure odzyskała maszynę wirtualną. Węzeł preempted można ponownie zainicjować, gdy dostępna jest zastępcza pojemność maszyny wirtualnej typu spot.
  • Ponowne uruchomienie: węzeł, który jest uruchamiany ponownie.
  • Ponowne tworzenie: węzeł, na którym jest instalowany system operacyjny.
  • Uruchomiono : węzeł, który uruchamia co najmniej jedno zadanie (inne niż zadanie uruchamiania).
  • Uruchamianie: węzeł, na którym jest uruchamiana usługa Batch.
  • StartTaskFailed: węzeł, na którym zadanie uruchamiania nie powiodło się i wyczerpało wszystkie ponawiania prób, i na którym waitForSuccess ustawiono zadanie uruchamiania. Węzeł nie może być używany do uruchamiania zadań.
  • Nieznany: węzeł, który stracił kontakt z usługą Batch i którego stan nie jest znany.
  • Bezużyteczne: węzeł, którego nie można używać do wykonywania zadań z powodu błędów.
  • WaitingForStartTask: węzeł, na którym uruchomiono zadanie uruchamiania, ale waitForSuccess jest ustawione i zadanie uruchamiania nie zostało ukończone.

Poniższy fragment kodu w języku C# pokazuje, jak wyświetlić listę liczby węzłów dla wszystkich pul na bieżącym koncie:

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

Poniższy fragment kodu w języku C# pokazuje, jak wyświetlić listę liczby węzłów dla danej puli na bieżącym koncie.

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

Możesz użyć podobnego wzorca dla interfejsu REST i innych obsługiwanych języków, aby uzyskać liczbę węzłów dla pul.

Następne kroki