Me gustaría saber cuál es la forma más fácil de reenviar los registros de mi contenedor docker a un servidor ELK, hasta ahora las soluciones que he probado después de buscar en Internet no funcionaron en absoluto.
Básicamente, tengo una imagen de docker que ejecuto usando docker-compose, este contenedor no registra nada localmente (está compuesto por diferentes servicios, pero ninguno de ellos es logstash o lo que sea) pero veo el registro docker logs -tf imageName
o docker-compose logs
. Como estoy iniciando los contenedores con compose, no puedo hacer uso (o al menos no se como) de la --logs-driver
opción de docker.
Por lo tanto, me preguntaba si alguien puede iluminarme un poco sobre cómo reenviar esos registros a un contenedor ELK, por ejemplo.
Gracias de antemano,
Respecto
SOLUCIÓN:
Gracias a madeddie pude lograr resolver mi problema de la siguiente manera, mencione que utilicé ELK-stack-in-containers básico que madeddie sugirió en su publicación.
Primero actualizo el docker-compose.yml
archivo de mi contenedor para agregar entradas para la referencia de registro como me dijo madeddie, incluí una entrada por servicio, un fragmento de mi docker-compose se ve así
version: '2' services: mosquitto: image: ansi/mosquitto ports: - "1883:1883" # Public access to MQTT - "12202:12202" #mapping logs logging: driver: gelf options: gelf-address: udp://localhost:12202 redis: image: redis command: redis-server --appendonly yes ports: - "6379:6379" # No public access to Redis - "12203:12203" #mapping logs volumes: - /home/dockeruser/redis-data:/data logging: driver: gelf options: gelf-address: udp://localhost:12203
En segundo lugar, tuve que usar un número de puerto diferente por servicio para poder reenviar los registros.
Finalmente, actualicé mi contenedor elk docker-compose.yml
archivo para asignar cada uno de los puertos upd donde estaba enviando mis registros al que escucha logstash
logstash: build: logstash/ command: logstash -f /etc/logstash/conf.d/logstash.conf volumes: - ./logstash/config:/etc/logstash/conf.d ports: - "5000:5000" - "12202:12201/udp" #mapping mosquitto logs - "12203:12201/udp" #mapping redis logs
Esta configuración y la adición de la entrada de gelf {}
en logstash.conf
para que funcione, también es importante configurar correctamente la dirección IP del servicio docker.
Saludos!