웹사이트 요청 로그 읽기

AWSBeginner
지금 연습하기

소개

실제 페이지 요청을 CloudWatch Logs로 추적하고 성공과 없는 페이지를 구분합니다.

앞선 포트폴리오 실습을 먼저 완료하세요. 새 환경에는 앞 단계의 기능과 별도 리소스가 준비되어 있습니다. 이전 서버, 파일이나 자격 증명을 보관할 필요가 없습니다.

자격 시험과 연결

자격 시험 과제 실습 내용
AWS Certified Cloud Practitioner (CLF-C02) Task 3.8 로그로 앱을 관찰합니다.

실습 개요

실제 페이지 요청을 CloudWatch Logs로 추적하고 성공과 없는 페이지를 구분합니다.

성공 요청 기록하기

이 단계에서는 로그는 발생한 사건의 기록입니다. 로그 그룹은 관련 기록을, 스트림은 이 인스턴스의 기록을 묶습니다. 실습 그룹은 처음에 비어 있습니다.

프로젝트로 이동합니다.

cd /home/labex/project

LOG_GROUP을 읽고 표시합니다.

source website.env
echo "$LOG_GROUP"

사이트를 연 뒤 로그를 읽습니다.

aws logs filter-log-events --log-group-name "$LOG_GROUP"

실제 /website status=200을 확인합니다. 200은 해당 요청의 성공입니다. timestamp는 Unix epoch 이후 밀리초, request_id는 해당 요청의 식별자입니다. 값은 환경마다 다릅니다.

없는 페이지 조사하기

이 단계에서는 AWS View의 missing-page 링크를 엽니다. 404는 해당 경로가 없음을 뜻하며 서버 종료를 뜻하지 않습니다.

정확한 status=404 문구로 로그를 필터링합니다. 바깥 작은따옴표는 안쪽 큰따옴표를 보존합니다.

aws logs filter-log-events --log-group-name "$LOG_GROUP" --filter-pattern '"status=404"'

메인 페이지를 다시 연 뒤 전체 로그를 읽습니다.

aws logs filter-log-events --log-group-name "$LOG_GROUP"

/missing status=404와 새로운 /website status=200을 비교합니다. 과거 404는 기록에 남습니다.

실제 실습의 확인 예시입니다. 리소스 ID는 환경마다 다릅니다.

실습 로그와 서버 정리하기

이 단계에서는 참조 로그와 저장 자료는 유지합니다.

인스턴스 ID를 표시합니다.

echo "$INSTANCE_ID"

지정 서버만 종료합니다.

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"

최종 상태를 기다립니다.

aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

지정 실습 그룹만 삭제합니다.

aws logs delete-log-group --log-group-name "$LOG_GROUP"

실습 그룹은 없어지고 참조 이벤트, 버킷, 역할과 네트워크는 남습니다.

요약

경로, HTTP 상태와 request_id를 연결하고 성공한 페이지를 확인한 뒤 실습 로그만 정리했습니다.

공식 문서: CloudWatch Logs concepts, filter pattern syntax.