Exercício – Monitorar o trabalho em Lote do Azure na CLI
Se você estiver usando o Lote do Azure para executar tarefas intensivas, muitas vezes vai querer saber como elas estão indo.
Como arquiteto de soluções para a organização sem fins lucrativos, você precisará ter maneiras de acessar o que está acontecendo no Lote do Azure. Você também precisa determinar se os nós e as tarefas estão funcionando, até onde eles progrediram e se eles produziram arquivos de saída para download.
Nesta unidade, você vai criar um trabalho semelhante ao mostrado na unidade anterior, monitorar o progresso de suas tarefas e baixar os arquivos que as tarefas produzem como saída, tudo isso usando a CLI do Azure.
Importante
Os exercícios neste módulo são opcionais. Para concluir os exercícios, você precisará ter uma assinatura própria do Azure.
Monitorar tarefas usando a CLI
O Lote do Azure lida com todos os detalhes de criar e gerenciar de nós de computação e agendar trabalhos para execução em nós.
Quando você criou as tarefas na última unidade, o Lote do Azure as colocou na fila para execução no pool. Como foi determinado que os nós têm capacidade disponível, o Lote do Azure agendou as tarefas para serem executadas nesses nós.
No final da última unidade, excluímos o trabalho, o que levou à exclusão de todas as respectivas tarefas. Agora, vamos criar um novo trabalho e novas tarefas. É importante observar que excluir e recriar tarefas são operações relativamente rápidas e permitem separar facilmente os diferentes experimentos e projetos no Lote do Azure. Por outro lado, excluir e recriar entidades do Lote de nível superior (como por exemplo contas) leva mais tempo, pois o pool do Lote precisa ser recriado e as máquinas virtuais precisam ser alocadas.
Faça logon no Portal do 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 Lotes:
az batch job create \ --id myjob2 \ --pool-id mypool
Nomeamos de forma diferente para evitar qualquer conflito com o trabalho da unidade anterior, que teve a exclusão agendada, mas não foi necessariamente excluído ainda.
Execute o comando a seguir para criar tarefas de Lote neste 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 a saída da tarefa usando a CLI
Para verificar se o trabalho em lote foi executado corretamente, você pode baixar e examinar os arquivos que ele criou.
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 você 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 tarefa e navegar para 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 o loop, podemos redirecionarstdout.txt
para versões numeradas destdout.txt
, cada uma delas mostrando 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 amostra:
cat stdout1.txt && cat stdout2.txt
Essa saída mostra as diferentes tarefas que estão sendo agendadas em nós diferentes conforme o Agendador de Lote as processa.
Novamente, vamos deixar a conta do Lote do Azure e o pool de nós de trabalho em vigor para uso na próxima unidade, mas vamos excluir o trabalho em lotes. Como o trabalho em Lotes atua como um contêiner para suas tarefas de Lote, essas tarefas também serão excluídas.
Use o seguinte comando para excluir o trabalho do Lote:
az batch job delete --job-id myjob2 -y