Docker-compose извлекает два изображения, приложение и fluentd, но никакие журналы не отправляются на стандартный вывод для fluentd - PullRequest
0 голосов
/ 25 октября 2019

Я свободно говорю и использую два изображения докера. Одно изображение свободно, а другое - мое веб-приложение. Веб-приложение создает журналы, а fluentd прослушивает порт с типом in_forward, но журналы не отправляются в файл stdout

Docker-compose.yml

  dataporter:
    image: <app-docker>
    command: <associated command>
    ports:
      - 80:8080
    links:
      - fluentd
    logging:
      driver: "fluentd"
      options:
        fluentd-address: :24224
        tag: data-porter

  fluentd:
    image: <fluentd-docker>
    volumes:
      - ./fluentd.conf:/fluentd/etc/fluent.conf
    ports:
      - "24224:24224"

файл fluentd.conf

<source>
  @type forward
  port 24224
  bind "0.0.0.0"
</source>

<match **>
   @type stdout
</match>

Мое приложение в golang, и я поместил несколько простых операторов журнала с этим пакетом import log "github.com/sirupsen/logrus", поэтому мои простые операторы журнала log.Info("Infof print"), но новые журналы не отображаются в журналах контейнеров док-станции Fluentd, кроме начальныхоператоры запуска.

1 Ответ

0 голосов
/ 30 октября 2019

Причина, по которой в сжатом изображении не были видны логи, заключалась в том, что образу переносчика данных нужно бегло выполнить его настройку, поэтому, несмотря на то, что контейнер переносчика данных работал, он не мог правильно подключиться к контейнеру для переноса. Таким образом, любой контейнер, который должен подключиться к fluentd, должен дождаться завершения установки fluentd. Чтобы решить эту проблему, у меня был скрипт, который останавливает контейнер, использующий fluentd, и запускает его обратно. Добавление container_name: <name> в файл docker-compose.yml для справки служб со сценарием.

docker-compose up -d
sleep(3)
docker stop <container-name-relying-on-fluentd>
docker-compose up -d
...