Monitorar soluções do Lote pela contagem de tarefas e nós por estado
Para monitorar e gerenciar soluções do Lote do Azure em grande escala, talvez você precise determinar as contagens de recursos em vários estados. O Lote do Azure fornece operações eficientes para obter contagens de tarefas e nós de computação do Lote. Use essas operações em vez de consultas de lista potencialmente demoradas que retornam informações detalhadas sobre grandes conjuntos de tarefas ou nós.
Obter Contagens de Tarefas obtém uma contagem agregada de tarefas ativas, em execução e concluídas em um trabalho, bem como das tarefas que tiveram êxito ou falharam. Contando as tarefas em cada estado, você pode exibir mais facilmente o andamento do trabalho para um usuário ou detectar atrasos inesperados ou falhas que podem afetar o trabalho.
Listar Contagens de Nó de Pool obtém o número de nós de computação spot e dedicados em cada pool que estão em vários estados: criando, ocioso, offline, que admitiu preempção, reinicializando, refazendo a imagem, iniciando e outros. Pela contagem de nós em cada estado, você pode determinar quando você tem recursos computacionais adequados para executar seus trabalhos e identificar possíveis problemas com seus pools.
Observe que, às vezes, os números retornados por essas operações podem não estar atualizados. Se precisar ter certeza de que uma contagem é precisa, use uma consulta de lista para contar os recursos. As consultas de lista também permitem obter informações sobre outros recursos do Lote, como aplicativos. Para obter mais informações sobre a aplicação de filtros a consultas de lista, consulte Criar consultas para listar recursos do Lote com eficiência.
Contagens de estados de tarefa
A operação Obter Contagens de Tarefas conta tarefas pelos seguintes estados:
-
Ativa: uma tarefa que está na fila e é capaz de executar, mas não está atualmente atribuída a um nó de computação. Uma tarefa também é
active
se é dependente de uma tarefa pai que ainda não foi concluída. -
Executando: uma tarefa que foi atribuída a um nó de computação, mas ainda não foi concluída. Uma tarefa é contabilizada como
running
quando seu estado épreparing
ourunning
, conforme indicado pela operação Obter informações sobre uma tarefa. - Concluída: uma tarefa que não é mais elegível para ser executada porque foi concluída com êxito, ou então foi concluída com êxito e também esgotou seu limite de repetição.
-
Bem-sucedida: uma tarefa cujo resultado da execução da tarefa é
success
. O Lote determina se uma tarefa teve êxito ou não, verificando a propriedadeTaskExecutionResult
da propriedade executionInfo. -
Mal-sucedida: uma tarefa cujo resultado da execução da tarefa é
failure
.
O exemplo de código .NET a seguir mostra como recuperar contagens de tarefas por estado.
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);
Você pode usar um padrão semelhante para REST e outras linguagens com suporte para obter as contagens de tarefa para um trabalho.
Contagens de estados de nós
A operação Listar Contagens de Nós de Pool lista nós de computação pelos seguintes estados em cada pool. Contagens de agregação separadas são fornecidas para nós dedicados e nós spot em cada pool.
- Criando: uma VM alocada no Azure que ainda não iniciou o processo de ingresso em um pool.
- Ociosa: um nó de computação disponível que não está executando uma tarefa atualmente.
- LeavingPool: um nó que está saindo do pool, seja porque o usuário o removeu explicitamente ou porque o pool está redimensionando ou reduzindo verticalmente de modo automático.
- Offline: um nó que o Lote não pode usar para agendar novas tarefas.
-
Admitiu preempção: um nó spot que foi removido do pool porque o Azure recuperou a VM. Um nó
preempted
pode ser reinicializado quando a capacidade da VM spot substituta está disponível. - Reinicializando: um nó que está reinicializando.
- Refazendo a imagem: um nó no qual o sistema operacional está sendo reinstalado.
- Em execução: um nó que está executando uma ou mais tarefas (exceto a tarefa iniciar).
- Iniciando: um nó no qual o serviço de Lote está iniciando.
-
StartTaskFailed: um nó no qual a tarefa iniciar falhou e esgotou todas as novas tentativas e no qual
waitForSuccess
está definido na tarefa iniciar. O nó não é utilizável para execução de tarefas. - Desconhecido: um nó que perdeu contato com o serviço de Lote e cujo estado não é conhecido.
- Não utilizável: um nó que não pode ser usado para execução da tarefa devido a erros.
-
WaitingForStartTask: um nó no qual a tarefa iniciar começou a ser executada, mas
waitForSuccess
está definida e a tarefa iniciar não foi concluída.
O seguinte snippet de C# mostra como listar as contagens de nó para todos os pools na conta atual:
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);
}
O snippet C# a seguir mostra como listar contagens de nós para um determinado pool na conta atual.
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);
}
Você pode usar um padrão semelhante para REST e outras linguagens compatíveis para obter contagens de nó para pools.
Próximas etapas
- Saiba mais sobre o Fluxo de trabalho e recursos primários do serviço de lote como pools, nós, trabalhos e tarefas.
- Para saber mais sobre a aplicação de filtros a consultas que listam recursos do Lote, veja Criar consultas para listar recursos do Lote com eficiência.