Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Configuración del Archivo Docker Compose | Monitoreo y Registro en DevOps
Introducción a DevOps

bookConfiguración del Archivo Docker Compose

Ahora que todas las configuraciones necesarias están listas — para Filebeat, Logstash y la aplicación Flask — es momento de integrarlas y ejecutarlas como un solo sistema. Para ello, utilizaremos Docker Compose.

Note
Definición

Docker Compose es una herramienta que permite definir todos los contenedores requeridos en un solo archivo YAML y ejecutarlos con un solo comando.

En lugar de escribir un comando docker run separado para cada servicio, simplemente se escriben sus configuraciones en docker-compose.yml y se ejecuta todo junto.

Un archivo docker-compose.yml simple se ve así:

docker-compose.yml

docker-compose.yml

copy

Ahora, vamos a crear un archivo completo paso a paso, explicando cada contenedor en el proceso.

Aplicación Flask

Esta es la aplicación principal que genera registros.

docker-compose.yml

docker-compose.yml

copy

Este bloque indica a Docker que construya el contenedor desde la carpeta actual (donde se encuentra tu Dockerfile).

El contenedor se llamará flask-app. La línea volumes conecta la carpeta local ./logs con /logs dentro del contenedor. De esta manera, todos los registros creados por la aplicación se guardan tanto dentro del contenedor como en tu computadora.

La aplicación se ejecuta dentro del contenedor en el puerto 5000, pero lo mapeamos al puerto 5050 en tu máquina para que puedas acceder a ella en tu navegador en http://localhost:5050.

Filebeat

Filebeat actúa como un agente que monitorea archivos de registro y envía nuevas entradas a Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat se ejecuta desde la imagen oficial 8.15.0. Se ejecuta como el usuario root para tener permisos de lectura sobre los archivos de registro.

Se adjunta la carpeta ./logs en modo de solo lectura y el archivo de configuración filebeat.yml. Esto indica a Filebeat qué registros debe monitorear y a dónde enviarlos. depends_on garantiza que Filebeat se inicie solo después de que la aplicación y Logstash estén en funcionamiento.

Logstash

Logstash recibe los registros de Filebeat, los procesa (por ejemplo, analiza JSON) y los reenvía a Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Este contenedor utiliza la imagen oficial de Logstash.

Montamos el archivo de configuración logstash.conf, que indica a Logstash cómo procesar los registros entrantes. El contenedor se inicia solo después de que Elasticsearch esté en funcionamiento, ya que necesita un destino para los registros procesados.

Se expone el puerto 5044 para que Filebeat pueda enviar datos a Logstash.

Elasticsearch

Elasticsearch almacena los registros como documentos y permite realizar búsquedas rápidas sobre ellos.

docker-compose.yml

docker-compose.yml

copy

Utilizamos la imagen oficial de Elasticsearch versión 8.15.0.

  • discovery.type=single-node especifica que estamos ejecutando un clúster de un solo nodo (suficiente para pruebas locales);
  • xpack.security.enabled=false desactiva la seguridad para que no sea necesario gestionar nombres de usuario y contraseñas;
  • ES_JAVA_OPTS limita el uso de memoria del proceso Java.

El servicio está accesible en el puerto 9200 en http://localhost:9200.

Kibana

Kibana es una interfaz web para Elasticsearch. Permite visualizar registros y crear paneles de control.

docker-compose.yml

docker-compose.yml

copy

Utilizamos la imagen oficial de Kibana.

El puerto 5601 está expuesto para que puedas acceder a Kibana en tu navegador en http://localhost:5601.

ELASTICSEARCH_HOSTS dirige Kibana a nuestro contenedor de Elasticsearch para que pueda obtener y mostrar datos.

Archivo docker-compose.yml final

A continuación se muestra el archivo completo de Docker Compose con todos los servicios conectados en el orden adecuado:

docker-compose.yml

docker-compose.yml

copy

Este docker-compose.yml inicia todos los servicios en el orden correcto. La aplicación Flask genera registros, Filebeat los recopila y los envía a Logstash, Logstash procesa los registros y los reenvía a Elasticsearch, y Kibana proporciona una interfaz web para visualizar y analizar los datos.

Solo queda ejecutar el sistema y probarlo, lo cual se abordará en el próximo capítulo.

1. ¿Cuál es el propósito principal de Docker Compose en esta configuración?

2. ¿Qué servicio es responsable de recopilar los archivos de registro de la aplicación Flask y enviarlos a Logstash?

question mark

¿Cuál es el propósito principal de Docker Compose en esta configuración?

Select the correct answer

question mark

¿Qué servicio es responsable de recopilar los archivos de registro de la aplicación Flask y enviarlos a Logstash?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.7

