Olá pessoal,

Hoje vamos ver como mostrar os recursos sendo utilizado por cada container, como: Rede, Memória, Disco e CPU.

Vamos mostrar quatro maneiras de coletar os recursos. São elas:

– Docker stats

– API

– Cadvisor

– Cgroups

Docker stats: o comando docker stats foi adicionado nas ultimas versões do Docker, com ele agora podemos verificar as métricas de cada container em tempo real, porém não temos acesso ao histórico desses containers. Para usar este comando basta colocar docker stats id_container.

API: Em cada distribuição Linux o modo de habilitar a API é de uma maneira diferente. Vou mostrar aqui como fazer no CentOS 7. Abra o arquivo /etc/sysconfig/docker e altere a linha que tem OPTIONS= por OPTIONS=--selinux-enabled -H fd:// -H tcp://0.0.0.0:4243. Após isso reinicie o serviço do docker para que a porta da API seja aberta no host. Isso quer dizer que a porta 4243 deste servidor estará acessível de qualquer outro computador. Executando o seguinte comando podemos ver os containers que estão iniciados:

curl -X GET http://ipservidor:4243/containers/json

Esse comando retorna o JSON com as informações dos containers que estão iniciado.

Cadvisor: Fornece aos usuários a visualização de consumo por processo no host e também do container em tempo real. Com ele podemos verificar os recursos de Rede, Memória, CPU e informações do sistema. Para tudo isso basta executar o seguinte comando:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

Agora vá até o seu navegador coloque o seguinte endereço http://ip:8080

Cgroups: O Docker cria a limitação de seu containers através de CGROUPS (Acesse Aqui para saber mais sobre o que é CGROUPS) com ele podemos visualizar quanto de recursos aquele processo está usando. Dentro de /sys/fs/cgroup estão os recursos que podemos limitar no Docker. Podemos acessar o diretório memory/system.slice/docker-xxxxxxx.scope e dentro dele dar um cat memory.usage_in_bytes que nos mostra a quantidade de memória que o container xxxxxxx está usando. Dentro desse diretório temos outras contadores também que nos próximos posts apresentaremos.

Bom pessoal, por hoje foi isso então, em nossos próximos posts estaremos trabalhando outros tópicos avançados dentro do ambiente Docker, então fique atento, e tendo dúvidas já sabe, nos mande uma mensagem, abraço!

Trabalha em uma Startup com foco em Plataforma como Serviço (PaaS), é especialista em Cloud Computing e Conteinerização, desenvolve todo dia uma nova maneira de resolver problemas e criar coisas novas.