내보내기 구성

이 페이지에서는 Cloud Trace API 및 Google Cloud CLI를 사용해서 trace를 내보내는 방법을 설명합니다. 버전 274.0.0 이상의 Google Cloud CLI를 사용해야 합니다. Google Cloud CLI 업데이트 방법에 대한 자세한 내용은 gcloud components update를 참조하세요.

이 페이지의 일부 샘플은 curl을 사용하여 생성되었습니다. 이 도구 구성에 대한 자세한 내용은 curl 사용을 참조하세요.

Google Cloud CLI 명령어를 사용하여 싱크를 나열, 생성, 설명, 업데이트, 삭제하는 예시는 엔드 투 엔드 예시를 참조하세요.

용어

이 페이지의 예시를 단순화하기 위해 환경 변수가 사용되었습니다.

Google Cloud CLI 예시에서는 다음 환경 변수가 사용됩니다.

  • SINK_ID: 싱크의 이름 또는 식별자입니다. 예를 들면 my-sink입니다. Google Cloud 프로젝트를 확인할 수 있으므로 Google Cloud CLI에 정규화된 명령어를 제공할 필요가 없습니다.
  • DESTINATION: 대상의 정규화된 이름을 저장합니다. 이는 BigQuery 데이터 세트여야 합니다. 예를 들어 유효한 대상은 다음과 같습니다.

    bigquery.googleapis.com/projects/DESTINATION_PROJECT_NUMBER/datasets/DATASET_ID
    

    여기서 DESTINATION_PROJECT_NUMBER는 대상의 Google Cloud 프로젝트 번호이고 DATASET_ID는 BigQuery 데이터 세트 식별자입니다.

curl 예시에서는 다음 환경 변수를 사용합니다.

  • ACCESS_TOKEN: 승인 토큰을 저장합니다. 자세한 내용은 curl 사용을 참조하세요.
  • PROJECT_ID: Google Cloud 프로젝트 식별자 또는 프로젝트 번호를 저장합니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호를 저장합니다.
  • SINK_ID: 싱크의 이름 또는 식별자입니다. 예를 들면 my-sink입니다.
  • SINK_BODY: TraceSink 리소스의 설명을 저장합니다. TraceSink 리소스에는 이름 및 싱크 대상이 포함됩니다. 이름은 Google Cloud 프로젝트 번호를 지정해야 합니다.
  • DESTINATION: 대상의 정규화된 이름을 저장합니다. 이는 BigQuery 데이터 세트여야 합니다.

대상 구성

trace를 BigQuery로 내보내려면 다음을 수행합니다.

  1. 대상 데이터 세트를 만듭니다.

  2. Cloud Trace API 또는 Google Cloud CLI를 사용하여 싱크를 만듭니다. 자세한 내용은 싱크 만들기를 참조하세요.

  3. 싱크에 BigQuery 데이터 세트의 dataEditor 역할을 부여합니다.

    1. 싱크에서 작성자 ID를 가져옵니다. 작성자 ID에 대한 자세한 내용은 싱크 속성 및 용어를 참조하세요.

      싱크의 작성자 ID는 create 명령어의 응답 데이터에 포함되며, list 명령어의 응답 데이터에도 포함됩니다.

    2. 싱크의 작성자 ID를 BigQuery 데이터 세트에 서비스 계정으로 추가하고 BigQuery 데이터 편집자 역할을 부여합니다.

      • Google Cloud Console을 사용하여 권한을 추가하려면 데이터 세트에 대한 액세스 제어를 참조하세요.

      • Google Cloud CLI를 사용해서 권한을 추가하려면 add-iam-policy-binding 명령어를 사용하고 Google Cloud 프로젝트 식별자 및 싱크의 작성자 ID를 제공합니다.

        gcloud projects add-iam-policy-binding ${DESTINATION_PROJECT_ID} \
          --member serviceAccount:${WRITER_IDENTITY} \
          --role roles/bigquery.dataEditor
        

        이전 명령어에서 WRITER_IDENTITY는 싱크의 작성자 ID를 저장하는 환경 변수이며 DESTINATION_PROJECT_ID는 BigQuery 데이터 세트의 Google Cloud 프로젝트 식별자입니다.

