Udostępnij przez


Monitorowanie rozwiązań Batch poprzez liczenie zadań i węzłów według stanu

Aby monitorować rozwiązania usługi Azure Batch na dużą skalę i zarządzać nimi, może być konieczne określenie liczby zasobów w różnych stanach. Usługa Azure Batch zapewnia wydajne operacje umożliwiające pobieranie liczników dla zadań usługi Batch i węzłów obliczeniowych. Tych operacji 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.

  • Uzyskaj liczbę zadań to zagregowana liczba aktywnych, uruchomionych, ukończonych zadań oraz zadań zakończonych powodzeniem lub niepowodzeniem w ramach zadania. Zliczając zadania w każdym stanie, można łatwo wyświetlić postęp zadania dla użytkownika lub wykryć nieoczekiwane opóźnienia lub błędy, które mogą mieć wpływ na zadanie.

  • Lista liczby węzłów puli uzyskuje 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łaszczone, ponowne uruchamianie, ponowne tworzenie, uruchamianie i inne. Zliczając węzły w każdym stanie, można określić, kiedy dostępne są odpowiednie zasoby obliczeniowe do uruchamiania zadań i zidentyfikować potencjalne problemy związane z pulami.

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 zapytań list, zobacz Tworzenie zapytań w celu wydajnego wyświetlania zasobów usługi Batch.

Liczba stanów zadania

Operacja Get Zliczanie zadań liczy zadania według następujących statusów.

  • Aktywne: zadanie, które jest w kolejce i gotowe do uruchomienia, ale nie jest obecnie przypisane do żadnego węzła obliczeniowego. Zadanie jest również active, jeśli jest zależne od zadania nadrzędnego, które nie zostało jeszcze ukończone.
  • Uruchomione: zadanie przydzielone do węzła obliczeniowego, ale nie zostało jeszcze zakończone. Zadanie jest liczone jako running w przypadku, gdy jego stan to preparing lub running, zgodnie z Getinformacjami o zadaniu.
  • 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ę powodzeniem, czy niepowodzeniem, 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 architektury REST i innych obsługiwanych języków, aby uzyskać liczbę zadań dla zadania.

Liczba stanów węzła

Operacja zliczania liczby węzłów w pulach zlicza węzły obliczeniowe zgodnie z następującymi stanami w każdej z puli. Oddzielne liczby zbiorcze są udostępniane dla dedykowanych węzłów i węzłów Spot w każdej puli.

  • Tworzenie: przydzielona na platformę Azure maszyna wirtualna, która jeszcze nie zaczęła dołączać do puli.
  • Bezczynność: węzeł obliczeniowy, który jest dostępny i obecnie nie uruchamia żadnych zadań.
  • LeavingPool: węzeł opuszczający pulę, ponieważ użytkownik jawnie go usunął lub ponieważ pula zmienia rozmiar lub jest automatycznie skalowana w dół.
  • Offline: węzeł, którego usługa Batch nie może używać do planowania nowych zadań.
  • Zajęte: węzeł typu spot, który został usunięty z puli, ponieważ platforma Azure przejęła kontrolę nad maszyną wirtualną. Węzeł preempted można ponownie zainicjować, gdy dostępna jest zastępcza pojemność typu Spot maszyny wirtualnej.
  • Ponowne uruchamianie: węzeł, który jest uruchamiany ponownie.
  • Przywracanie obrazu systemu: węzeł, w którym ponownie instalowany jest system operacyjny.
  • Działanie : węzeł, który wykonuje co najmniej jedno zadanie (inne niż zadanie startowe).
  • Uruchamianie: węzeł, w którym jest uruchamiana usługa Batch.
  • StartTaskFailed: węzeł, w którym zadanie uruchamiania nie powiodło się po ponownych próbach i waitForSuccess jest włączone. Ten węzeł nie może uruchamiać zadań.
  • Nieznany: węzeł, który utracił kontakt z usługą Batch i którego stan nie jest znany.
  • Bezużyteczne: węzeł, który nie może być używany do wykonywania zadań z powodu błędów.
  • WaitingForStartTask: węzeł, na którym jest uruchomione zadanie uruchamiania, ale waitForSuccess jest włączony i nie został ukończony.

Poniższy fragment kodu w języku C# pokazuje, jak wyświetlić listę liczb 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ę liczników 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);
}

Aby uzyskać liczbę węzłów dla pul, można użyć podobnego wzorca dla architektury REST i innych obsługiwanych języków.

Następne kroki