Configuració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.
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
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
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
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
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
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
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
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?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.7
Configuració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.
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
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
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
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
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
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
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
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?
¡Gracias por tus comentarios!