싱크 나열

작성자 ID를 포함하여 Google Cloud 프로젝트의 모든 싱크를 나열하려면 traceSinks.list 메서드를 호출합니다.

gcloud

Google Cloud CLI를 사용하여 기본 프로젝트로 정의된 싱크를 나열하려면 다음 명령어를 실행합니다.

gcloud alpha trace sinks list

프로토콜

curl을 사용하여 싱크를 나열하려면 다음으로 GET 요청을 보냅니다.

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

예를 들어 다음 요청은 모든 싱크를 검색합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

특정 싱크의 세부정보 표시

Google Cloud 프로젝트에 있는 특정 싱크의 세부정보를 표시하려면 traceSinks.get 메서드를 호출합니다.

gcloud

Google Cloud CLI를 사용하여 식별자가 SINK_ID에 저장된 싱크의 세부정보를 표시하려면 다음 명령어를 실행합니다.

gcloud alpha trace sinks describe ${SINK_ID}

프로토콜

curl를 사용하여 식별자가 SINK_ID에 저장된 싱크의 세부정보를 표시하려면 다음으로 GET 요청을 보냅니다.

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/%{SINK_ID}

예를 들어 다음 요청은 지정된 싱크의 세부정보를 검색합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

싱크 만들기

Google Cloud 프로젝트에서 싱크를 만들려면 traceSinks.create 메서드를 호출합니다. 싱크의 대상은 BigQuery 데이터 세트여야 합니다.

싱크를 만들기 전에 이 데이터 세트가 존재해야 합니다. Trace는 대상의 존재 여부를 확인하지 않습니다. BigQuery 데이터 세트 만들기에 대한 자세한 내용은 데이터 세트 만들기를 참조하세요.

gcloud

Google Cloud CLI를 사용하여 싱크를 만들려면 다음 명령어를 실행합니다.

gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}

프로토콜

curl을 사용하여 싱크를 만들려면 다음으로 POST 요청을 보냅니다.

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

예를 들어 ${PROJECT_NUMBER}를 사용하여 프로젝트에서 Trace 스팬을 test_dataset로 내보내는 test_sink라는 싱크를 만들려면 다음과 같이 환경 변수 SINK_BODY를 정의합니다.

SINK_BODY='{"name":"projects/12345/traceSinks/test_sink","output_config":{"destination":"bigquery.googleapis.com/projects/12345/datasets/test_dataset"}}'

싱크를 만들려면 다음 명령어를 실행합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"  -X POST -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

싱크를 만든 후 Trace 스팬을 대상으로 내보내기까지 몇 분 정도 걸릴 수 있습니다.

싱크 삭제

Google Cloud 프로젝트에 있는 싱크를 삭제하려면 traceSinks.delete 명령어를 호출합니다.

gcloud

Google Cloud CLI를 사용하여 식별자가 SINK_ID에 저장된 싱크를 삭제하려면 다음 명령어를 실행합니다.

gcloud alpha trace sinks delete ${SINK_ID}

프로토콜

curl를 사용하여 식별자가 SINK_ID에 저장된 싱크를 삭제하려면 다음으로 DELETE 요청을 보냅니다.

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

예를 들어 다음 요청은 싱크를 삭제합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  -X DELETE https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

싱크 업데이트

Google Cloud 프로젝트에 있는 싱크를 업데이트하려면 traceSinks.patch 명령어를 호출합니다.

싱크를 만들기 전에 이 데이터 세트가 존재해야 합니다. Trace는 대상의 존재 여부를 확인하지 않습니다.

gcloud

Google Cloud CLI를 사용하여 식별자가 SINK_ID에 저장된 싱크를 업데이트하려면 다음 명령어를 실행합니다.

gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}

환경 변수 DESTINATION은 싱크의 새 대상을 저장합니다.

프로토콜

curl를 사용하여 식별자가 SINK_ID에 저장된 싱크의 대상을 업데이트하려면 다음으로 PATCH 요청을 보냅니다.

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

