Eu gostaria de saber qual é a maneira mais fácil de encaminhar meus logs de contêiner do docker para um servidor ELK, até agora as soluções que tentei depois de ter pesquisado na internet não funcionaram.
Basicamente, tenho uma imagem docker que executo usando docker-compose, este contêiner não registra nada localmente (é composto de serviços diferentes, mas nenhum deles é logstash ou qualquer outra coisa), mas vejo o log docker logs -tf imageName
ou docker-compose logs
. Como estou iniciando os contêineres com compose, não posso fazer uso (ou pelo menos não sei como) do --logs-driver
opção do docker.
Portanto, gostaria de saber se alguém pode me esclarecer um pouco sobre como encaminhar esses logs para um contêiner ELK, por exemplo.
Obrigado antecipadamente,
Cumprimento
SOLUCAO:
Graças ao madeddie, consegui resolver meu problema da seguinte maneira, mencione que usei os contêineres básicos ELK-stack-in-containers que madeddie sugeriu em seu post.
Primeiro eu atualizo o docker-compose.yml
arquivo do meu contêiner para adicionar entradas para a referência de registro como madeddie me disse, incluí uma entrada por serviço, um trecho do meu docker-compose se parece com isso
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
Em segundo lugar, tive que usar um número de porta diferente por sevice para poder encaminhar os logs.
Finalmente, atualizei meu contêiner elk docker-compose.yml
arquivo para mapear cada uma das portas upd onde eu estava enviando meus logs para aquela que o logstash escuta
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 configuração e adicionando a entrada de gelf {}
em logstash.conf
fez funcionar, é importante também configurar corretamente o endereço IP do serviço docker.
Cumprimentos!