Как я могу настроить журналы AWS CloudWatch с контейнером Docker ECS - PullRequest
0 голосов
/ 03 июня 2018

Я использую Amazon ECS, а образ докера использует приложение php.Все работает нормально.

В точке входа я использую supervisord на переднем плане, и эти журналы в настоящее время отправляются в журналы cloudwatch.

В моем образе докера у меня есть журналы, отправляемые в файлы

/var/log/apache2/error.log
/var/log/apache2/access.log
/var/app/logs/dev.log
/var/app/logs/prod.log

Теперь я хочу отправить эти журналы в облачные часы aws.что лучше для этого.Кроме того, у меня есть несколько контейнеров для одного приложения, поэтому, например, все четыре контейнера будут иметь эти журналы.

Первоначально я думал установить агент журналов aws в самом контейнере, но я должен использовать один и тот же образ док-станции для локальных, ci и nonprodсреды, поэтому я не хочу использовать там логи cloudwatch.

Есть ли другой способ для этого?

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Вы можете использовать драйвер ведения журнала awslogs в Docker

Обратитесь к документации по настройке https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html

0 голосов
/ 06 мая 2019

В определении задачи укажите конфигурацию ведения журнала следующим образом:

"logConfiguration": {
  "logDriver": "awslogs", 
  "options": {
    "awslogs-group": "LogGroup",
    "awslogs-region": "us-east-1",
    "awslogs-stream-prefix": "Prefix"
  }
}
  • awslogs-stream-prefix необязательно для EC2 типа запуска, но необходимо для Fargate

В разделе UserData при запуске нового экземпляра зарегистрируйте экземпляр в кластере и убедитесь, что вы также указали запись типа awslogs:

#!/bin/bash
echo 'ECS_CLUSTER=ClusterName' > /etc/ecs/ecs.config
echo ECS_AVAILABLE_LOGGING_DRIVERS='[\"json-file\", \"awslogs\"]' >> /etc/ecs/ecs.config
start ecs

Дополнительная информация:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html

0 голосов
/ 04 июня 2018

Вы должны сделать две вещи:

  1. Сконфигурировать определение задачи ECS для получения журналов из вывода контейнера и передачи их в группу / поток журналов CloudWatch.Для этого вы добавляете свойство LogConfiguration к каждому свойству ContainerDefinition в определении вашей задачи ECS.Вы можете увидеть документы для этого здесь , здесь и здесь .
  2. Вместо записи журналов в файл в контейнере, вместозапишите их в /dev/stdio или /dev/stdout / /dev/stderr.Вы можете просто использовать эти пути в своей конфигурации Apache, и вы должны увидеть сообщения журнала Apache, выведенные в журнал контейнера.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...