안녕하세요,

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제로 "Log 버킷이 아닌 다른 경로로 Log 저장하는 방법"을 다루고자 합니다.



다른 경로로 Log 라우팅


Cloud Logging은 Log Bucket 뿐만 아니라 BigQuery 데이터셋, Cloud Storage 버킷, Pub/Sub 주제 등 여러 대상으로의 라우팅을 지원합니다.[1]

이 가이드는 이중 가장 저렴한 라우팅 대상인 Cloud Storage 버킷으로의 라우팅을 소개합니다.




Cloud Storage 버킷으로 Log 라우팅 대상 설정


대상 Cloud Storage 버킷 만들기

gcloud 명령어를 사용하여 Cloud Storage 버킷을 만듭니다.


# 버킷 생성

$ gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION

BUCKET_NAME: 버킷 이름

BUCKET_LOCATION: 버킷의 위치, 리전 혹은 멀티리전

필요시 아래 플래그를 추가합니다.

--project: 버킷을 연결할 프로젝트 ID 또는 프로젝트 번호를 지정

--default-storage-class: 버킷의 기본 스토리지 클래스를 지정(기본 값은 Standard)

--soft-delete-duration: 버킷의 소프트 삭제 보관 기간을 지정(기본 값은 7일)

--uniform-bucket-level-access: 버킷에 균일한 버킷 수준 액세스를 사용 설정 


#생성한 버킷 확인 

$ gcloud storage buckets describe gs://BUCKET_NAME




Cloud Logging Sink 생성 

gcloud 명령어로도 생성이 가능하나, 자세한 설명을 위해 콘솔에서 생성을 진행하겠습니다.[2]


# Sink 생성

콘솔 > Logging > Log Router > 상단의 Create Sink를 클릭합니다.



# Sink details(라우팅 이름 입력) 

사용할 Sink 이름과 설명(선택사항)을 입력하고 다음으로 이동합니다.



# Sink destination(라우팅 대상 선택)

Sink의 목적지(대상)를 선택합니다.

Service에서 Cloud Storage bucket을 선택 후 2.2에서 생성한 버킷을 선택하고 다음으로 이동합니다.



# Choose logs to include in sink(라우팅 시 포함 로그 선택)

현재 구성중인 Sink를 통해 대상으로 라우팅될 로그를 필터링 하는 포함 필터(Inclusion Filter)를 설정합니다.

만약, 포함 필터 값을 설정하지 않는다면 모든 로그가 대상으로 라우팅 되어 많은 비용이 발생할 수 있으니 주의하시기 바랍니다.

필터를 구성 후 원하는 Log가 포함되어 있는지 확인하기 위해 Preview logs 버튼을 클릭하여 Logs Explorer에서 사전에 확인해보실 수 있습니다.




Preview Logs를 클릭하면 해당 Log Filter를 사용하는 탐색기 페이지로 이동하여 원하는 로그가 포함되는지 확인할 수 있습니다.




# Choose logs to filter out of sink(라우팅 시 제외할 예외 필터 설정(선택사항))

필요에 따라 예외 필터를 설정하여 불필요한 로그는 제외할 수 있습니다.

제외된 로그는 비용이 발생하지 않기 때문에 비용을 절감하기 위해 권장되는 방법입니다.

예외 필터 추가시에는 이름과 필터를 같이 추가합니다.

예외 필터는 포함 필터와 다르게 활성화/비활성화를 설정할 수 있다는 점을 참고하시기 바랍니다.




설정이 완료되었다면 Create Sink를 클릭하여 Log Router를 생성합니다.


# 생성된 로그 라우터 Sink 확인

콘솔 > Logging > Log Router 에서 추가된 Sink를 확인할 수 있습니다.

※ 생성된 Sink는 시간당 Batch 작업으로 Log 데이터를 버킷에 작성하기 때문에 Sink를 생성 후 Log 데이터가 인입되기까지 최대 2~3시간이 소요될 수 있습니다.[3]


Cloud Storage 버킷에 데이터 수명 주기 설정(선택사항)


Cloud Storage 버킷은 Log 버킷과 다르게 기본적으로 설정된 데이터 수명 주기가 없습니다.

따라서 불필요한 데이터의 누적을 막기 위해 데이터 수명 주기를 설정해주는 것이 권장됩니다.

아래와 같이 데이터 수명 주기를 설정할 수 있습니다.[4]

콘솔 > Cloud Storage > Buckets > Log 라우팅 대상 버킷 선택 > LIFECYCLE 탭 > 하단의 룰 추가 선택 



# 수명 주기 규칙 설정

객체 수명 주기 규칙은 객체를 삭제하거나 보관 비용이 더 저렴한 클래스로 변경하는 동작 중에서 선택할 수 있습니다.

아래는 90일이 지난 로그를 삭제하는 조건의 규칙의 예시입니다.


동작 : 객체 삭제




조건 : Age




객체 수명 주기 조건에 대한 더 자세한 내용은 수명 주기 조건 문서를 참고하시기 바랍니다.


위 조건 설정 후 규칙 추가 시 아래와 같이 90일이 지난 객체를 삭제하는 수명 주기 규칙이 추가된 것을 확인하실 수 있습니다.




참조링크 


[1] Cloud Logging 라우팅 지원되 대상

https://cloud.google.com/logging/docs/routing/overview#destinations

[2] 지원되는 대상으로 로그 라우팅

https://cloud.google.com/logging/docs/export/configure_export_v2

[3] Cloud Storage로 라우팅된 로그 보기

https://cloud.google.com/logging/docs/export/storage

[4] Cloud Storage 객체 수명 주기 관리

https://cloud.google.com/storage/docs/managing-lifecycles



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.