У Docker есть прекрасная возможноть логировать сообщения и отправлять с помощью различных двайверов.
https://docs.docker.com/config/containers/logging/...
Один из них, который работает прекрастно с Logstash, это gelf
Пример запуска
docker run -d \
-p 80:80 \
--name nginx-logs \
--log-driver=gelf \
--log-opt gelf-address=udp://ELK-host:12201 \
--log-opt tag=site.com.ua \
nginx
Если это docker-compose, тогда так:
services:
nginx:
image: nginx
hostname: nginx-log
logging:
driver: gelf
options:
gelf-address: "udp://ELK-host:12201"
tag: "site.com.ua"
В свою очередь, конфиг Logstash для директивы input такой
input {
beats {
port => 5044
}
gelf {
port => 12201
type => gelf
}
}
Единстенное, сейчас ищу как эти контейнеры с помощью Logstash разделить в Kibana с помощью тегов, когда их много. Ищу синтаксис конструкции для директивы output.