Я хотел бы знать, какой самый простой способ переслать мои журналы контейнера docker на сервер ELK, до сих пор решения, которые я пробовал после поиска в Интернете, вообще не работали.
В принципе, у меня есть образ docker, который я запускаю с помощью docker-compose, этот контейнер ничего не регистрирует локально (он состоит из разных служб, но ни одна из них не является logstash или чем-то еще), но я вижу, что регистрация проходит docker logs -tf imageName
или docker-compose logs
. Поскольку я запускаю контейнеры с помощью compose, я не могу использовать (или, по крайней мере, я не знаю, как) --logs-driver
опция docker.
Таким образом, мне было интересно, может ли кто-нибудь немного просветить меня относительно того, как пересылать эти журналы, например, в контейнер ELK.
Заранее спасибо,
С уважением
решение:
Благодаря madeddie я смог решить свою проблему следующим образом, упомянув, что я использовал базовый ELK-stack-in-containers, который предложил madeddie в своем посте.
Сначала я обновляю docker-compose.yml
файл моего контейнера для добавления записей для ссылки на ведение журнала, как сказал мне мэдди, я включил запись для каждой службы, фрагмент моего docker-compose выглядит следующим образом
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
Во-вторых, мне пришлось использовать другой номер порта для каждого сервиса, чтобы иметь возможность пересылать журналы.
Наконец, я обновил свой контейнер elk docker-compose.yml
файл для сопоставления каждого порта upd, куда я отправлял свои журналы, с тем, который прослушивает 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
Эта конфигурация и добавление записи gelf {}
в logstash.conf
чтобы это сработало, также важно правильно настроить IP-адрес службы docker.
С уважением!