Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Configuração do Arquivo Docker Compose | Monitoramento e Registro em DevOps
Introdução ao DevOps

bookConfiguração do Arquivo Docker Compose

Agora que todas as configurações necessárias estão definidas — para o Filebeat, Logstash e a aplicação Flask — é o momento de integrá-las e executá-las como um único sistema. Para isso, será utilizado o Docker Compose.

Note
Definição

Docker Compose é uma ferramenta que permite definir todos os contêineres necessários em um único arquivo YAML e executá-los com um único comando.

Em vez de escrever um comando docker run separado para cada serviço, basta definir suas configurações no docker-compose.yml e executar tudo em conjunto.

Um arquivo docker-compose.yml simples se apresenta da seguinte forma:

docker-compose.yml

docker-compose.yml

copy

Agora, vamos criar um arquivo completo passo a passo, explicando cada contêiner ao longo do processo.

Aplicação Flask

Esta é a aplicação principal que gera logs.

docker-compose.yml

docker-compose.yml

copy

Este bloco instrui o Docker a construir o contêiner a partir da pasta atual (onde seu Dockerfile está localizado).

O contêiner será nomeado como flask-app. A linha volumes conecta a pasta local ./logs ao diretório /logs dentro do contêiner. Dessa forma, todos os logs criados pela aplicação são salvos tanto dentro do contêiner quanto em seu computador.

A aplicação é executada dentro do contêiner na porta 5000, mas fazemos o mapeamento para a porta 5050 em sua máquina para que você possa acessá-la no navegador em http://localhost:5050.

Filebeat

Filebeat atua como um agente que monitora arquivos de log e envia novas entradas para o Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat é executado a partir da imagem oficial 8.15.0. É executado como usuário root para ter permissão de leitura dos arquivos de log.

A pasta ./logs é anexada em modo somente leitura, assim como o arquivo de configuração filebeat.yml. Isso informa ao Filebeat quais logs monitorar e para onde enviá-los. O parâmetro depends_on garante que o Filebeat seja iniciado apenas após a aplicação e o Logstash estarem em execução.

Logstash

Logstash recebe logs do Filebeat, processa-os (por exemplo, faz a análise de JSON) e os encaminha para o Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Este contêiner utiliza a imagem oficial do Logstash.

Montamos o arquivo de configuração logstash.conf, que instrui o Logstash sobre como processar os logs recebidos. O contêiner é iniciado somente após o Elasticsearch estar em execução, pois necessita de um destino para os logs processados.

A porta 5044 é exposta para que o Filebeat possa enviar dados ao Logstash.

Elasticsearch

O Elasticsearch armazena logs como documentos e permite realizar buscas rápidas entre eles.

docker-compose.yml

docker-compose.yml

copy

Utilizamos a imagem oficial do Elasticsearch na versão 8.15.0.

  • discovery.type=single-node especifica que estamos executando um cluster de nó único (suficiente para testes locais);
  • xpack.security.enabled=false desativa a segurança para que não seja necessário lidar com nomes de usuário e senhas;
  • ES_JAVA_OPTS limita o uso de memória do processo Java.

O serviço está acessível na porta 9200 em http://localhost:9200.

Kibana

Kibana é uma interface web para o Elasticsearch. Auxilia na visualização de logs e na criação de dashboards.

docker-compose.yml

docker-compose.yml

copy

Utilizamos a imagem oficial do Kibana.

A porta 5601 é exposta para que você possa acessar o Kibana em seu navegador em http://localhost:5601.

ELASTICSEARCH_HOSTS direciona o Kibana para o nosso contêiner Elasticsearch para que ele possa buscar e exibir dados.

docker-compose.yml final

Segue o arquivo completo do Docker Compose com todos os serviços conectados na ordem correta:

docker-compose.yml

docker-compose.yml

copy

Este docker-compose.yml inicia todos os serviços na ordem correta. A aplicação Flask gera logs, o Filebeat os coleta e envia para o Logstash, o Logstash processa os logs e encaminha para o Elasticsearch, e o Kibana fornece uma interface web para visualização e análise dos dados.

Tudo o que resta é executar o sistema e testá-lo, o que será abordado no próximo capítulo.

1. Qual é o principal objetivo do Docker Compose nesta configuração?

2. Qual serviço é responsável por coletar arquivos de log da aplicação Flask e enviá-los para o Logstash?

question mark

Qual é o principal objetivo do Docker Compose nesta configuração?

Select the correct answer

question mark

Qual serviço é responsável por coletar arquivos de log da aplicação Flask e enviá-los para o Logstash?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.7