bookConfiguración del Archivo Docker Compose

Desliza para mostrar el menú

Ahora que todas las configuraciones necesarias están listas — para Filebeat, Logstash y la aplicación Flask — es momento de integrarlas y ejecutarlas como un solo sistema. Para ello, utilizaremos Docker Compose.

Note
Definición

Docker Compose es una herramienta que permite definir todos los contenedores requeridos en un solo archivo YAML y ejecutarlos con un solo comando.

En lugar de escribir un comando docker run separado para cada servicio, simplemente se escriben sus configuraciones en docker-compose.yml y se ejecuta todo junto.

Un archivo docker-compose.yml simple se ve así:

docker-compose.yml

docker-compose.yml

copy

Ahora, vamos a crear un archivo completo paso a paso, explicando cada contenedor en el proceso.

Aplicación Flask

Esta es la aplicación principal que genera registros.

docker-compose.yml

docker-compose.yml

copy

Este bloque indica a Docker que construya el contenedor desde la carpeta actual (donde se encuentra tu Dockerfile).

El contenedor se llamará flask-app. La línea volumes conecta la carpeta local ./logs con /logs dentro del contenedor. De esta manera, todos los registros creados por la aplicación se guardan tanto dentro del contenedor como en tu computadora.

La aplicación se ejecuta dentro del contenedor en el puerto 5000, pero lo mapeamos al puerto 5050 en tu máquina para que puedas acceder a ella en tu navegador en http://localhost:5050.

Filebeat

Filebeat actúa como un agente que monitorea archivos de registro y envía nuevas entradas a Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat se ejecuta desde la imagen oficial 8.15.0. Se ejecuta como el usuario root para tener permisos de lectura sobre los archivos de registro.

Se adjunta la carpeta ./logs en modo de solo lectura y el archivo de configuración filebeat.yml. Esto indica a Filebeat qué registros debe monitorear y a dónde enviarlos. depends_on garantiza que Filebeat se inicie solo después de que la aplicación y Logstash estén en funcionamiento.

Logstash

Logstash recibe los registros de Filebeat, los procesa (por ejemplo, analiza JSON) y los reenvía a Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Este contenedor utiliza la imagen oficial de Logstash.

Montamos el archivo de configuración logstash.conf, que indica a Logstash cómo procesar los registros entrantes. El contenedor se inicia solo después de que Elasticsearch esté en funcionamiento, ya que necesita un destino para los registros procesados.

Se expone el puerto 5044 para que Filebeat pueda enviar datos a Logstash.

Elasticsearch

Elasticsearch almacena los registros como documentos y permite realizar búsquedas rápidas sobre ellos.

docker-compose.yml

docker-compose.yml

copy

Utilizamos la imagen oficial de Elasticsearch versión 8.15.0.

  • discovery.type=single-node especifica que estamos ejecutando un clúster de un solo nodo (suficiente para pruebas locales);
  • xpack.security.enabled=false desactiva la seguridad para que no sea necesario gestionar nombres de usuario y contraseñas;
  • ES_JAVA_OPTS limita el uso de memoria del proceso Java.

El servicio está accesible en el puerto 9200 en http://localhost:9200.

Kibana

Kibana es una interfaz web para Elasticsearch. Permite visualizar registros y crear paneles de control.

docker-compose.yml

docker-compose.yml

copy

Utilizamos la imagen oficial de Kibana.

El puerto 5601 está expuesto para que puedas acceder a Kibana en tu navegador en http://localhost:5601.

ELASTICSEARCH_HOSTS dirige Kibana a nuestro contenedor de Elasticsearch para que pueda obtener y mostrar datos.

Archivo docker-compose.yml final

A continuación se muestra el archivo completo de Docker Compose con todos los servicios conectados en el orden adecuado:

docker-compose.yml

docker-compose.yml

copy

Este docker-compose.yml inicia todos los servicios en el orden correcto. La aplicación Flask genera registros, Filebeat los recopila y los envía a Logstash, Logstash procesa los registros y los reenvía a Elasticsearch, y Kibana proporciona una interfaz web para visualizar y analizar los datos.

Solo queda ejecutar el sistema y probarlo, lo cual se abordará en el próximo capítulo.

1. ¿Cuál es el propósito principal de Docker Compose en esta configuración?

2. ¿Qué servicio es responsable de recopilar los archivos de registro de la aplicación Flask y enviarlos a Logstash?

question mark

¿Cuál es el propósito principal de Docker Compose en esta configuración?

Select the correct answer

question mark

¿Qué servicio es responsable de recopilar los archivos de registro de la aplicación Flask y enviarlos a Logstash?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5
some-alt