Как настроить и вызвать awslogs в docker-compose?

У меня AWS EC2 с CloudWatch, настроенным, как описано здесь.

Мой веб-сервер основан на создании докеров. Как настроить CloudWatch и ведение журнала вызовов? Примечание. Я не настраивал ECS в AWS.

1 ответ

Итак, я обнаружил, что достаточно просто использовать сторожевую башню python и настроить мой docker-compose.yml следующим образом:

web:
    
...
    logging:
      driver: "awslogs"
      options:
        awslogs-region: <region>
        awslogs-group: <CloudWatch group>
        awslogs-stream: <CloudWatch group stream> 

Затем в вашем файле py добавьте эти строки:

logging.basicConfig(level=logging.INFO)

app = Flask(__name__)

try:
        session = boto3.Session(
            aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
            aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
            region_name=os.environ['AWS_REGION']
        )
        handler = watchtower.CloudWatchLogHandler(
            boto3_session=session,
            log_group=os.environ.get('AWS_CLOUDWATCH_LOG_GROUP', "my-group"),
            stream_name=os.environ.get('AWS_CLOUDWATCH_LOG_STREAM', "my-group-stream"),
            create_log_group=False
        )
        app.logger.addHandler(handler)
except Exception as cerr:
    app.logger.error("CloudWatch logging setup failed: %s", cerr)

Затем вы можете просто добавить такую ​​строку:

app.logger.info("In root Page")

И вы можете увидеть все свои журналы в CloudWatch/LogGroups/my-group/my-group-stream консоли.

Другие вопросы по тегам