개발
Dev: AWS
AWS Cloud Front 실시간 로그 설정 방법
61 views as of December 9, 2024.
AWS 클라우드 프론트를 이용하면 AWS 리소스를 각 리전의 엣지에서 캐싱해 빠르게 응답할 수 있는 기능이다.
더불어 이런 클라우드 프론트 리소스의 접근을 실시간으로 로그를 남길 수 있는 방법이 존재한다.
여기에서는 AWS Kinesis (키네시스)를 이용해 Cloud Front 와 연동해 실시간 로그를 남기는 방법에 대해 기술하고자 한다.
AWS Kinesis 설정
우선 아마존 서비스중 Kinesis로 들어가 아래 화면에서 데이터 스트림을 새로 추가해주자.
우측 상단의 주황색 버튼인 "데이터 스트림 생성"을 클릭한다.
그러면 아래와 같이 새로운 데이터 스트림을 추가할 수 있는 화면이 보인다.
우선 시작은 데이터 스트림 이름을 짓는것이다.
이름은 딱히 중요하지 않으나 여기서는 클라우드 프론트의 실시간 로깅을 위한 데이터 스트림이므로
CloudFrontRealtimeLogs
라고 이름 지어보자.이어서 데이터 스트림의 비용을 결정하는 항목이다
온디맨드 방식은 데이터스트림 기록의 제어량을 정할수 없을때 가변적으로처리하기위한 플랜이고, 프로비저닝은 계획된 크기의 기록을 사용할때 비용 플랜이다.
일단 단일 클라우드 프론트는 프로비저닝 플랜에서 샤드 1개만해도 충분하므로 위의 스샷처럼 설정해보자.
설정이 완료되면 가장 하단의 "데이터 스트림 생성"을 눌러 새로운 데이터 스트림 생성을 마치자.
AWS Cloud Front 설정
실시간 로그를 기록해둘 데이터스트림을 키네시스를 통해 생성했다면 그 다음은 Cloud Front 에서 로그 설정을 활성화 하는 작업이다.
Cloud Front 좌측 패널 메뉴에서 원격측정 -> 로그를 누르고 로그 페이지의 탭에서 "실시간 구성"탭을 누른다.
그리고 우측 상단 주황색 버튼의 "구성 생성"을 눌러 새로운 실시간 로그를 추가해보자.
순차적으로 적당한 실시간 로그 이름과 샘플링 속도를 입력하고 필드를 선택한다.
필드란 로그의 구성을 어떻게 할지 정하는건데 기본적으로 아래와 같은 구성을 추천한다.
필드 | 설명 |
timestamp | 요청이 발생한 시간. 시간별 트래픽 분석이나 문제 발생 시점 추적에 유용 |
c-ip | 클라이언트 IP 주소. 사용자 지역 분석, 보안 로그(의심스러운 IP 추적)에서 중요. |
sc-status | 응답 HTTP 상태 코드(200, 404, 500 등). 서버 오류, 리소스 누락 등을 모니터링. |
sc-bytes | |
cs-method | 요청 HTTP 메서드(GET, POST 등). 사용자가 어떤 요청을 보냈는지 분석. |
cs-protocol | 요청에 사용된 프로토콜(HTTP/HTTPS). HTTPS 전환 상태 분석. |
cs-host | 요청된 호스트 이름. 여러 도메인을 사용하는 배포에서 유입 도메인 구분에 유용. |
cs-uri-stem | 요청된 리소스의 URI 경로. 가장 많이 요청된 리소스, 인기 있는 페이지 또는 문제 발생 페이지를 분석. |
cs-bytes | 클라이언트가 보낸 바이트와 서버가 응답한 바이트. 데이터 전송량 분석. |
x-edge-location | 요청이 처리된 CloudFront 엣지 로케이션. 지역별 성능 분석 및 엣지 사용 최적화. |
time-taken | 요청이 완료되기까지 걸린 시간. 성능 모니터링 및 병목 현상 분석. |
cs-user-agent | 사용자 브라우저 및 디바이스 정보. 사용자 환경 분석 및 디바이스 최적화에 활용. |
cs-referer | 요청을 유발한 참조 URL. 트래픽 유입 경로 분석에 유용. |
x-edge-response-result-type | 응답이 CloudFront에서 캐시 히트(hit), 미스(miss), 오류(error)인지 나타냄. 캐싱 효율성 분석. |
일반적으로 위 필드를 사용하는것이 좋으며, 로그크기를 줄이고 싶으면 노랑색 필드 부분만 사용하는것도 좋다.
로그는 테스팅, 향후 모니터링 분석에 사용하는 용도이므로 목적에 맞는 필드 구성이 되면 좋다.
필드 선택이 끝나면 엔드포인트, 즉 로그가 기록될 데이터 스트림을 선택해준다.
여기에 뜨는게 아까 위에서 설정한 키네시스에서 만든 데이터 스트림이다.
그리고 IAM역할을 추가해준다.
이는 키네시스의 데이터스트림에 쓰기 권한을 부여하는 권한을 만들어내는 작업이다.
만약에 일전에 만든 IAM 역할이 있으면 찾아서 적용하면된다.
일반적으론 그냥 새로 만들어쓰는게 알아서 맞춰서 생성이되므로 편하다.
마지막으로 배포, 그러니까 일전에 만들어둔 Cloud Front를 선택해주면된다.
여기까지하고 "구성 생성"을 클릭하면 선택한 클라우드 프론트의 배포서비스에 접근하는 모든 기록은 키네시스의 데이터 스트림에 저장되게된다.
로그 기록 보기
기록된 로그기록은 키네시스의 데이터 스트림 페이지에서 볼 수 있다.
키네시스 -> 데이터 스트림 -> 탭메뉴에서 "데이터 뷰어"를 클릭하면 위 스샷 화면을 볼 수 있고, 여기서 "샤드 선택"을 클릭해 리스트에뜨는 1개의 샤드를 클릭한다.
그리고 시작 위치를 "트림 호라이즌"으로 맞추고 우측의 "레코드 가져오기" 버튼을 누르면 아래에 해당 샤드에 쌓인 로그를 볼 수있다.
결론
키네시스의 데이터 스트림을 이용한 클라우드 프론트의 실시간 로깅기능은 실질적으로 개발도중, 또는 라이브 서비스에서 클라이언트의 요청을 목적에 맞게 분석하기위한 부분이므로 언제든지 실시간 로깅 설정을 켜고끄면서 제어할 수 있다.
클라우드 프론트는 실시간 로그와 다르게 표준 로그 방식도 지원하는데 표준로그는 실시간 정보에 비해 15분 이상 지연된 로깅이 이루어지며 데이터도 S3에 로그파일로 순차적으로 쌓이고 데이터 저장 규칙도 소폭 다르다. (표준: W3C, 실시간: JSON)
특징 | 표준 로그 (Standard Logs) | 실시간 로그(Real-Time Logs) |
수집 주기 | 요청 후 약 5~15분의 지연 발생 | 거의 실시간(밀리초 수준) |
로그 저장 위치 | S3 버킷 | Kinesis Data Streams |
데이터 형식 | W3C 확장 형식 | JSON 형식 |
커스터마이즈 | 제공되지 않음 | 필드 선택 가능 |
비용 | S3 저장 비용만 발생 | CloudFront 로그 비용 + Kinesis 비용 |
사용 사례 | 장기적인 트래픽 분석, 기본 모니터링 | 실시간 트래픽 모니터링, 보안, 고급 분석 |
뭐 가장 좋은거는 필요에 맞게 쓰는게 제일 중요하지 않나 싶다.
실제 운용 비용
실시간 로그를 키고 한 7-8일 정도를 써보았다.
생각보다 비용이 치솟아올라서 청구서를 확인해보니 7일동안 약 3~4달러정도의 비용이 청구되었다.
이걸 한달로 환산해보니
대략 13달러이다.
내가 웹서버 운용하는데 한달에 약 10달러니, 로깅을위해서 13달러는 미친짓같아서 바로 사용중단 처리 했다.
기업이나 프로젝트급이면 몰라도 개인 용도로는 좀 비용적으로 부담이 되긴한다.
용도상 필요할때만 잠깐키고 끄고하는 더 맞는거같다.
#AWS #CloudFront
0
개의 댓글
Dev: AWS 콜렉션의 다른 글
개발 카테고리의 다른 글
12/09
AWS Cloud Front 대체 도메인 적용 방법 (내 도메인)
Cloud Front 도메인아마존의 클라우드 프론트는 S3의 리소스를 캐시 서버를 이용해 CDN 방식으로 전파 및 배포할 수 있는 기능이...
12/09
AWS S3 를 Cloud Front 로 배포하기
S3 서버를 이용한 파일 배포AWS S3서버를 이용해서 이미지나 기타 파일등을 배포하는 방식을 웹사이트 구현에 써먹을 수 있다.이...
12/09
구글 폰트 다운받아 로컬 호스팅 하기
웹 폰트우리가 웹 사이트를 구축하고 퍼블리싱 하는 과정에서 가장 처음 맞딱트리는 존재가 폰트에 관한것이다. 예전 웹사이트야...