예를 들어 다음 요청은 싱크의 대상을 업데이트합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"  -X PATCH -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}?update_mask=output_config.destination

SINK_BODY의 예시는 싱크를 만드는 예시를 참조하세요.

싱크를 업데이트한 후 Trace 스팬을 새 대상으로 내보내기까지 몇 분 정도 걸릴 수 있습니다.

엔드 투 엔드 예시

이 섹션에서는 Google Cloud CLI 명령어를 사용하여 싱크를 나열, 생성, 설명, 업데이트, 삭제하는 방법을 보여줍니다. 프로젝트 식별자가 a-sample-project인 프로젝트에 대해 명령어가 실행되었습니다. 이 프로젝트는 2개의 BigQuery 데이터 세트를 포함하도록 사전 구성되었습니다. 마지막으로 이러한 예시에서 싱크와 대상은 동일한 프로젝트에 있는데, 이는 필수 사항이 아닙니다. 싱크와 대상은 다른 Google Cloud 프로젝트에 있을 수 있습니다.

구성 단계

  1. 기본 프로젝트 설정을 확인합니다.

    $ gcloud config list
    

    샘플 응답:

    [compute]
    zone = us-east1-b
    [core]
    account = user@example.com
    disable_usage_reporting = True
    project = a-sample-project
    
    Your active configuration is: [default]
    
  2. Google Cloud CLI가 274.0.0 이상인지 확인합니다.

    $ gcloud --version
    

    샘플 응답:

    Google Cloud SDK 275.0.0
    alpha 2020.01.03
    beta 2020.01.03
    bq 2.0.51
    core 2020.01.03
    gsutil 4.46
    kubectl 2020.01.03
    
  3. 기본 프로젝트에서 사용 가능한 데이터 세트를 식별합니다.

    $ bq ls
    

    샘플 응답:

        datasetId
     ---------------
      dataset_1
      dataset_other
    

    bq 명령어를 처음 사용하는 경우 프로젝트를 선택해야 할 수 있습니다.

환경 변수 설정

  1. Google Cloud CLI 명령어에 사용되는 환경 변수를 설정합니다.

    $ PROJECT_ID=a-sample-project
    $ PROJECT_NUMBER=123456789000
    $ SINK_ID=a-sample-sink
    $ DATA_SET_NAME=dataset_1
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    

    이 예시에서는 대상과 싱크가 동일한 프로젝트에 있는데, 이는 필수 사항이 아닙니다. 싱크와 대상은 다른 Google Cloud 프로젝트에 있을 수 있습니다.

  2. 설정을 확인합니다.

    $ echo $SINK_ID
    a-sample-sink
    $ echo $DATA_SET_NAME
    dataset_1
    $ echo $DESTINATION
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    

싱크 표시

모든 싱크를 나열하려면 다음 명령어를 실행합니다.

$ gcloud alpha trace sinks list

이 프로젝트에는 싱크가 없으므로 응답은 다음과 같습니다.

Listed 0 items.