bookConfiguração do Arquivo Docker Compose

Deslize para mostrar o menu

Agora que todas as configurações necessárias estão definidas — para o Filebeat, Logstash e a aplicação Flask — é o momento de integrá-las e executá-las como um único sistema. Para isso, será utilizado o Docker Compose.

Note
Definição

Docker Compose é uma ferramenta que permite definir todos os contêineres necessários em um único arquivo YAML e executá-los com um único comando.

Em vez de escrever um comando docker run separado para cada serviço, basta definir suas configurações no docker-compose.yml e executar tudo em conjunto.

Um arquivo docker-compose.yml simples se apresenta da seguinte forma:

docker-compose.yml

docker-compose.yml

copy

Agora, vamos criar um arquivo completo passo a passo, explicando cada contêiner ao longo do processo.

Aplicação Flask

Esta é a aplicação principal que gera logs.

docker-compose.yml

docker-compose.yml

copy

Este bloco instrui o Docker a construir o contêiner a partir da pasta atual (onde seu Dockerfile está localizado).

O contêiner será nomeado como flask-app. A linha volumes conecta a pasta local ./logs ao diretório /logs dentro do contêiner. Dessa forma, todos os logs criados pela aplicação são salvos tanto dentro do contêiner quanto em seu computador.

A aplicação é executada dentro do contêiner na porta 5000, mas fazemos o mapeamento para a porta 5050 em sua máquina para que você possa acessá-la no navegador em http://localhost:5050.

Filebeat

Filebeat atua como um agente que monitora arquivos de log e envia novas entradas para o Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat é executado a partir da imagem oficial 8.15.0. É executado como usuário root para ter permissão de leitura dos arquivos de log.

A pasta ./logs é anexada em modo somente leitura, assim como o arquivo de configuração filebeat.yml. Isso informa ao Filebeat quais logs monitorar e para onde enviá-los. O parâmetro depends_on garante que o Filebeat seja iniciado apenas após a aplicação e o Logstash estarem em execução.

Logstash

Logstash recebe logs do Filebeat, processa-os (por exemplo, faz a análise de JSON) e os encaminha para o Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Este contêiner utiliza a imagem oficial do Logstash.

Montamos o arquivo de configuração logstash.conf, que instrui o Logstash sobre como processar os logs recebidos. O contêiner é iniciado somente após o Elasticsearch estar em execução, pois necessita de um destino para os logs processados.

A porta 5044 é exposta para que o Filebeat possa enviar dados ao Logstash.

Elasticsearch

O Elasticsearch armazena logs como documentos e permite realizar buscas rápidas entre eles.

docker-compose.yml

docker-compose.yml

copy

Utilizamos a imagem oficial do Elasticsearch na versão 8.15.0.

  • discovery.type=single-node especifica que estamos executando um cluster de nó único (suficiente para testes locais);
  • xpack.security.enabled=false desativa a segurança para que não seja necessário lidar com nomes de usuário e senhas;
  • ES_JAVA_OPTS limita o uso de memória do processo Java.

O serviço está acessível na porta 9200 em http://localhost:9200.

Kibana

Kibana é uma interface web para o Elasticsearch. Auxilia na visualização de logs e na criação de dashboards.

docker-compose.yml

docker-compose.yml

copy

Utilizamos a imagem oficial do Kibana.

A porta 5601 é exposta para que você possa acessar o Kibana em seu navegador em http://localhost:5601.

ELASTICSEARCH_HOSTS direciona o Kibana para o nosso contêiner Elasticsearch para que ele possa buscar e exibir dados.

docker-compose.yml final

Segue o arquivo completo do Docker Compose com todos os serviços conectados na ordem correta:

docker-compose.yml

docker-compose.yml

copy

Este docker-compose.yml inicia todos os serviços na ordem correta. A aplicação Flask gera logs, o Filebeat os coleta e envia para o Logstash, o Logstash processa os logs e encaminha para o Elasticsearch, e o Kibana fornece uma interface web para visualização e análise dos dados.

Tudo o que resta é executar o sistema e testá-lo, o que será abordado no próximo capítulo.

1. Qual é o principal objetivo do Docker Compose nesta configuração?

2. Qual serviço é responsável por coletar arquivos de log da aplicação Flask e enviá-los para o Logstash?

question mark

Qual é o principal objetivo do Docker Compose nesta configuração?

Select the correct answer

question mark

Qual serviço é responsável por coletar arquivos de log da aplicação Flask e enviá-los para o Logstash?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5
some-alt