소급 일괄 처리 및 로그 라우팅

이 페이지에서는 Cloud Logging 로그 버킷에 이미 저장된 로그 항목을 Cloud Storage 버킷으로 직접 복사하는 방법을 설명합니다. 다음과 같은 상황에서 로그 버킷의 로그 항목을 Cloud Storage 버킷으로 복사할 필요가 생길 수 있습니다.

  • Logging의 스토리지에 저장하기 전에 로그 항목을 Cloud Storage로 라우팅하지 않은 경우
  • Logging 외부의 감사 대상과 로그 항목을 공유하려는 경우
  • Cloud Storage에서 스크립트로 로그 항목을 분석하려는 경우

로그 항목을 Cloud Storage에 복사하면 로그 항목은 복사된 로그 버킷에 그대로 유지됩니다.

복사 작업은 Cloud Storage를 포함하여 미리 선택한 지원되는 스토리지 대상으로 모든 수신 로그 항목을 자동으로 전송하는 싱크를 대체하지 않습니다. 싱크는 로그 항목을 Cloud Storage 버킷에 저장하려는 경우에 사용하세요.

로그를 복사한 다음 작업을 관리하고 모니터링하려면 Google Cloud CLI를 사용해야 합니다.

제한사항

로그 항목을 복사할 때 다음 제한사항이 적용됩니다.

  • Cloud Storage 버킷에만 로그를 복사할 수 있습니다. 다른 대상은 사용할 수 없습니다.

  • CMEK가 구성된 로그 버킷의 로그는 복사할 수 없습니다.

시작하기 전에

로그 복사를 시작하기 전에 다음을 수행합니다.

  • Logging에서 로그 항목을 복사한 후 Cloud Storage에 로그 항목을 쓰는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 복사 작업의 상태를 보고 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 구성 작성자(roles/logging.configWriter) IAM 역할을 부여해 달라고 요청하세요.

로그 항목 복사

Logging은 복사 작업이 시작될 때 로그 버킷에 저장된 로그 항목만 복사합니다. 복사 작업이 시작된 후 로그 버킷에 저장된 로그 항목은 Cloud Storage에 복사되지 않습니다.

로그 항목을 Cloud Storage에 복사하려면 다음 정보를 알아야 합니다.

  • 복사하려는 로그 버킷의 ID와 위치. 로그 버킷 ID와 위치를 검색하려면 gcloud CLI 명령어 gcloud logging buckets list를 사용합니다.
  • 복사해서 보내려는 Cloud Storage 버킷의 이름입니다. Cloud Storage 버킷 이름을 검색하는 방법은 Cloud Storage 버킷 정보 가져오기를 참조하세요.
  • 복사할 로그 항목의 필터입니다.

로그 항목을 복사하려면 gcloud logging copy 명령어를 실행하세요.

gcloud logging copy BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME
--location=LOCATION [--log-filter=FILTER] --project=PROJECT_ID

위 명령어를 실행하기 전에 다음을 수행합니다.

  • BUCKET_ID를 로그 버킷의 이름으로 바꿉니다.
  • CLOUD_STORAGE_BUCKET_NAME을 Cloud Storage 버킷 이름으로 바꿉니다.
  • LOCATION을 로그 버킷의 위치로 바꿉니다.
  • (선택사항): FILTER를 복사할 로그를 정의하는 필터로 바꿉니다.

  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다. 활성 gcloud CLI 구성이 올바른 Google Cloud 프로젝트로 설정된 경우 이 플래그를 생략할 수 있습니다.

명령어 예시:

gcloud logging copy my-log-bucket storage.googleapis.com/my-gcs-bucket \
--location=global --log-filter='timestamp > "2021-03-18T10:00:00.0Z"' \
--project=my-project

이 명령어는 백그라운드에서 실행할 장기 실행 작업을 만들고 복사 작업의 이름과 로그 버킷의 위치를 반환합니다.

name: projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

복사 작업의 위치는 로그를 복사할 로그 버킷의 위치와 동일합니다.

복사 작업 보기 및 관리

작업 나열, 보기, 취소를 수행할 수 있는 gcloud logging operations 명령어를 사용하여 복사 작업을 보고 관리할 수 있습니다.

다음 명령어를 사용하려면 작업의 위치를 지정해야 합니다. 로그 버킷의 위치를 사용합니다. 로그 버킷의 위치를 찾는 방법은 버킷 세부정보 보기를 참조하세요.

복사 작업 나열

예약, 실행 중, 완료, 실패, 취소된 작업 등 최근 복사 작업을 나열할 수 있습니다. 최근 복사 작업은 종료 시간으로부터 최대 30일 동안 결과에 표시됩니다.

복사 작업을 나열하려면 다음 명령어를 실행하세요.