싱크 만들기

  1. 싱크를 만들려면 다음 명령어를 실행합니다.

    $ gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}
    

    샘플 응답:

    You can give permission to the service account by running the following command.
    gcloud projects add-iam-policy-binding bigquery-project \
    --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com \
    --role roles/bigquery.dataEditor
    

    서비스 계정 이름에는 export-0000001cbe991a08-3434가 포함됩니다. 숫자 0000001cbe991a08은 PROJECT_NUMBER의 16진수 표현입니다. 3434 값은 임의의 값입니다.

    앞서의 응답에서 Google Cloud CLI를 실행하기 전에 bigquery-project를 프로젝트 식별자로 바꿔야 합니다.

  2. 싱크가 생성되었는지 확인합니다.

    $ gcloud alpha trace sinks list
    

    샘플 응답:

    NAME           DESTINATION                                                       WRITER_IDENTITY
    a-sample-sink  bigquery.googleapis.com/projects/123456789000/datasets/dataset_1  export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  3. 싱크를 자세히 설명합니다.

    $ gcloud alpha trace sinks describe ${SINK_ID}
    

    샘플 응답:

    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  4. 싱크의 쓰기 ID에 bigquery.dataEditor 권한을 부여합니다. 싱크 create 명령어는 권한을 업데이트하는 데 사용할 수 있는 Google Cloud CLI 명령어를 반환합니다.

    이 명령어가 성공하도록 하기 위해 다음을 수행하세요.

    • 대상 권한을 수정할 권한이 있는지 확인합니다.
    • bigquery-project를 프로젝트 식별자로 바꿉니다.
    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com --role roles/bigquery.dataEditor
    

    이 샘플 응답의 첫 번째 항목은 싱크의 작성자 ID입니다.

    Updated IAM policy for project [a-sample-project].
    bindings:
    - members:
      - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
      role: roles/bigquery.dataEditor
    - members:
      - user:user@example.com
      role: roles/cloudtrace.admin
    - members:
      - serviceAccount:service-123456789000@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-engine-robot.iam.gserviceaccount.com
      role: roles/container.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-analysis.iam.gserviceaccount.com
      role: roles/containeranalysis.ServiceAgent
    - members:
      - serviceAccount:service-123456789000@containerregistry.iam.gserviceaccount.com
      role: roles/containerregistry.ServiceAgent
    - members:
      - serviceAccount:123456789000-compute@developer.gserviceaccount.com
      - serviceAccount:123456789000@cloudservices.gserviceaccount.com
      role: roles/editor
    - members:
      - user:user@example.com
      role: roles/owner
    etag: BwWbqGVnShQ=
    version: 1

싱크 대상 변경

