Introdução
O Docker tornou-se uma plataforma amplamente adotada para a contenção de aplicações, mas a gestão dos registos destes containers pode ser um aspeto crucial para manter um ambiente Docker saudável e eficiente. Este tutorial irá guiá-lo através do processo de configuração de registos para os seus containers Docker, desde os fundamentos até técnicas mais avançadas, para o ajudar a obter melhor visibilidade e controlo sobre o comportamento da sua aplicação.
Introdução aos Registos do Docker
O Docker é uma plataforma popular de contenção que permite aos desenvolvedores empacotar e implantar aplicações de forma consistente e repetível. Quando se executam aplicações em containers Docker, os registos são um aspeto crucial para monitorização e resolução de problemas. O Docker fornece várias opções para configurar e gerir os registos das suas aplicações em containers.
Compreendendo os Registos do Docker
O Docker utiliza o driver de registos para gerir os registos gerados pelos containers. O driver de registos determina como os registos são armazenados e acedidos. O Docker suporta vários drivers de registos, incluindo:
json-file: O driver de registos predefinido, que armazena os registos em formato JSON no sistema de ficheiros do host.syslog: Envia os registos para um servidor syslog.journald: Envia os registos para o registo do sistemad.gelf: Envia os registos para um ponto final Graylog Extended Log Format (GELF).fluentd: Envia os registos para um servidor Fluentd.awslogs: Envia os registos para os registos do Amazon CloudWatch.splunk: Envia os registos para uma instância do Splunk Enterprise ou Splunk Cloud.
A escolha do driver de registos depende das necessidades da sua aplicação, da infraestrutura em que está a executar e das ferramentas que utiliza para gestão e análise de registos.
Aceder aos Registos dos Containers
Pode aceder aos registos de um container em execução utilizando o comando docker logs. Este comando permite-lhe visualizar os registos de um container específico, seguir os registos em tempo real e até filtrar os registos com base em vários critérios.
## Visualizar os registos de um container
docker logs my-container
## Seguir os registos em tempo real
docker logs -f my-container
## Visualizar as últimas 10 linhas dos registos
docker logs --tail 10 my-container
Por defeito, o comando docker logs recupera os registos do driver de registos especificado para o container. Se estiver a utilizar o driver json-file, os registos são armazenados no sistema de ficheiros do host e pode aceder-lhes diretamente a partir do host.
Configurando Registos para Containers Docker
Configurando o Driver de Registos
Pode configurar o driver de registos para um container Docker de várias maneiras:
Definir o driver de registos para todo o daemon Docker:
## Editar o ficheiro de configuração do daemon Docker ## Adicionar a configuração do driver de registos ## Reiniciar o daemon DockerDefinir o driver de registos para um container específico:
## Executar um container com um driver de registos específico docker run -d --log-driver=syslog --log-opt syslog-address=tcp://192.168.1.100:514 my-appDefinir o driver de registos para um serviço Docker:
## Criar um serviço Docker com um driver de registos específico docker service create --log-driver=fluentd --log-opt fluentd-address=192.168.1.100:24224 my-service
Configurando Opções de Registos
Dependendo do driver de registos, pode configurar várias opções para personalizar o comportamento de registo. Algumas opções comuns incluem:
max-size: O tamanho máximo do ficheiro de registo antes de ser rodado.max-file: O número máximo de ficheiros de registo a manter.syslog-address: O endereço do servidor syslog.fluentd-address: O endereço do servidor Fluentd.awslogs-group: O nome do grupo de registos CloudWatch.splunk-url: A URL da instância Splunk.
Pode definir estas opções utilizando a flag --log-opt ao executar um container ou criar um serviço.
Visualizando Dados Registados
Após configurar o driver de registos e as opções, pode visualizar os dados registados utilizando as ferramentas apropriadas. Por exemplo, se estiver a utilizar o driver json-file, pode visualizar os registos diretamente no sistema de ficheiros do host. Se estiver a utilizar um serviço de registo remoto como Syslog ou Fluentd, precisará de aceder aos registos através da respetiva interface de gestão.
Técnicas Avançadas de Registo
Agregação de Registos com Fluentd
O Fluentd é um popular coletor de dados de código aberto que pode ser usado para agregar e processar registos de várias fontes, incluindo containers Docker. Para usar o Fluentd com Docker, siga estes passos:
Instale o Fluentd numa máquina hospedeira:
## Instalar o Fluentd no Ubuntu 22.04 sudo apt-get update sudo apt-get install -y td-agentConfigure o Fluentd para recolher registos de containers Docker:
## Editar o ficheiro de configuração do Fluentd sudo vim /etc/td-agent/td-agent.conf ## Adicionar a seguinte configuração <source> @type docker tag docker.* dump_stdin true </source> <match docker.**> @type forward send_timeout 60s recover_wait 10s heartbeat_interval 1s hard_timeout 60s <server> host 192.168.1.100 port 24224 </server> </match>Reinicie o serviço Fluentd:
sudo systemctl restart td-agentExecute um container Docker com o driver de registos
fluentd:docker run -d --log-driver=fluentd --log-opt fluentd-address=192.168.1.100:24224 my-app
Com esta configuração, os registos dos seus containers Docker serão encaminhados para o servidor Fluentd, onde poderá processá-los, analisá-los e armazená-los mais a fundo.
Integração com Elasticsearch e Kibana
Outra técnica avançada de registo é integrar os registos Docker com o Elasticsearch e o Kibana. O Elasticsearch é um potente motor de pesquisa e análise, enquanto o Kibana fornece uma interface amigável para visualizar e analisar os dados registados.
Para integrar os registos Docker com o Elasticsearch e o Kibana, pode usar o driver de registos logstash ou o driver de registos elastic. Aqui está um exemplo usando o driver logstash:
Execute uma pilha Elasticsearch e Kibana usando o Docker Compose:
version: "3" services: elasticsearch: image: elasticsearch:7.9.2 environment: - discovery.type=single-node kibana: image: kibana:7.9.2 ports: - 5601:5601 logstash: image: logstash:7.9.2 command: logstash -f /etc/logstash/conf.d/logstash.conf volumes: - ./logstash.conf:/etc/logstash/conf.d/logstash.confCrie um ficheiro
logstash.confcom a seguinte configuração:input { docker { host => "unix:///var/run/docker.sock" tags => ["docker"] } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "docker-%{+YYYY.MM.dd}" } }Execute a pilha Elasticsearch, Kibana e Logstash:
docker-compose up -dExecute um container Docker com o driver de registos
logstash:docker run -d --log-driver=logstash --log-opt logstash-address=logstash:5000 my-app
Com esta configuração, os registos dos seus containers Docker serão encaminhados para o Logstash, que os enviará para o Elasticsearch. Pode então usar o Kibana para visualizar e analisar os dados registados.
Resumo
Neste guia abrangente, aprenderá a configurar os registos dos seus containers Docker, desde as definições fundamentais até técnicas de registo mais avançadas. No final deste tutorial, terá um conhecimento profundo de como otimizar as capacidades de registo do seu ambiente Docker, permitindo-lhe solucionar problemas eficazmente, monitorizar as suas aplicações e manter uma infraestrutura containerizada bem organizada e eficiente.



