Storage Transfer Service용 Cloud Logging

이 페이지에서는 Storage Transfer Service 로그를 위해 Cloud Logging을 구성하고 보는 방법을 설명합니다.

Storage Transfer Service용 Cloud Logging은 모든 전송에서 지원됩니다. FIND 작업은 에이전트 기반 전송에 대해 로깅되지 않습니다.

파일 시스템 전송에서 추가로 파일 시스템 전송 로그를 구성할 수 있습니다.

시작하기 전에

시작하기 전 Cloud Logging에 액세스할 수 있는지 확인합니다. 로그 뷰어(roles/logging.viewer) Identity and Access Management 역할이 권장됩니다. Logging 액세스에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

다음은 IAM 액세스 권한을 확인하고 부여하는 방법에 대한 설명입니다.

로깅 가능한 작업

다음 작업이 로깅될 수 있습니다.

  • FIND: 디렉터리의 파일 나열 또는 버킷의 객체 나열과 같이 할 일을 찾는 작업입니다. 에이전트 기반 전송에는 지원되지 않습니다.
  • COPY: Cloud Storage에 파일 또는 객체를 복사하는 작업입니다.
  • DELETE: 소스 또는 대상에서 파일 또는 객체를 삭제하는 작업입니다. 두 파일 시스템 간 전송의 경우 중간 Cloud Storage 버킷에서 파일 삭제도 로깅합니다.

작업마다 성공 또는 실패 상태를 로깅할 수 있습니다.

로깅 사용 설정

로깅을 사용 설정하려면 로깅할 작업과 상태를 지정합니다.

gcloud CLI

gcloud transfer jobs create로 전송 작업을 만들 때 다음 플래그를 사용하여 로깅을 사용 설정합니다.

gcloud transfer jobs create SOURCE DESTINATION \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed

플래그마다 값을 최소 하나 이상 지정해야 합니다.

REST

로깅 구성을 만들려면 transferJobs.createLoggingConfig을 사용합니다.

{
  "name":"transferJobs/myFirstTransfer",
  "status": "ENABLED",
  "projectId": "test-id-001",
  "loggingConfig": {
     "logActions": ["FIND", "DELETE", "COPY"],
     "logActionStates": ["SUCCEEDED", "FAILED"],
  },
  "transferSpec": {
      "awsS3DataSource": {
          "bucketName": "AWS_SOURCE_NAME",
          "awsAccessKey": {
              "accessKeyId": "AWS_ACCESS_KEY_ID",
              "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
          }
      },
      "gcsDataSink": {
           "bucketName": "destination_bucket",
           "path": "foo/bar/"
      },
   }
}

로깅할 특정 logActionslogActionStates가 포함되도록 loggingConfig를 조정합니다. 예를 들어 복사 및 찾기 작업이 실패할 때 로깅하려면 다음 loggingConfig를 제공합니다.

"loggingConfig": {
  "logActions": ["COPY", "FIND"],
  "logActionStates": ["FAILED"],
}

로깅 구성 업데이트

gcloud CLI

기존 작업의 로깅 구성을 업데이트하려면 gcloud transfer jobs update 명령어와 함께 적절한 플래그를 사용합니다.

gcloud transfer jobs update NAME \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed

이 작업의 로깅을 중지하려면 --clear-log-config를 지정합니다.

gcloud transfer jobs update NAME --clear-log-config

REST

기존 전송 작업의 로깅 구성을 업데이트하려면 LoggingConfig와 함께 transferJobs.patch를 사용합니다.

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": ["FIND", "DELETE", "COPY"],
       "logActionStates": ["SUCCEEDED", "FAILED"],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

updateTransferJobFieldMask는 이 요청에서 업데이트되고 필수인 필드를 지정합니다.

이 작업의 로깅을 중지하려면 logActionslogActionStates의 빈 목록과 함께 loggingConfig를 보냅니다.

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": [],
       "logActionStates": [],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

로그 보기

전송 로그를 보려면 다음을 수행하세요.

Google Cloud Console

  1. Google Cloud 탐색 메뉴 로 이동하고 Logging > 로그 탐색기를 선택합니다.<br\></br\>

    로그 탐색기로 이동

  2. Google Cloud 프로젝트를 선택합니다.

  3. 업그레이드 메뉴에서 기존 로그 뷰어로그 탐색기로 전환합니다.

  4. Storage Transfer Service 항목만 표시되도록 로그를 필터링하려면 쿼리 필드에 storage_transfer_job을 입력하고 쿼리 실행을 클릭합니다.

  5. 쿼리 결과 창에서 시간 수정을 클릭하여 결과를 반환할 기간을 변경합니다.

로그 탐색기 사용에 대한 자세한 내용은 로그 탐색기 사용을 참조하세요.

gcloud CLI

gcloud CLI를 사용하여 Storage Transfer Service 로그를 검색하려면 gcloud logging read 명령어를 사용합니다.

결과를 Storage Transfer Service 로그로 제한하도록 필터를 지정합니다.

gcloud logging read "resource.type=storage_transfer_job"

Cloud Logging API

entries.list Cloud Logging API 메서드를 사용합니다.

Storage Transfer Service 관련 항목만 표시되도록 결과를 필터링하려면 filter 필드를 사용합니다. 샘플 JSON 요청 객체는 아래와 같습니다.

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_transfer_job\""
}

전송 로그 형식

다음 섹션에서는 Storage Transfer Service 로그의 필드에 대해 설명합니다.