이 예시에서는 대상 위치가 dataset_1에서 dataset_other로 변경됩니다.

  1. 환경 변수 DATA_SET_NAMEDESTINATION를 업데이트합니다.

    $ DATA_SET_NAME=dataset_other
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    DATA_SET_NAME 또는 PROJECT_NUMBER를 수정한 후 DESTINATION 값을 새로고침합니다.

  2. 싱크 대상을 변경합니다.

    $ gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}
    

    샘플 출력은 다음과 같습니다.

    Updated [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    describe 명령어를 실행하여 싱크의 세부정보를 확인합니다.

    $ gcloud alpha trace sinks describe ${SINK_ID}
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    싱크의 대상을 업데이트할 때 싱크 작성자 ID를 변경하지 않으므로 싱크의 권한을 업데이트할 필요가 없습니다.

싱크 삭제

싱크를 삭제하려면 다음 명령어를 실행합니다.

$ gcloud alpha trace sinks delete ${SINK_ID}

샘플 출력은 다음과 같습니다.

Really delete sink [a-sample-sink]?

Do you want to continue (y/N)? y

Deleted [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].

list 명령어를 실행하여 결과를 확인할 수 있습니다.

$ gcloud alpha trace sinks list
Listed 0 items.

유효성 검사

Trace 데이터를 BigQuery로 내보낼 때 오류를 표시하는 차트의 기준으로 Cloud Monitoring exported_span_count 측정항목을 사용할 수 있습니다. 알림 정책을 만들어 내보내기 오류가 발생하는 경우 알림을 받도록 할 수도 있습니다.

차트 만들기

측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.

  1. Google Cloud 콘솔에서  측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

  2. 측정항목 요소에서 측정항목 선택 메뉴를 펼치고 필터 표시줄에 Spans Exported to BigQuery을 입력한 후 하위 메뉴를 사용하여 특정 리소스 유형과 측정항목을 선택합니다.
    1. 활성 리소스 메뉴에서 Cloud Trace를 선택합니다.
    2. 활성 측정항목 카테고리 메뉴에서 Bigquery_export를 선택합니다.
    3. 활성 측정항목 메뉴에서 BigQuery로 내보낸 스팬을 선택합니다.
    4. 적용을 클릭합니다.
  3. 데이터 보기 방법을 구성합니다.
    1. 필터 요소는 비워 둡니다. 이 옵션을 선택하면 차트에 모든 상태 데이터가 표시됩니다.
    2. 집계 요소에서 첫 번째 메뉴를 평균으로 설정하고 두 번째 메뉴를 상태로 설정합니다.

      이렇게 하면 고유한 각 상태 값의 단일 시계열이 생성됩니다. 다음 표는 가능한 상태 값을 보여줍니다.

      상태의미 및 시정 조치
      ok 데이터 이전이 완료되었음을 알려드립니다.
      bigquery_permission_denied 대상으로 데이터 내보내기에 실패했습니다. 다음과 같은 이유로 내보내기에 실패할 수 있습니다.
      • trace 싱크의 서비스 계정은 대상 데이터 세트에 쓸 수 있는 권한이 없습니다. 권한 거부됨을 참조하세요.
      • 싱크에 있는 데이터 세트의 대상이 없습니다. 잘못된 대상을 참조하세요.
      • BigQuery 내부 오류 예기치 않은 일시적인 오류입니다.
      bigquery_quota_exceeded BigQuery 프로젝트가 BigQuery 스트리밍 할당량을 초과했습니다. 소진된 할당량을 참조하세요.
      invalid_span
      internal_errors

      invalid_destination
      BigQuery로 데이터 내보내기를 막는 알 수 없는 오류입니다. 이 문제를 해결하려면 기술 지원팀에 문의하거나 Stack Overflow에 질문하세요. 자세한 내용은 지원 받기를 참조하세요.

    차트 구성에 대한 자세한 내용은 측정항목 탐색기 사용 시 측정항목 선택을 참조하세요.

Trace 싱크가 성공적으로 데이터를 내보내면 이전 설정으로 만든 차트에 상태 값이 ok인 단일 시계열이 표시됩니다. 내보내는 중에 오류가 발생하면 차트에 추가 시계열이 표시됩니다.

알림 정책 만들기

Cloud Trace 데이터를 BigQuery로 내보내는 중에 발생하는 오류로 인해 트리거되는 알림 정책을 만들려면 다음 설정을 사용하세요.

새 조건
필드

리소스 및 측정항목 리소스 메뉴에서 Cloud Trace를 선택합니다.
측정항목 카테고리 메뉴에서 Bigquery_export를 선택합니다.
측정항목 메뉴에서 BigQuert로 내보낸 스팬을 선택합니다.
필터 status != ok
시계열
시계열 그룹화 기준
status
시계열
시계열 집계
sum
순환 기간 1 m
순환 윈도우 함수 rate
알림 트리거 구성
필드

조건 유형 Threshold
알림 트리거 Any time series violates
기준 위치 Above threshold
기준 값 0
재테스트 범위 1 minute

curl 사용

이 섹션에서는 curl 도구를 사용하여 Cloud Trace API를 호출하는 데 사용되는 규칙과 설정을 설명합니다.

인증

  1. Google Cloud 프로젝트 식별자를 저장할 환경 변수를 만듭니다.

    PROJECT_ID=my-project
    
  2. Google Cloud 프로젝트 번호를 저장할 환경 변수를 만듭니다.

    PROJECT_NUMBER=12345
    
  3. Google Cloud CLI를 인증합니다.

    gcloud auth login
    
  4. 기본 Google Cloud 프로젝트 식별자를 설정합니다.

    gcloud config set project ${PROJECT_ID}
    
  5. 승인 토큰을 만들고 환경 변수에 저장합니다.

    ACCESS_TOKEN=`gcloud auth print-access-token`
    
  6. 액세스 토큰을 확인합니다.

    echo ${ACCESS_TOKEN}
    

    명령어에 대한 응답은 긴 문자열이어야 합니다. 예를 들어 하나의 시스템에서 응답은 다음과 같이 시작됩니다.

    y29.GluiBjo....
    

curl 호출

curl 명령어에는 인수 집합과 Cloud Trace API 리소스의 URL이 포함됩니다. 일반적인 인수에는 PROJECT_IDACCESS_TOKEN 환경 변수로 지정된 값이 포함됩니다.

curl 호출의 형식은 다음과 같습니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" [OTHER_ARGS]
https://cloudtrace.googleapis.com/[API_VERSION]/projects/${PROJECT_ID}/[RESOURCE]

각 항목의 의미는 다음과 같습니다.

  • [OTHER_ARGS](선택사항): GET 요청을 실행하는 경우 이 필드를 생략합니다. 다른 유형의 HTTP 요청의 경우 이 자리표시자를 요청 유형 및 요청을 충족하는 데 필요한 추가 데이터로 바꿉니다.
  • [API_VERSION]: API 버전을 지정합니다.
  • [RESOURCE]: Cloud Trace API 리소스 이름을 지정합니다.

예를 들어 프로젝트의 가장 최근의 trace 1,000개를 나열하려면 다음을 실행합니다.

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" https://cloudtrace.googleapis.com/v1/projects/${PROJECT_ID}/traces

문제 해결

이 섹션에는 내보내기를 구성할 때 발생하는 오류를 해결하는 데 도움이 될 수 있는 문제 해결 정보가 포함되어 있습니다.

데이터 세트의 잘못된 인수 오류

다음 오류 메시지는 데이터 세트 이름이 잘못되었음을 나타냅니다.

ERROR: (gcloud.alpha.trace.sinks.create) INVALID_ARGUMENT: Request contains an invalid argument.
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: sink destination is malformed:
    bigquery.googleapis.com/projects/123456789000/datasets/a-sample-project:dataset_1.

이 오류는 Google Cloud 프로젝트 식별자 a-sample-project를 데이터 세트 이름의 한정자로 포함하는 대상으로 인해 발생합니다.

이 오류를 해결하려면 a-sample-project:dataset_1dataset_1로 바꾸고 create 명령어를 실행합니다.

bq ls 명령어를 사용하여 데이터 세트를 나열할 수 있습니다.

수신 중인 trace 데이터가 없음

BigQuery에서 trace 데이터를 받지 못하는 이유는 다양합니다.

잘못된 대상

데이터 세트 이름과 프로젝트 번호가 올바른지 확인합니다.

  • 데이터 세트 이름이 올바른지 확인하고, 현재 프로젝트의 데이터 세트를 나열하려면 bq ls를 실행합니다.

    환경 변수를 사용하기로 한 경우 echo 명령어를 실행하여 각 변수의 값이 올바른지 확인합니다. 예를 들어 목적지가 올바른지 확인합니다.

    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    DESTINATIONPROJECT_NUMBERDATA_SET_NAME 값에 따라 달라지므로 두 변수를 먼저 설정해야 합니다. 또한 두 변수 중 하나를 수정하는 경우 DESTINATION에 저장된 값을 새로고침해야 합니다.

  • 현재 프로젝트 번호를 확인하려면 다음을 실행합니다.

    gcloud projects list --filter="${PROJECT_ID}"
    

    다음 명령어를 사용하여 프로그래매틱 방식으로 PROJECT_NUMBER를 설정할 수 있습니다.

    $ PROJECT_NUMBER=`gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)"`
    

잘못된 권한

서비스 계정에 BigQuery에 대한 DataEditor 역할이 부여되었는지 확인합니다. 다음 명령어를 실행하여 권한을 확인할 수 있습니다.

$ gcloud projects get-iam-policy ${PROJECT_ID}

이 명령어의 응답은 모든 IAM binding을 설명합니다. 이 경우 결과는 다음과 같으며, 싱크 작성자 ID는 dataEditor 역할을 가집니다.

bindings:
- members:
  - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
  role: roles/bigquery.dataEditor
- members:
  [Note, content truncated]

소진된 할당량

데이터를 받았는데 갑자기 중단되거나 데이터가 불완전한 경우 BigQuery 스트리밍 할당량이 소진되었을 수 있습니다. 할당량을 보려면 IAM 및 관리자 페이지로 이동하여 할당량을 선택합니다. BigQuery API를 검색합니다. 두 가지 관련 항목으로 리소스당 분당 스트리밍 행과 리소스당 분당 스트리밍 바이트가 있습니다.

할당량으로 이동

다음 단계

BigQuery 스키마에 대한 자세한 내용은 BigQuery로 내보내기 참조하기