O Docker é uma solução muito recente e talvez por isso que tenha tão pouca documentação sobre coisas não triviais. Com base nisso, farei um pequeno resumo dos passos que pode seguir para analisar seu ambiente para encontrar a causa raiz em caso do problema.
Parâmetro PS
Como o básico, temos o comando “docker ps” ele nos mostra o estado dos containers. Ele por padrão (sem parâmetros) mostra quais estão em execução, mas com os parâmetro -a ele mostra todos os containers, incluindo os que não estão em execução:
Os containers que tiverem a informação “Exited” na coluna “STATUS” não estão mais em execução e o número que aparece entre parentes é o código de saída do processo, ou seja, qualquer coisa diferente de “0” indica um problema.
Log
Você pode analisar o log também. O Docker por padrão envia logs via syslog, ou seja, acesse o arquivo de log geral do seu GNU/Linux, que no caso do Debian é o “/var/log/syslog”:
# tail -f /var/log/syslog | grep -i “docker”
Logs
Diferente de apenas analisar o log do host docker, você pode ver o resultado do comando executando no container. Isso pode ser muito útil para entender a saída de erro, que normalmente não aparece no log do syslog:
# docker logs <container ID>
No meu caso abaixo, ficou fácil:
Stats
Caso você suspeite de uso irresponsável dos recursos, pode usar o parâmetro “stats” do docker. Com o comando abaixo listará todos os containers e seus respectivos usos do recurso do host:
docker ps -q | xargs docker stats
Sysdig
Não conhece Sysdig? Veja esse vídeo.
Caso esteja usando Debian, será necessário instalar o pacote mais novo. Você pode fazer tudo com o comando abaixo:
# wget http://ftp.us.debian.org/debian/pool/main/s/sysdig/sysdig_0.1.99-1_amd64.deb ; wget http://ftp.us.debian.org/debian/pool/main/s/sysdig/sysdig-dkms_0.1.99-1_all.deb ; dpkg -i sysdig*
Depois será necessário reiniciar o módulo do sysdig:
# rmmod sysdig-probe; modprobe sysdig-probe
Processamento
Para analisar o alto consumo de processador é simples. Use o comando abaixo:
# sudo sysdig -pc -c topprocs_cpu
O parâmetro “-pc” adiciona o contexto de containers, ou seja, é o mesmo comando padrão de processamento do sysdig, porém com o adendo sobre containers.
Veja o retorno desse comando:
Eu executei um grep recursivo no container “trusting_mayer” apenas para efeito de teste. E veja nosso container como o processo que mais consome processador.
Rede
É possível saber quem são os maiores utilizadores de recurso de redes com o comando abaixo:
# sysdig -pc -c topprocs_net
Veja o retorno:
Resumindo. Uso de rede não é o problema aqui, certo?
Caso tenha interesse em saber quais as conexões abertas nesse momento, use o comando abaixo:
# sysdig -pc -c topconns
Veja o retorno:
Interessado em ir um pouco mais fundo nessa analise? Que tal ver os dados que trafegam nessas conexões?
# sysdig -A -cecho_fds container.name=tender_elion and fd.port=80
No lugar de “tender_elion” coloque o nome do seu container e o mesmo para a porta.
Veja o retorno:
Como podemos ver, é apenas o apt-get instalando pacotes.
Disco
E se o problema for algo relacionado a uso do disco?
Com o comando abaixo é possível ter uma pista:
# sysdig -pc -c topprocs_file
Veja o retorno:
Podemos ver que tem alguém ali consumindo bastante disco.
E se eu quiser mais informação sobre quais são os arquivos maiores e afins?
# sysdig -pc -c topfiles_bytes
Veja o retorno:
Agora temos mais informações.
Segurança
Suspeitou de algum problema de segurança? Analise todos os comandos executados, tanto no host, como no container com o comando abaixo:
# sysdig -pc -c spy_users
Veja o retorno:
Mais logs
Quer analisar todos os logs em apenas um tela? Simples assim:
# sysdig -pc -cspy_logs
Veja o retorno:
Muito dado, certo? Quer ver os logs de um container em específico?
# sysdig -pc -cspy_logs container.name=condescending_einstein
Lembre-se de mudar o nome do container.
Veja o retorno:
Com todo esses dados, acho que agora sua analise da causa raiz do problema fique mais fácil.
Referência
https://sysdig.com/let-light-sysdig-adds-container-visibility/
http://www.sysdig.org/wiki/
0sem comentários ainda