AWS Elasti c Beanstalk: потоковые журналы контейнеров для выпуска CloudWatch - PullRequest
1 голос
/ 11 февраля 2020

Я использую мультиконтейнер Beanstalk и пытаюсь пересылать журналы контейнеров в CloudWatch.

Опция в Dockerrun. aws. json не работает для меня, так как мне нужно пересылать журналы для каждого env в свою собственную группу журналов, имея универсальный zip-файл для развертывания в каждом env. К сожалению, в Dockerrun нет способа указать группу журналов в качестве переменной. aws. json.

Итак, я использую .ebextensions / 00-container-logs.config:

files:
  "/etc/awslogs/config/container_logs.conf" :
    mode: "000644"
    owner: root
    group: root
    content: |
      [app-container-logs]
      file=/var/log/containers/*-stdouterr.log
      log_group_name=`{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "AppAndCrons"]]}`
      log_stream_name=ApplicationContainerLogs

commands:
  "01":
    command: service awslogs restart

Проблема: как только docker начинает запись в новый файл, он прекращает отправку журналов в CloudWatch до тех пор, пока команда «перезапуск службы awslogs» не будет выполнена вручную. Есть идеи, пожалуйста?

1 Ответ

0 голосов
/ 26 февраля 2020

Добавление file_fingerprint_lines очень помогло, так как моя первая строка каждого файла журнала пуста (в то время как первая строка хешируется CloudWatch).

content: |
  [app-container-logs]
  file=/var/log/containers/*-stdouterr.log
  log_group_name=`{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "AppAndCrons"]]}`
  log_stream_name=ApplicationContainerLogs
  file_fingerprint_lines=1-8
...