У меня docker-compose.yaml
, как показано ниже:
Моя проблема в том, что отпечатки stdout или записанные в него журналы появляются в graylog, но только те, которые находятся под командой / usr / bin / tini - foo1.start.И когда я пытаюсь войти в Docker-контейнер службы, используя:
docker exec -it [container_hash] bash
Запуск такой команды, как echo "Hello", или запуск сценария python, в котором я не буду делать import sys; sys.stdout.write("Hello again")
-> никаких сообщений об этихпоявится в полученных сообщениях в Graylog UI.
Есть идеи, почему stdout не собирается при выполнении команды или скрипта оболочки в контейнере?и собирать распечатки только из того, что запускается в результате выполнения команды make file?
Я не понимаю этого поведения, когда я передавал весь stdout в драйвер журнала gelf в docker-compose.
Редактировать : инструкции по использованию Graylog в compose приведены здесь
version: '3.4'
services:
foo1:
ports:
- target: 8081
published: 8084
mode: host
networks:
- dev-net
command: make foo1.start
logging:
driver: gelf
options:
gelf-address: udp://localhost:12201
some-mongo:
image: "mongo:3"
networks:
- dev-net
some-elasticsearch:
image: "elasticsearch:2"
command: "elasticsearch -Des.cluster.name='graylog'"
networks:
- dev-net
graylog:
image: graylog2/server:2.1.1-1
environment:
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb1
GRAYLOG_WEB_ENDPOINT_URI: http://127.0.0.1:9000/api
links:
- some-mongo:mongo
- some-elasticsearch:elasticsearch
ports:
- "9000:9000"
- "12201:12201/udp"
networks:
- dev-net
networks:
dev-net:
ipam:
config:
- subnet: 192.168.12.0/24