모든 Storage Transfer Service 관련 필드가 jsonPayload 객체 내에 포함되어 있습니다.

작업 FIND

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "FIND",
    "completeTime": "2021-12-16T18:58:49.344509695Z",
    "destinationContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-2",
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-1"
      },
      "type": "GCS"
    },
    "status": {
      "statusCode": "OK"
    }
  }
}

COPYDELETE 작업

{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "COPY",
    "completeTime": "2021-12-16T18:59:00.510509049Z",
    "destinationObject": {
      "gcsObject": {
        "bucket": "my-bucket-2",
        "objectKey": "README.md"
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceObject": {
      "gcsObject": {
        "bucket": "my-bucket-1",
        "lastModifiedTime": "2021-12-07T16:41:09.456Z",
        "md5": "WgnCOIdfCXNTUDpQJSKb2w==",
        "objectKey": "README.md",
      },
      "type": "GCS",
    },
    "status": {
      "statusCode": "OK"
    }
  }
}
로그 필드 설명
@type 값이 항상 type.googleapis.com/google.storagetransfer.logging.TransferActivityLog입니다.
action

이 태스크의 동작을 설명합니다. 다음 필드 중 하나는 사용해야 합니다.

  • FIND: 디렉터리의 파일 나열 또는 버킷의 객체 나열과 같이 할 일을 찾는 작업입니다. 에이전트 기반 전송에 대해서는 보고되지 않습니다.
  • COPY: Cloud Storage에 파일 또는 객체를 복사하는 작업입니다.
  • DELETE: 소스, 대상 또는 중간 버킷에서 파일이나 객체를 삭제하는 작업입니다.
completeTime 작업이 완료된 ISO 8601을 준수하는 타임스탬프입니다.
destinationContainer

FIND 작업에만 제공됩니다. FIND 작업은 에이전트 기반 전송에 대해 로깅되지 않습니다.

이 전송의 대상 컨테이너입니다. 다음 하위 필드 2개가 포함됩니다.

  • gcsBucket.bucket: 대상 Cloud Storage 버킷 이름입니다.
  • type: 항상 GCS입니다.
destinationObject

COPYDELETE 작업에만 제공됩니다.

대상의 객체에 대한 정보입니다. 다음 하위 필드 2개가 포함됩니다.

  • 대상에 따라 gcsObject 또는 posixFile입니다. 두 옵션 모두에는 위치, 날짜/시간 정보, 객체 또는 파일 해시를 지정하는 하위 필드 여러 개가 포함됩니다.
  • typeGCS 또는 POSIX_FS 중 하나입니다.

예를 들면 다음과 같습니다.

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation 정규화된 transferOperations 이름입니다.
sourceContainer

FIND 작업에만 제공됩니다. FIND 작업은 에이전트 기반 전송에 대해 로깅되지 않습니다.

이 전송의 소스 컨테이너입니다. 다음 하위 필드 2개를 포함합니다.

  • 소스 위치를 지정하는 항목입니다. 필드의 이름은 소스 유형에 따라 지정됩니다. 사용 가능한 필드는 다음과 같습니다.
    • awsS3Bucket.bucket: AWS S3 버킷 이름입니다.
    • azureBlobContainer: 모두 함께 Microsoft Azure Blob 스토리지 URI를 정의하는 하위 필드 accountcontainer를 포함합니다.
    • gcsBucket.bucket: Cloud Storage 버킷 이름입니다.
    • httpManifest.url: HTTP(S) 서버에서 다운로드할 공개적으로 제공되는 파일을 지정하는 URL 목록의 URL입니다.
  • typeAWS_S3, AZURE_BLOB, GCS, HTTP 중 하나입니다.

예를 들면 다음과 같습니다.

"sourceContainer": {
  "gcsBucket": {
    "bucket": "my-bucket-1"
  }
  type: "GCS"
}
sourceObject

COPYDELETE 작업에만 제공됩니다.

소스 객체에 대한 정보입니다. 다음 하위 필드 2개를 포함합니다.

  • 소스 객체의 호스트와 관련된 항목입니다. 필드 이름은 소스 유형에 따라 지정되며 메타데이터의 하위 필드를 포함합니다. 사용 가능한 필드는 다음과 같습니다.
    • awsS3Object: AWS S3 객체입니다.
    • azureBlob: Azure Blob Storage의 파일입니다.
    • gcsObject: Cloud Storage 객체입니다.
    • httpFile: URL 목록으로 지정된 파일입니다.
    • posixFile: POSIX 파일 시스템의 파일입니다.
  • typeAWS_S3, AZURE_BLOB, GCS, HTTP 또는 POSIX_FS 중 하나입니다.

예를 들면 다음과 같습니다.

"sourceObject": {
  "gcsObject": {
    "bucket": "my-bucket-1"
    "lastModifiedTime": "2021-12-07T16:41:09.456Z"
    "md5": "WgnCOIdfCXNTUDpQJSKb2w=="
    "objectKey": "README.md"
  }
  type: "GCS"
}
status

작업의 상태입니다. status.statusCodeOK이면 작업이 성공한 것입니다. 그렇지 않으면 작업이 실패한 것입니다. status.errorTypestatus.errorMessage 필드는 상태가 OK가 아닌 경우에만 채워집니다.

또한 최상위 resource 필드에 다음 필드가 포함됩니다.

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
로그 필드 설명
resource.labels.job_id 이 로그가 속한 Storage Transfer Service 작업 이름입니다.
resource.labels.project_id 이 전송의 Google Cloud 프로젝트 ID입니다.