Exercício – Solucionar problemas das Instâncias de Contêiner do Azure

Concluído

Para ajudar você a entender as técnicas básicas de solução problemas com instâncias de contêiner, execute algumas operações básicas como:

  • Efetuar pull de logs de contêiner
  • Ver eventos de contêiner
  • Anexar um volume de dados a uma instância de contêiner

Obter logs de sua instância de contêiner implantada anteriormente

Execute o comando az container logs a seguir para ver a saída do contêiner de aplicativo de votação de gatos e cachorros que você criou no exercício anterior:

az container logs \
  --resource-group learn-deploy-aci-rg \
  --name aci-demo-files

Você obterá uma saída semelhante a:

Checking for script in /app/prestart.sh
Running script /app/prestart.sh
Running inside /app/prestart.sh, you could add migrations to this file, e.g.:

#! /usr/bin/env bash

# Let the DB start
sleep 10;
# Run migrations
alembic upgrade head
…

Obter eventos de contêiner

O comando az container attach fornece informações de diagnóstico durante a inicialização do contêiner. Depois de iniciado, o contêiner também grava os fluxos de saída e erro padrão em seu terminal local.

Execute az container attach para anexar a seu contêiner:

az container attach \
  --resource-group learn-deploy-aci-rg \
  --name aci-demo-files

Você obterá uma saída semelhante a:

Container 'aci-demo-files' is in state 'Running'...
(count: 1) (last timestamp: 2021-09-21 23:48:14+00:00) pulling image "mcr.microsoft.com/azuredocs/azure-vote-front"
(count: 1) (last timestamp: 2021-09-21 23:49:09+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/azure-vote-front"
(count: 1) (last timestamp: 2021-09-21 23:49:12+00:00) Created container
(count: 1) (last timestamp: 2021-09-21 23:49:13+00:00) Started container

Start streaming logs:
Checking for script in /app/prestart.sh
Running script /app/prestart.sh
…

Dica

Pressione Ctrl + C para se desconectar do contêiner anexado.

Executar um comando em seu contêiner

Durante o diagnóstico e a solução de problemas, convém executar comandos diretamente no contêiner em execução.

  1. Para ver os comandos em seu contêiner, execute o comando az container exec para iniciar uma sessão interativa em seu contêiner:

    az container exec \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --exec-command /bin/sh
    

    Neste ponto, você de fato está trabalhando dentro do contêiner.

  2. Execute o comando ls para exibir o conteúdo do diretório de trabalho.

    # ls
    __pycache__  config_file.cfg  main.py  prestart.sh  static  templates  uwsgi.ini
    
  3. Você pode continuar explorando o sistema se desejado. Quando terminar, execute o comando exit para interromper a sessão interativa.

Monitorar o uso de memória e CPU no contêiner

Veja como monitorar o uso de CPU e memória em seu contêiner.

  1. Execute o comando az container show a seguir para obter a ID de sua instância de contêiner do Azure e armazenar a ID em uma variável de Bash:

    CONTAINER_ID=$(az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --query id \
      --output tsv)
    
  2. Execute o comando az monitor metrics list para recuperar informações de uso da CPU:

    az monitor metrics list \
      --resource $CONTAINER_ID \
      --metrics CPUUsage \
      --output table
    

    Observe o argumento --metrics. Aqui, CPUUsage especifica a recuperação do uso da CPU.

    Você verá um texto semelhante à seguinte saída:

    Timestamp            Name          Average
    -------------------  ------------  -----------
    2021-09-21 23:39:00  CPU Usage
    2021-09-21 23:40:00  CPU Usage
    2021-09-21 23:41:00  CPU Usage
    2021-09-21 23:42:00  CPU Usage
    2021-09-21 23:43:00  CPU Usage      0.375
    2021-09-21 23:44:00  CPU Usage      0.875
    2021-09-21 23:45:00  CPU Usage      1
    2021-09-21 23:46:00  CPU Usage      3.625
    2021-09-21 23:47:00  CPU Usage      1.5
    2021-09-21 23:48:00  CPU Usage      2.75
    2021-09-21 23:49:00  CPU Usage      1.625
    2021-09-21 23:50:00  CPU Usage      0.625
    2021-09-21 23:51:00  CPU Usage      0.5
    2021-09-21 23:52:00  CPU Usage      0.5
    2021-09-21 23:53:00  CPU Usage      0.5
    
  3. Execute este comando az monitor metrics list para recuperar informações de uso de memória:

    az monitor metrics list \
      --resource $CONTAINER_ID \
      --metrics MemoryUsage \
      --output table
    

    Aqui, você especificou MemoryUsage para o argumento --metrics para recuperar informações de uso de memória.

    Você verá um texto semelhante à seguinte saída:

    Timestamp            Name          Average
    -------------------  ------------  -----------
    2021-09-21 23:43:00  Memory Usage
    2021-09-21 23:44:00  Memory Usage  0.0
    2021-09-21 23:45:00  Memory Usage  15917056.0
    2021-09-21 23:46:00  Memory Usage  16744448.0
    2021-09-21 23:47:00  Memory Usage  16842752.0
    2021-09-21 23:48:00  Memory Usage  17190912.0
    2021-09-21 23:49:00  Memory Usage  17506304.0
    2021-09-21 23:50:00  Memory Usage  17702912.0
    2021-09-21 23:51:00  Memory Usage  17965056.0
    2021-09-21 23:52:00  Memory Usage  18509824.0
    2021-09-21 23:53:00  Memory Usage  18649088.0
    2021-09-21 23:54:00  Memory Usage  18845696.0
    2021-09-21 23:55:00  Memory Usage  19181568.0
    

No portal do Azure, as informações de uso de memória e de CPU das Instâncias de Contêiner do Azure são semelhantes a estas:

Captura de tela que mostra a exibição no portal do Azure das informações de uso de memória e de CPU das Instâncias de Contêiner do Azure.

Limpar recursos

Neste módulo, você criou recursos usando sua assinatura do Azure. Você deve limpar esses recursos para que não sejam incididas cobranças sobre eles.

  1. Na home page do Azure, selecione Todos os recursos.

  2. Localize o grupo de recursos learn-deploy-aci-rg ou qualquer nome de grupo de recursos já usado e selecione-o.

  3. Na guia Visão geral do grupo de recursos, selecione Excluir grupo de recursos.

  4. Uma nova caixa de diálogo é aberta. Insira o nome do grupo de recursos novamente e selecione Excluir. Todos os recursos que criamos neste módulo serão excluídos.