Exercício - Monitorizar a sua tarefa do serviço Azure Batch na CLI
Se estiveres a utilizar o Azure Batch para executar tarefas intensivas, muitas vezes quererás saber como as tarefas estão a correr.
Como arquiteto de soluções para a organização sem fins lucrativos, necessita de maneiras de aceder ao que está a acontecer no Azure Batch. Você também precisa determinar se os nós e as tarefas estão funcionando, até onde progrediram e se produziram arquivos de saída para download.
Nesta unidade, você criará um trabalho semelhante ao da unidade anterior, monitorará o progresso de suas tarefas e baixará os arquivos que as tarefas produzem como saída, tudo usando a CLI do Azure.
Importante
Os exercícios deste módulo são opcionais. Para concluir os exercícios, você precisará de sua própria assinatura do Azure.
Monitorar tarefas usando a CLI
O Azure Batch lida com todos os detalhes de criação e gestão de nós de computação e de agendar tarefas para serem executadas nesses nós.
Quando se criou tarefas na última unidade, o Azure Batch as enfileirou para serem executadas no pool. Depois de se verificar que os nós tinham capacidade disponível, o Azure Batch programou as tarefas para serem executadas nesses nós.
No final da última unidade, eliminámos a tarefa, o que resultou na eliminação de todas as suas tarefas. Vamos agora criar um novo trabalho e tarefas. Vale a pena notar que excluir e recriar tarefas é uma operação bastante rápida e permite que você separe facilmente diferentes experimentos e projetos no Azure Batch. Por outro lado, excluir e recriar entidades de Lote de nível superior (como contas) leva mais tempo, porque o pool de Lotes precisa ser recriado e as máquinas virtuais alocadas.
Entre em portal Azure.
Abra o Cloud Shell selecionando o ícone do Cloud Shell (>_) no menu superior.
Execute o seguinte comando no Cloud Shell para criar um novo trabalho em lote:
az batch job create \ --id myjob2 \ --pool-id mypool
Nomeámo-lo de forma diferente para evitar qualquer conflito com o trabalho da unidade anterior, que está agendada para eliminação, mas ainda não necessariamente eliminada.
Execute o seguinte comando para criar tarefas em lote dentro deste novo trabalho:
for i in {1..10} do az batch task create \ --task-id mytask$i \ --job-id myjob2 \ --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'" done
Execute o seguinte comando no Cloud Shell para exibir o status de uma das tarefas que você criou:
az batch task show \ --job-id myjob2 \ --task-id mytask1
Baixar os resultados da tarefa usando a CLI
Para verificar se o trabalho em lote foi executado corretamente, você pode baixar e examinar os arquivos criados.
Execute o seguinte comando no Cloud Shell para mostrar uma tabela de todos os arquivos gerados por uma das tarefas que você criou:
az batch task file list \ --job-id myjob2 \ --task-id mytask5 \ --output table
Observação
Se vir uma mensagem de erro
The files of the specified task cannot be accessed as the task state is still active
, aguarde alguns minutos e execute o comando novamente.Execute o seguinte comando no Cloud Shell para criar um diretório dedicado para saídas de tarefas e navegue até ele:
mkdir taskoutputs && cd taskoutputs
Execute o seguinte comando no Cloud Shell para baixar os arquivos gerados por todas as tarefas que você criou:
for i in {1..10} do az batch task file download \ --job-id myjob2 \ --task-id mytask$i \ --file-path stdout.txt \ --destination ./stdout$i.txt done
As tarefas têm um diretório de trabalho padrão e, por padrão, seu trabalho é direcionado para
stdout.txt
. Ao fazer looping, podemos redirecionarstdout.txt
para versões numeradas destdout.txt
, cada uma das quais mostra o trabalho de uma determinada tarefa e qual nó foi usado para executá-la.Execute o seguinte comando para exibir o conteúdo de texto de alguns dos arquivos gerados por exemplo:
cat stdout1.txt && cat stdout2.txt
Essa saída mostra diversas tarefas a serem agendadas em diferentes nós à medida que o agendador de lote as processa.
Mais uma vez, deixaremos a conta do Azure Batch e o pool de nós de trabalho em funcionamento para uso na próxima unidade, mas excluiremos a tarefa do Batch. Como o trabalho em lote atua como um contêiner para suas tarefas em lote, essas tarefas também são excluídas.
Use o seguinte comando para excluir o trabalho em lote:
az batch job delete --job-id myjob2 -y