Как отправить журналы в Cloudwatch из фонового процесса, выполняющегося в контейнерах AWS Fargate? - PullRequest
0 голосов
/ 14 марта 2019

Я использую Fargate.Мой контейнер выполняет два процесса.Сельдерей на заднем плане и Джанго на переднем плане.Процесс переднего плана отправляет журналы на стандартный вывод, поэтому AWS позаботится об отправке журналов Django в соответствующую группу журналов Cloudwatch и Stream.

Поскольку он работает в фоновом режиме, как отправлять журналы работника сельдерея (другой поток журналов в той же группе журналов) в Cloudwatch?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Если невозможно переместить второй процесс в отдельный контейнер и зарегистрировать его как обычно, вы можете установить в контейнер пакет awslogs и настроить его для чтения файлов журнала фонового процесса и отправки содержимого в CloudWatch.Но я бы не рекомендовал такой подход.

0 голосов
/ 15 марта 2019

Опять же, это не обязательно проблема или вопрос Fargate. Для входа в сельдерей проверьте это http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging.

The worker won’t update the redirection if you create a logger instance somewhere in your task or task module.

If you want to redirect sys.stdout and sys.stderr to a custom logger you have to enable this manually, for example:

import sys

logger = get_task_logger(__name__)

@app.task(bind=True)
def add(self, x, y):
    old_outs = sys.stdout, sys.stderr
    rlevel = self.app.conf.worker_redirect_stdouts_level
    try:
        self.app.log.redirect_stdouts_to_logger(logger, rlevel)
        print('Adding {0} + {1}'.format(x, y))
        return x + y
    finally:
        sys.stdout, sys.stderr = old_outs

А для входа в систему с Fargate я бы использовал драйвер awslogs. Ниже описано, как вы настраиваете, как описано здесь: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html

При использовании консоли:

enter image description here

Или это, если в шаблоне облачной информации:

enter image description here

...