AWS에서 서비스를 운영하고 있는 사람이라면, 또는 AWS Route53에 도메인을 등록하고 Https로 서비스를 하고 있는 사이트를 연동했다면 AWS Elastic Load Balancer를 사용하고 있을 것이고, 보통 다음과 같은 구조로 아키텍처를 구상했을 것이다.
위 구조를 보면 사용자는 Route53에 등록된 도메인으로 서비스에 접근하고(예: https://웨부베벱.com ) Route53에서는 해당 도메인과 연결된 Load Balancer로 요청을 보낸다. Load Balancer에서는 다음과 같이 등록된 리스너 리스트를 보고 요청에 맞는 리스너로 요청을 보내게 된다(참고: 리스너 등록 시 EC2 인스턴스의 Elastic IP를 같이 등록하기 때문에 요청을 전달할 인스턴스를 구분할 수 있다).
이렇듯 로드밸런서에는 사용자의 요청들이 모두 모이는 곳으로 서버에 대한 로깅을 하기 위한 최적의 장소이다. 역시나 AWS 로드밸런서의 옵션 기능 중에는 액세스 로그를 수집하는 기능이 있다.
속성 탭에서 속성 편집을 누르면 다음과 같이 액세스 로그를 활성화할 수 있는 화면을 볼 수 있다.
액세스 로그 기능을 활성화 하려면, AWS S3에 버킷을 생성해야 한다. AWS Elastic Load Balancer에서 AccessLog를 S3에 전송하여 보관하기 때문이다. 따라서 적절하게 버킷 이름을 설정하고, "내 대신 이 위치를 생성" 항목을 선택하면 자동으로 신규 버킷을 대신해서 생성해주고 연결한다.
S3 서비스를 들어가면 다음과 같이 성공적으로 버킷이 만들어져 있다.
S3의 breadcumb를 보면 로그 파일들이 리전별 연월일 별로 파일이 저장되는 것을 확인할 수 있다.
위 같은 과정을 통해 AWS에 올린 서비스를 접근하는 클라이언트의 액세스 관련 로그를 AWS S3에 저장하고 관리할 수 있게 되었다. 다음 포스트에서는 이 로그 파일을 ELK 스택 중 하나인 Logstash에서 Input -> Filter -> Output 하는 파이프라인을 구축하여 ElasticSearch에 저장하고 Kibana에서 모니터링 지표를 만드는 과정을 설명해보겠다.
'Programming > Server' 카테고리의 다른 글
[Shell Script] ECR 도커 컨테이너 이미지 명 및 태그 정보 추출 (0) | 2020.07.16 |
---|---|
[ELK] AWS Elastic Load Balancer Log 분석하고 대시보드 만들기[2] (0) | 2020.01.03 |
[Network HTTP, HTTPS] CORS 정책에 따른 쿠키 보안 (0) | 2019.08.13 |
[DevOps] 로그 수집 및 모니터링 시스템 - Sentry (2탄) (1) | 2019.06.25 |
DataCommunication - 9장 (0) | 2017.05.10 |