기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Application Load Balancer의 연결 로그
Elastic Load Balancing은 로드 밸런서에 전송된 요청에 대한 자세한 정보를 캡처하는 연결 로그를 제공합니다. 각 로그에는 클라이언트의 IP 주소 및 포트, 리스너 포트, 사용된 TLS 암호 및 프로토콜, TLS 핸드셰이크 지연 시간, 연결 상태, 클라이언트 인증서 세부 정보와 같은 정보가 포함됩니다. 이러한 연결 로그를 사용하여 요청 패턴을 분석하고 문제를 해결할 수 있습니다.
연결 로그는 Elastic Load Balancing의 옵션 기능으로, 기본적으로 비활성화되어 있습니다. 로드 밸런서에 대해 연결 로그를 활성화하면 Elastic Load Balancing이 로그를 캡처하여 압축 파일을 지정한 Amazon S3 버킷에 저장합니다. 연결 로그는 언제든지 비활성화할 수 있습니다.
Amazon S3의 스토리지 비용은 청구되지만, Amazon S3로 로그 파일을 전송하기 위해 Elastic Load Balancing에서 사용하는 대역폭에 대해서는 요금이 부과되지 않습니다. 스토리지 비용에 대한 자세한 내용은 Amazon S3 요금
연결 로그 파일
Elastic Load Balancing은 5분마다 각 로드 밸런서 노드에 대한 로그 파일을 게시합니다. 로그 전달은 결과의 일관성이 있습니다. 로드 밸런서는 같은 기간 동안 여러 개의 로그를 전달할 수 있습니다. 이러한 상황은 보통 사이트에 트래픽이 많은 경우에 발생합니다.
연결 로그의 파일 이름은 다음 형식을 사용합니다.
bucket
[/prefix
]/AWSLogs/aws-account-id
/elasticloadbalancing/region
/yyyy
/mm
/dd
/conn_log.aws-account-id
_elasticloadbalancing_region
_app.load-balancer-id
_end-time
_ip-address
_random-string
.log.gz
- bucket
-
S3 버킷의 이름.
- 접두사
-
(선택 사항) 버킷의 접두사(논리적 계층 구조)입니다. 지정하는 접두사에는 문자열
AWSLogs
가 포함되지 않아야 합니다. 자세한 내용은 접두사를 사용한 객체 구성을 참조하세요. AWSLogs
-
AWSLogs
로 시작하는 파일 이름의 일부가 지정하는 버킷 이름과 선택적 접두사 뒤에 추가됩니다. - aws-account-id
-
소유자의 AWS 계정 ID입니다.
- region
-
로드 밸런서 및 S3 버킷을 위한 리전입니다.
- yyyy/mm/dd
-
로그가 전달된 날짜입니다.
- load-balancer-id
-
로드 밸런서의 리소스 ID입니다. 리소스 ID에 포함되어 있는 슬래시(/)가 마침표(.)로 대체됩니다.
- end-time
-
로깅 간격이 끝나는 날짜와 시간입니다. 예를 들어 종료 시간이 20140215T2340Z이면 UTC 또는 Zulu 시간으로 23:35과 23:40 사이의 요청에 대한 항목이 포함됩니다.
- ip-address
-
요청을 처리한 로드 밸런서 노드의 IP 주소입니다. 내부 로드 밸런서의 경우 프라이빗 IP 주소가 됩니다.
- random-string
-
시스템에서 생성된 임의 문자열입니다.
다음은 접두사가 있는 로그 파일 이름의 예입니다.
s3://amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log.123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
다음은 접두사가 없는 로그 파일 이름의 예입니다.
s3://amzn-s3-demo-logging-bucket/AWSLogs/123456789012/elasticloadbalancing/us-east-2/2022/05/01/conn_log.123456789012_elasticloadbalancing_us-east-2_app.my-loadbalancer.1234567890abcdef_20220215T2340Z_172.160.001.192_20sg8hgm.log.gz
원하는 기간만큼 버킷에 로그 파일을 저장할 수 있습니다. 그러나 Amazon S3 수명 주기 규칙을 정의하여 자동으로 로그 파일을 보관하거나 삭제할 수도 있습니다. 자세한 내용은 Amazon S3 사용 설명서의 객체 수명 주기 관리를 참조하세요.
연결 로그 항목
각 연결 시도마다 연결 로그 파일에 항목이 있습니다. 클라이언트 요청이 전송되는 방법은 연결이 영구적 또는 비영구적인지에 따라 결정됩니다. 비영구적 연결에는 단일 요청이 있으며, 이는 액세스 로그 및 연결 로그에 단일 항목을 생성합니다. 영구적 연결에는 여러 요청이 있으며, 이는 액세스 로그에 여러 항목을 생성하고 연결 로그에 단일 항목을 생성합니다.
구문
연결 로그 항목은 다음 형식을 사용합니다.
[timestamp] [client_ip] [client_port] [listener_port] [tls_protocol] [tls_cipher] [tls_handshake_latency] [leaf_client_cert_subject] [leaf_client_cert_validity] [leaf_client_cert_serial_number] [tls_verify_status]
다음 표에서는 연결 로그 항목의 필드를 순서대로 설명합니다. 모든 필드는 공백으로 구분됩니다. 새 필드가 도입되면 로그 항목 끝에 추가됩니다. 예상하지 못했던 방식으로 로그 항목이 끝나면 모든 필드를 무시해야 합니다.
필드 | 설명 |
---|---|
타임스탬프 |
로드 밸런서가 연결을 성공적으로 설정한 또는 설정하지 못한 시간(ISO 8601 형식)입니다. |
client_ip |
요청을 하는 클라이언트의 IP 주소입니다. |
client_port |
요청을 전송하는 클라이언트의 포트입니다. |
listener_port |
클라이언트 요청을 수신하는 로드 밸런서 리스너의 포트입니다. |
tls_protocol |
[HTTPS 리스너] 핸드셰이크 중에 사용되는 SSL/TLS 프로토콜입니다. 비 SSL/TLS 요청에서는 이 필드가 |
tls_cipher |
[HTTPS 리스너] 핸드셰이크 중에 사용되는 SSL/TLS 프로토콜입니다. 비 SSL/TLS 요청에서는 이 필드가 |
tls_handshake_latency |
[HTTPS 리스너] 성공적인 핸드셰이크를 설정하는 동안 경과된 총 시간(초 단위, 밀리초 정밀도)입니다. 다음의 경우 이 필드는
|
leaf_client_cert_subject |
[HTTPS 리스너] 리프 클라이언트 인증서의 주제 이름입니다. 다음의 경우 이 필드는
|
leaf_client_cert_validity |
[HTTPS 리스너] 리프 클라이언트 인증서의 유효성입니다(ISO 8601 형식의
|
leaf_client_cert_serial_number |
[HTTPS 리스너] 리프 클라이언트 인증서의 일련 번호입니다. 다음의 경우 이 필드는
|
tls_verify_status |
[HTTPS 리스너] 연결 요청의 상태입니다. 연결이 성공적으로 설정되면 값이 |
conn_trace_id |
연결 추적 가능성 ID는 각 연결을 식별하는 데 사용되는 고유한 불투명 ID입니다. 클라이언트와의 연결이 설정되면 이 클라이언트의 후속 요청에서 이 ID가 해당 액세스 로그 항목에 포함됩니다. 이 ID는 외부 키 역할을 하여 연결 로그와 액세스 로그 간의 링크를 생성합니다. |
오류 이유 코드
로드 밸런서가 연결을 설정할 수 없는 경우 로드 밸런서는 연결 로그에 다음 사유 코드 중 하나를 저장합니다.
코드 | 설명 |
---|---|
|
최대 클라이언트 인증서 체인 깊이를 초과했습니다. |
|
최대 클라이언트 인증서 크기를 초과했습니다. |
|
CA가 클라이언트 인증서를 취소했습니다. |
|
CRL 처리 오류 |
|
클라이언트 인증서를 신뢰할 수 없습니다. |
|
클라이언트 인증서가 아직 유효하지 않습니다. |
|
인증서가 만료되었습니다. |
|
클라이언트 인증서 유형이 지원되지 않습니다. |
|
인증서가 유효하지 않습니다. |
|
클라이언트 인증서 목적이 잘못되었습니다. |
|
클라이언트 인증서가 사용자 지정 서버 검증에서 거부되었습니다. |
|
매핑되지 않은 런타임 연결 오류 |
로그 항목 예제
다음은 예제 연결 로그 항목입니다.
다음은 포트 443에서 상호 TLS 확인 모드가 활성화된 HTTPS 리스너와의 연결 성공에 대한 예제 로그 항목입니다.
2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 4.036 "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Success
다음은 포트 443에서 상호 TLS 확인 모드가 활성화된 HTTPS 리스너와의 연결 실패에 대한 예제 로그 항목입니다.
2023-10-04T17:05:15.514108Z 203.0.113.1 36280 443 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 - "CN=amazondomains.com,O=endEntity,L=Seattle,ST=Washington,C=US" NotBefore=2023-09-21T22:43:21Z;NotAfter=2026-06-17T22:43:21Z FEF257372D5C14D4 Failed:ClientCertUntrusted
연결 로그 파일 처리
연결 로그 파일은 압축된 상태입니다. Amazon S3 콘솔을 사용하여 파일을 열면 파일이 압축되지 않고 정보가 표시됩니다. 파일을 다운로드하는 경우에는 압축을 해제해야 정보를 볼 수 있습니다.
웹 사이트에서 요청이 많은 경우에는 로드 밸런서가 수 기가바이트의 데이터로 로그 파일을 생성할 수 있습니다. 라인별 처리로는 이렇게 대량의 데이터를 처리할 수 없습니다. 따라서 병렬 처리 솔루션을 제공하는 분석 도구를 사용해야 할 수 있습니다. 예를 들어, 다음과 같은 분석 도구를 사용하여 연결 로그를 분석 및 처리할 수 있습니다.
-
Amazon Athena는 표준 SQL을 사용해 Amazon S3에 저장된 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다.