액세스 로그
BNS Load Balancing 서비스는 사용자의 로드 밸런서로 전송된 요청에 대한 자세한 정보를 캡처하는 액세스 로그(Access Log) 기능을 제공합니다. 액세스 로그는 트래픽 패턴을 분석하고, 문제를 해결하는 데 활용될 수 있습니다. 수집되는 정보의 경우, Network Load Balancer(NLB)/Direct Server Return Network Load Balancer(DSRNLB)와 Application Load Balancer(ALB)에 따라 수집되는 정보가 다릅니다.
액세스 로그는 '옵션' 기능으로, 기본적으로 '비활성'으로 설정되어 있습니다. 로드 밸런서에 대해 액세스 로그를 활성화하면 로그를 캡처하여 압축 파일을 지정한 버킷에 저장하면 됩니다. 액세스 로그는 언제든지 비활성할 수 있습니다.
액세스 로그 기능 활성화 시 스토리지 비용이 청구되지만, 로그 파일을 전송하기 위한 네트워킹 비용에 대해서는 요금이 부과되지 않습니다. 스토리지 비용에 대한 자세한 내용은 요금 안내를 참고하시기 바랍니다.
액세스 로그 파일
BNS Load Balancing 서비스는 액세스 로그 기능 활성화 시 30분 간격으로 각 ALB 또는 NLB/DSRNLB에 대한 로그 파일을 게시합니다. 액세스 로그의 파일 이름은 다음 형식을 사용합니다.
{use-_bucket-name}/KCLogs/{region-name}/yyyy/mm/dd/{az-name}_{project-id}_{lb-type}_{load-balancer-id}_{end-time}_{ip-address}.log.gz
요소 | 설명 |
---|---|
{user_bucket_name} | 액세스 로그를 보관할 버킷의 이름 |
KCLogs | 기본으로 지정되는 접두사 |
{region-name} | 로드 밸런서 및 버킷의 리전명 |
yyyy/mm/dd | 로그가 전달된 날짜 |
{az-name} | 로드 밸런서의 가용 영역 |
{project-id} | 로드 밸런서의 프로젝트 ID |
{lb-type} | 로드 밸런서 유형 - Network Load Balancer: nlb - Application Load Balancer: alb - Direct Server Return Network Load Balancer: dsrnlb |
{load-balancer-id} | 로드 밸런서의 리소스 ID |
{end-time} | 로깅 간격이 끝나는 날짜와 시간 |
{ip-address} | 요청을 처리한 로드 밸런서의 IP 주소 |
원하는 기간만큼 버킷에 로그 파일을 저장할 수 있습니다. 또한, 버킷 정책인 Life Cycle 설정으로 로그 파일 유지 기간을 지정할 수도 있습니다. 자세한 설명은 Object Storage > Life Cycle 설정 문서를 참고하시기 바랍니다.
액세스 로그 항목
카카오클라우드 Load Balancing 서비스의 액세스 로그 항목 필드를 순서대로 설명합니다. 액세스 로그 필드는 NLB, ALB에 따라 다음과 같이 구분되며, 모든 필드는 ,
으로 구분됩니다.
Application Load Balancer 필드
필드 | 설명 |
---|---|
project_id | 프로젝트의 ID |
time | 로드 밸런서가 클라이언트에 응답을 생성한 시간 |
lb_id | 로드 밸런서의 리소스 ID |
client_port | 요청을 하는 클라이언트의 IP 주소 및 포트 |
target_port | 대상 그룹의 대상에 대한 IP 주소 및 포트 |
target_status_code | 대상의 응답 상태 코드 - 대상으로 연결이 설정되고 대상이 응답을 전송한 경우에만 이 값을 기록 |
request | HTTP 메서드와 요청 대상 - HTTP 메서드: 주어진 리소스에 수행하길 원하는 행동으로, GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH 로 구분- 요청 대상: URL, 프로토콜, 포트, 도메인의 절대 경로이며, HTTP 메서드에 따라 형식이 변경됨 |
user_agent | 요청을 보낸 클라이언트를 식별하는 사용자 에이전트 문자열 |
ssl_cipher | SSL 암호 정보 |
ssl_protocol | SSL 프로토콜 정보 |
request_creation_time | 로드 밸런서가 클라이언트에서 요청을 받은 시간 |
Network Load Balancer, Direct Server Return Network Load Balancer 필드
필드 | 설명 |
---|---|
project_id | 프로젝트의 ID |
time | 로드 밸런서가 클라이언트에 응답을 생성한 시간 |
lb_id | 로드 밸런서의 리소스 ID |
listener_id | 연결을 위한 리스너의 리소스 ID |
client_port | 요청을 하는 클라이언트의 IP 주소 및 포트 |
destination_port | 대상의 IP 주소 및 포트 - 클라이언트가 로드 밸런서에 직접 연결하는 경우의 대상: 리스너 - 클라이언트가 VPC 엔드포인트 서비스를 사용하여 연결하는 경우의 대상: VPC 엔드포인트 |
tls_cipher | 예약된 필드 |
tls_protocol_version | 예약된 필드 |
버킷 요구 사항
액세스 로그를 활성화할 때 반드시 Object Storage의 버킷을 지정해야 합니다. 이때, 액세스 로그를 저장할 버킷은 다음의 요구 사항을 충족해야 합니다.
요구 사항
- 버킷은 로드 밸런서와 같은 리전에 있어야 합니다.
액세스 키 요구 사항
액세스 로그를 활성화할 때 반드시 액세스 키 ID 및 페어가 되는 보안 액세스 키를 선택해야 합니다. 보안 액세스 키는 액세스 키를 발급할 때 확인할 수 있습니다. 단, 생성된 액세스 키는 만료 기한이 지정되지 않은 상태여야 합니다.
액세스 로그 활성화 및 비활성화
로드 밸런서에 대한 액세스 로그를 콘솔에서 활성화 또는 비활성화하려면 다음 문서를 참고하시기 바랍니다.
- Application Load Balancer > 액세스 로그 설정
- Network Load Balancer > 액세스 로그 설정
- Direct Server Return Network Load Balancer > 액세스 로그 설정
액세스 로그 파일 처리
액세스 로그 파일은 압축 파일 형태로 저장됩니다. 파일을 다운로드하는 경우 압축을 해제해야 정보를 볼 수 있습니다.
액세스 로그 저장 시 버킷 암호화 설정
액세스 로그를 암호화하여 버킷에 저장할지 여부를 결정할 수 있습니다. 보안을 위해 암호화 설정을 사용
상태로 설정하는 것을 권장합니다.