gcloud logging operations list --location=LOCATION \
--operation-filter=request_type=CopyLogEntries \
--project=PROJECT_ID

위 명령어를 실행하기 전에 다음을 수행합니다.

  • LOCATION을 로그를 복사할 로그 버킷의 위치로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

이 명령어는 작업 ID를 비롯한 장기 실행 작업에 대한 정보를 반환합니다.

projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

복사 작업 상태 보기

다음을 포함하여 복사 작업에 대한 상태와 기타 메타데이터를 검색할 수 있습니다.

  • startTime: 작업 생성을 나타내는 타임스탬프입니다.
  • endTime: 작업 완료를 나타내는 타임스탬프입니다.
  • state: 작업 상태(예약됨, 실행 중, 취소됨, 실패, 성공)입니다.
  • cancellation: 사용자가 작업 취소를 요청했는지 여부입니다.
  • progress: 작업의 예상 진행률(0~100%)입니다.
  • destination: 작업이 로그를 복사하는 Cloud Storage 버킷의 이름입니다.
  • filter: 복사할 로그 항목을 지정하는 필터입니다.
  • name: 작업으로 로그를 복사 중인 로그 버킷의 이름입니다.
  • logEntriesCopiedCount: 작업에서 Cloud Storage 버킷에 성공적으로 복사한 로그 항목 수입니다.

나열된 메타데이터 필드 모두가 모든 복사 작업에 적용되지는 않습니다. 예를 들어 복사 작업이 아직 실행 중이면 endtime 메타데이터가 작업에 적용되지 않습니다. 또 다른 예시로 gcloud logging copy 명령어를 실행할 때 --log-filter=FILTER 플래그를 사용하지 않으면 filter 메타데이터가 작업에 적용되지 않습니다.

복사 작업에 대한 정보를 검색하려면 다음 명령어를 실행합니다.

gcloud logging operations describe OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

위 명령어를 실행하기 전에 다음을 수행합니다.

  • OPERATION_ID를 작업의 ID로 바꿉니다.
  • LOCATION을 로그를 복사할 로그 버킷의 위치로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

이 명령어는 복사 작업에 대한 메타데이터를 반환합니다. 예를 들어 다음은 진행 중인 작업의 출력입니다.

done: false
metadata:
  `@type`: type.googleapis.com/google.logging.v2.CopyLogEntriesMetadata
  progress: 75
  destination: storage.googleapis.com/my-storage-bucket-1
  source: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
  verb: copy
  startTime: `2023-05-23T10:52:40.039751Z`
  state: OPERATION_STATE_RUNNING
name: projects/my-test-project/locations/us-central1/buckets/my-logging-bucket-2
   </pre>

복사 작업 취소

진행 중인 복사 작업을 취소할 수 있습니다. 복사 작업을 취소하면 작업이 취소되기 전에 복사된 모든 로그 항목이 Cloud Storage 버킷에 남아 있습니다.

복사 작업을 취소하면 Logging이 취소를 완료하기 전에 진행 중인 모든 프로세스를 완료합니다. 이로 인해 작업을 취소한 후에도 일부 로그 항목이 Cloud Storage에 복사될 수 있습니다.

복사 작업을 취소하려면 다음 명령어를 실행하세요.

gcloud logging operations cancel OPERATION_ID \
--location=LOCATION --project=PROJECT_ID

위 명령어를 실행하기 전에 다음을 수행합니다.

  • OPERATION_ID를 작업의 ID로 바꿉니다.
  • LOCATION을 로그를 복사할 로그 버킷의 위치로 바꿉니다.
  • PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

Cloud Storage에서 로그 보기

Cloud Storage에 복사한 로그를 보고 이해하려면 Cloud Storage로 라우팅된 로그 보기를 참조하세요.

할당량 및 한도

모든 복사 작업은 복사되는 데이터 양에 관계없이 완료하는 데 최소 1시간 이상 걸립니다.

대량(예: 페타바이트)을 복사하려면 --filter 플래그의 timestamp 필드를 사용하여 여러 복사 작업에서 복사를 분할합니다.

가격 책정

Cloud Logging은 로그를 지원되는 대상으로 라우팅하는 데 비용을 청구하지 않지만 대상에 요금이 부과될 수 있습니다. _Required 로그 버킷을 제외하고 Cloud Logging은 로그를 로그 버킷으로 스트리밍하고 로그 버킷의 기본 보관 기간보다 긴 스토리지에 대해 요금을 청구합니다.

Cloud Logging은 로그 복사 또는 로그 탐색기 페이지나 로그 애널리틱스 페이지를 통해 실행된 쿼리에 대해서는 요금을 청구하지 않습니다.

자세한 내용은 다음 문서를 참조하세요.