ELB(ALB) 로그 활성화 & S3에 로그 저장하기

2023. 7. 13. 14:12Cloud/aws

# about access log 

access log는 단순 트래픽 로그입니다. 

이 로그에는 요청을 받은 시간, 클라이언트의 ip주소, 대기 시간, 요청 경로 및 서버 응답과 같은 정보가 포함됩니다. 

access log는 이용자가 alb dns이름에 접속하여 로드밸런서를 경유하여 인스턴스에  접근할 때 마다 로그가 기록이 됩니다.  

 

ALB Access Log 특징으로는 다음과 같습니다.

  • Timstamp는 UTC 기준 : KST 기준이 아니므로 특정 시간대의 트래픽 로그를 찾을 때, 그 로그는 그 전날 혹은 그다음 날 이름의 로그 데이터에 쌓여있을 수 있음  
  • ALB Access Log는 5분 단위로 저장 
  • Network Interface 마다 나눠져서 저장 :  내부적으로 ALB가 Scale-Out 되면 그 수만큼 나눠져서 저장됨. 따라서 특정 시간대에 트래픽을 분석하려 한다면 모든 Network Interface를 분석해야 함 

더 자세한 내용은 aws 공식 문서에서 확인하면 될 것 같습니다. 

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/load-balancer-access-logs.html 

 

Application Load Balancer에 대한 액세스 로그 - Elastic Load Balancing

Application Load Balancer에 대한 액세스 로그 Elastic Load Balancing은 로드 밸런서에 전송된 요청에 대한 자세한 정보를 캡처하는 액세스 로그를 제공합니다. 각 로그에는 요청을 받은 시간, 클라이언트의

docs.aws.amazon.com

# create s3 bucket & edit role 

생성된 버킷

 

액세스 로깅을 활성화할 때 액세스 로그에 대해 S3 버킷을 지정해야 하는데 다음 요구 사항을 충족해야 합니다.

- 버킷은 로드 밸런서와 동일한 리전에 있어야 한다.

- Amazon S3 관리형 암호화 키(SSE-S3)가 필요하다.

 

  • bucket-name/prefix : S3 버킷의 이름과 prefix
  • your-aws-account-id : 이용자 AWS 계정 ID
  • elb-account-id : 서울 600734575887 

수동으로 액세스 수정 후 다시 엑세스를 활성화하면 정상적으로 활성화 된 것을 확인할 수 있습니다. 

 

# activate access log 

로드밸런서 속성으로 이동하면 모니터링부분이 있습니다. 해당 부분에 액세스 로그를 활성화 하여 ELB에 대한 로그를 제공하게 합니다. 

 

설정이 완료되면은  액세스 로그 위치에 로그 s3위치가 설정이 됩니다. 

 

로드밸런서를 통해 인스턴스로 접속을 하면 elastingloadbalancing 폴더가 생기게 되고 안에는 날짜별로 폴더가 생성된 것을 확인할 수 있습니다. 

 

해당 압축파일을 들어가 보면은 접속 로그가 기록되어 있습니다. 

 

http 2023-07-10T07:11:14.218206Z app/k8s-default-eksfront-59204f4741/7ed9b2b31ecd085e 175.120.35.228:63654 10.0.8.148:32076 0.003 0.008 0.000 200 200 505 2992 "GET http://k8s-default-eksfront-59204f4741-429748833.ap-northeast-2.elb.amazonaws.com:80/ HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67" - - arn:aws:elasticloadbalancing:ap-northeast-2:102062429610:targetgroup/k8s-default-eksfront-9a6d6bdf88/7793716c6fad07fc "Root=1-64abaf12-4ad9968e07e7a330160f23ee" "-" "-" 1 2023-07-10T07:11:14.206000Z "forward" "-" "-" "10.0.8.148:32076" "200" "-" "-"


[type] [time] [elb] [client:port] [target:port] [request_processing_time] [target_processing_time] [response_processing_time] [elb_status_code] [target_status_code] [received_bytes] [sent_bytes] ["request"] ["user_agent"] [ssl_cipher] [ssl_protocol] [target_group_arn] ["trace_id"] ["domain_name"] ["chosen_cert_arn"] [matched_rule_priority] [request_creation_time] ["actions_executed"] ["redirect_url"] ["error_reason"] ["target:port_list"] ["target_status_code_list"] ["classification"] ["classification_reason"]

[type] : http 통신
[time]  : 2023-07-10T07:11:14.218206Z 시간대에 발생
[elb] : app/k8s-default-eksfront-59204f4741/7ed9b2b31ecd085e 인스턴스로 요청
[client:port] : 175.120.35.228:63654
[target:port] : 10.0.8.148:32076
[elb_status_code] : 200 (성공)
[target_status_code] : 200 (성공) 

 

  • 400, 404 : client가 잘못된 요청을 보냈을 경우
  • 460 : client로부터 요청을 중간에 끊었을 경우
  • 502 : client의 요청을 로드밸런서가 읽지 못했거나 Target 서버가 TCP RST/FIN을 수신할 경우
  • 503 : 사용량 폭증으로 로드밸런서에 과부하게 생겼을 경우 (Scale-Out 되기도 전부터 사용량 급증)
  • 504 : client의 요청이 너무 오래 걸리는 경우, 어떠한 Target 서버가 강제적으로 client의 요청을 끊을 경우

 

'Cloud > aws' 카테고리의 다른 글

cloudformation  (0) 2023.05.27
3-tier architecture[subnet]  (0) 2023.02.18
3-tier architecture[internetgateway]  (0) 2023.02.18
3-tier architecture[vpc]  (0) 2023.02.13
intro aws 3 - tier architecture  (0) 2022.10.02