-
[Django] - AWS CloudWatch 사용시 로그가 2번 찍히는 이유공부/Django 2023. 5. 27. 23:44
AWS ECS Fargate로 서비스를 운영하고 있는데, 로그를 확인 해 보면 동일한 로그가 2번씩 찍히는 모습을 확인 할 수 있다.
해당 부분에서 내가 어떤 문제를 겪고 있나,,,, 혹시 테스크 2개로 돌리고 있는건 아닐지 걱정은 했지만, 2가지 모두 문제는 아니였다.
일반적으로 django 서버를 실행하는 구조가 Nginx - Gunicorn - Django 이다.
AWS 에서 실행을 할 때에도 동일한 구조인데, 여기서 ALB(LB-로드밸런서)의 Health Check는 Django의 상태를 확인하기 위해서 사용된다.ALB의 Health Check는 웹 서버의 상태를 확인하기 위해서 주기적으로 상태를 확인하는 요청을 보낸다.(나는 30초로 설정하였다.)
ALB는 Nginx를 통해 Django로 요청을 전달하고, Django는 Gunicorn을 통해 요청을 처리한다.
여기서 로그가 2번씩 보이는 것이다.다시 설명하자면,
1. ALB는 웹 서버 Health Check를 위해 Django에 요청을 보낸다. (ALB -> Django)
2. Django의 구조 상 Nginx가 요청을 먼저 처리하기 때문에 Nginx에서 로그를 생성한다.(ALB -> Nginx)
3. Django는 Nginx에서 요청을 받는다. (Nginx -> Django)
4. Django는 요청에 대한 응답을 Gunicorn 통해 처리한다. 이때 Django에서 로그를 생성한다.(Django(Gunicorn)-> Nginx)
5. Nginx는 다시 ALB로 전달한다. 이때도 Nginx는 로그를 생성한다.
6. ALB는 응답을 확인하고 Django의 상태를 확인한다.
실제로 Django와 Nginx는 각 2번의 로그를 생성한다.(요청과 응답을 반복하기 때문에)
실제로 Nginx의 로그만 2번이 찍혀있는데, 이유는 클라이언트와 직접 통신을 하는건 Nginx이고, Django는 직접 통신이 아닌 Gunicorn을 통해서 실행을 하고 Gunicorn이 Nginx와 통신을 하기때문이다.
- 어떤 문제를 해결하기 위해 검색하고 블로그에 작성한 글입니다. 부족한점이 많지만 틀린점이나 부족한점이 있다면 말씀해주시면 감사하겠습니다.
'공부 > Django' 카테고리의 다른 글
[Django] Custom Middleware를 이용해서 log 작성하기 (0) 2023.04.26 [Django] Logging - 장고 로그(debug_sql) (0) 2023.04.14 [Django]Fernet을 사용한 양방향 암호화 (0) 2023.04.07 Django - CloudWatch : 장고 로깅을 CloudWatch에 입력하기 (0) 2023.04.05 Django - S3 - nginx - 이미지업로드, 정적파일 (0) 2023.03.07