Как настроить ведение журнала Docker для условной отправки в CloudWatch? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть следующее в docker-compose.yml

  web:
    image: my_web
    build:
      context: ./
      dockerfile: web.docker
    container_name: my_web
    networks:
      - front
    ports:
      - "80:8080"
    volumes:
      - wwwlogs:/var/logs/www
    env_file:
      - ${SERVICE_ENVIRONMENT}.env
    links:
      - revproxy
    logging:
      driver: awslogs
      options:
        awslogs-group: my-web-group
        awslogs-region: us-east-1
        awslogs-stream-prefix: my-web

Это отлично работает на производстве и отправляет все в CloudWatch, как и ожидалось.Однако я не совсем понимаю, как это должно работать, когда я хочу использовать один и тот же файл Docker локально (не отправлять в AWS, просто войти в STDOUT / STDERR), а также в стадии подготовки (где я хочу отправить в другой awslogs-group / -prefix).

Есть мысли?В общем, я не фанат наличия отдельных файлов Docker для каждой среды - дублированный ввод кода увеличивает вероятность того, что что-то будет пропущено или не поддерживается должным образом.Но Докер, похоже, имеет ограниченную способность условно предоставлять вещи.

1 Ответ

0 голосов
/ 23 октября 2018

Это больше ограничения в Docker, что вы не можете указать несколько драйверов ведения журнала.Это будет более сложная отправка нескольким получателям с помощью одного файла docker-compose, так как он не поддерживается docker, но это выполнимо.

Например, вы можете использовать Fluentd logging driver и выпридется запустить отдельный контейнер с коляской для Fluentd .Затем в ваших конфигах вы можете создать правило маршрутизации в зависимости от среды.Вы можете сказать dev маршрутов к 'stdout' и prod маршрутов к 'awslogs', используя что-то вроде fluentd плагин CloudWatch logs .

Это еще один пример того, какнастроить Fluentd с помощью docker-compose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...