cloudwatch, slack을 이용한 Error Notification
django에서 에러가 생기면 cloudwatch에 쌓이고 이 로그를 slack으로 notification하고자 한다.
우선 django towerwatch라는 패키지를 설치한다.
pip3 install towerwatch
그리고 문서에 나와있는 대로 settings.py에 아래처럼 넣는다.
### cloudwatch
AWS_LOG_GROUP = 'main'# 생성됨
AWS_LOG_STREAM = 'main-ec2-logstream'
boto3_logs_client = boto3.client("logs", region_name=AWS_REGION)
## cloudwatch setting
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters':{
'default': { 'format': u"%(asctime)s [%(levelname)-8s] %(message)s [%(pathname)s:%(lineno)d]", 'datefmt': '%Y-%m-%d %H:%M:%S', } },
'handlers': { 'console': { 'class': 'logging.StreamHandler', },
'cloudwatch': { "level": 'DEBUG', "class": "watchtower.CloudWatchLogHandler", "boto3_client": boto3_logs_client, "log_group_name": AWS_LOG_GROUP, "log_stream_name": AWS_LOG_STREAM, "formatter": "default", } },
'loggers': { # previously named as 'root' 'django_test': { 'level': 'DEBUG', 'handlers': ['console', 'cloudwatch'], 'propagate': False, },
}
}
## views.py
## cloudwatch전송되는 로깅
logger = logging.getLogger('django_test')
if len(new_file_list) == 0:
logger.error(f'\n- Django Logging : {USER_ID} \n- UUID : {TEMP_ID} \n- Reason : No Correct Picture \n- Image url : {IMAGE}\n')
AWS_LOG_GROUP은
AWS_LOG_STREAM은 위의 로그그룹을 들어가서
보면 안에 로그가 쌓이고 있다.
이제 aws 설정을 해보자.
아래 다른사람이 cloudformation으로 구성한 간단한 cw - slack 설정이 있다. 이걸 이용하자.
https://github.com/keetonian/cw-logs-to-slack
GitHub - keetonian/cw-logs-to-slack: An application that integrates AWS CloudWatch logs and Slack
An application that integrates AWS CloudWatch logs and Slack - GitHub - keetonian/cw-logs-to-slack: An application that integrates AWS CloudWatch logs and Slack
github.com
deploy를 누르고
아까 aws_log_group를 넣는다.
그리고 slack url을 넣어야하는데,
앱을 누르고 앱 디렉터리 들어가시고
수신 웹후크를 클릭해서 slack에 추가하고
notification을 받고 싶은 slack 채널을 선택하고 앱 추가를 누르면
url이 나온다
이것을 slackurl에 넣는다.
그리고 배포하면 알림이 채널로 온다.