공부/AWS

[CloudWatch] django log를 Cloudwatch에 기록하는 방법

조용한외침 2023. 5. 28. 13:50

클라우드로 서비스를 하다보면 로그를 확인하거나 관리하면서 오류를 해결해야한다.

이번에는 django로 서비스를 하면서 Cloudwatch에서 로그를 확인 할 수 있도록 하는 방법을 기술하려고 한다.

 


1. watchtower, boto3 를 install 해야한다. (watchtower)

pip install watchtower
pip install boto3

 

2. 설치 후 AWS에 Cloud watch로 이동해서 로그 그룹 선택 후 로그 그룹 생성을 합니다.

- 로그 그룹 이름은 자유롭게 입력하세요.(저의 경우 test로 기입했다고 생각하고 설명 드리겠습니다.)

- test 로그그룹을 선택 후 로그 스트림 생성에서 원한는 이름 으로 작성(test-log로 생성하였습니다.)

 

3. watchtower에 생성했던 로그 그룹과 로그 스트림을 입력

boto3_logs_client = boto3.client('logs',region_name='ap-northeast-2')


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'formatters': {
        'aws': {
            'format': u'%(asctime)s [%(levelname)-8s] %(funcName)s - %(message)s [%(pathname)s:%(lineno)d] ',
            'datefmt': '%Y-%m-%d %H:%M:%S'
        },
    },
    'handlers': {
        'watchtower': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'watchtower.CloudWatchLogHandler',
            'boto3_client': boto3_logs_client,
            'log_group': 'test',
            'stream_name': 'test-log',
            'formatter': 'aws', 
        },
    },
    'loggers': {
        'django': {
            'level': 'INFO',
            'handlers': ['watchtower'],
            'propagate': False,
        },
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['watchtower'],
            'propagate': False,
        },
    },
}
log = logging.getLogger('django')

 

- 기존에 작성한 글에서 설명이 돼 있기 때문에 생략하겠습니다. 필요하시면 여기 에서 다시 보시기를 바라겠습니다.

- 실제로 AWS 환경변수는 env에서 사용하고 있습니다.

- 로그를 middleware에서 기록할 수 있도록 하는 부분도 기록 하였습니다. (참고하시면 도움이 될 거 같아요- 링크)

- 이렇게 설정해주면 로그를 이제 AWS에서 확인 할 수 있습니다. 

 

 

 

 

 

 

Ref. 

https://yongineer.netlify.app/aws/aws-cloudwatch%EC%97%90-%EB%B0%B1%EC%97%94%EB%93%9C-%EC%84%9C%EB%B2%84-%EB%A1%9C%EA%B9%85%ED%95%98%EA%B8%B0-(feat.-watchtower)/

 

AWS CloudWatch에 백엔드 서버 로깅하기 (feat. watchtower)

CloudWatch는 AWS에서 제공하는 모니터링 및 관찰 서비스이다. CloudWatch를 사용하여 서버의 비정상적인 동작을 감지하고 경보를 설정하고 로그와 지표를 시각화하고 자동화된 작업을 수행하고 문제

yongineer.netlify.app

https://github.com/kislyuk/watchtower

 

GitHub - kislyuk/watchtower: Python CloudWatch Logging: Log Analytics and Application Intelligence

Python CloudWatch Logging: Log Analytics and Application Intelligence - GitHub - kislyuk/watchtower: Python CloudWatch Logging: Log Analytics and Application Intelligence

github.com

https://velog.io/@dnpxm387/TIL167-AWS-CloudWatch

 

TIL#167 AWS CloudWatch log

aws cloudwatch log

velog.io

 

 

 

 

- 어떤 문제를 해결하기 위해 검색하고 블로그에 작성한 글입니다. 부족한점이 많지만 틀린점이나 부족한점이 있다면 말씀해주시면 감사하겠습니다.