BigQuery에 권장사항 내보내기

개요

BigQuery 내보내기를 사용하면 조직의 권장사항 항목 일일 스냅샷을 볼 수 있습니다. 이 작업은 BigQuery Data Transfer Service를 사용하여 수행합니다. 다음 통계 및 권장사항을 내보낼 수 있습니다.

이름 추천자 ID
IAM 추천자 google.iam.policy.Recommender
VM 머신 유형 추천자 google.compute.instance.MachineTypeRecommender
관리형 인스턴스 그룹 머신 유형 추천자 google.compute.instanceGroupManager.MachineTypeRecommender
유휴 PD 추천자 google.compute.disk.IdleResourceRecommender
유휴 VM 추천자 google.compute.instance.IdleResourceRecommender
유휴 이미지 추천자 google.compute.image.IdleResourceRecommender
유휴 IP 주소 추천자 google.compute.address.IdleResourceRecommender
Cloud SQL 초과 프로비저닝된 인스턴스 추천자 google.cloudsql.instance.OverprovisionedRecommender
Cloud SQL 유휴 인스턴스 추천자 google.cloudsql.instance.IdleRecommender
무인 프로젝트 추천자 google.resourcemanager.projectUtilization.Recommender
Cloud Run 서비스 ID 추천자 google.run.service.IdentityRecommender
Cloud Billing 비용 통계 google.costinsights.Insight

시작하기 전에

권장사항에 대한 데이터 전송을 만들기 전에 다음 단계를 완료합니다.

  • BigQuery Data Transfer Service에 데이터 전송을 관리할 수 있는 권한을 허용합니다. BigQuery 웹 UI를 사용하여 전송을 만드는 경우 권한을 볼 수 있도록 브라우저의 console.cloud.google.com에서 팝업을 허용해야 합니다. 자세한 내용은 BigQuery Data Transfer Service 사용 설정을 참조하세요.
  • 데이터를 저장할 BigQuery 데이터 세트를 만듭니다.
    • 모든 권장사항이 미국 데이터 세트로 이동합니다. 현재 미국 내 데이터 세트만 지원되기 때문입니다.
    • 데이터 전송은 데이터 세트가 생성된 리전과 동일한 리전을 사용합니다. 데이터 세트와 전송이 생성되면 위치를 변경할 수 없습니다.

가격 책정

BigQuery로 권장사항을 내보내는 기능은 추천자 가격 책정 등급에 따라 모든 추천자 고객에게 제공됩니다.

필수 권한

데이터 전송을 설정하는 동안 데이터 전송을 만드는 프로젝트 수준에서 다음 권한이 필요합니다.

  • bigquery.transfers.update - 전송을 만들 수 있습니다.
  • bigquery.datasets.update - 대상 데이터 세트에서 작업을 업데이트할 수 있습니다.
  • resourcemanager.projects.update - 내보내기 데이터를 저장할 프로젝트를 선택할 수 있습니다.
  • pubsub.topics.list - 내보내기에 대한 알림을 받기위해 Pub/Sub 주제를 선택할 수 있습니다.

조직 수준에서 다음 권한이 필요합니다. 이 조직은 내보내기가 설정된 항목에 해당합니다.

  • recommender.resources.export - BigQuery로 권장사항을 내보낼 수 있습니다.

권한 부여

데이터 전송을 만드는 프로젝트에 다음 역할을 부여해야 합니다.

    대상 데이터 세트에 대한 전송 및 업데이트 작업을 만들려면 다음 역할을 부여해야 합니다.

  • BigQuery 관리자 역할 - roles/bigquery.admin
  • 내보내기 데이터를 저장하고 알림을 수신할 Pub/Sub 주제를 선택할 수 있는 프로젝트를 선택하는 권한이 포함된 역할이 여러 개 있습니다. 이러한 권한을 모두 사용하려면 다음 역할을 부여하면 됩니다.

  • 프로젝트 소유자 역할 - roles/owner

조직 수준에서 다음 역할을 부여해야 합니다.

  • Google Cloud Console의 권장사항 내보내기(roles/recommender.exporter) 역할

필수 권한이 포함된 커스텀 역할을 만들 수도 있습니다.

권장사항 데이터 전송 만들기

  1. Google Cloud 콘솔에 로그인합니다.

    콘솔에 로그인

  2. 화면에서 권장사항 탭을 클릭합니다.

  3. 내보내기를 클릭하여 BigQuery 내보내기 양식을 확인합니다.

  4. 권장사항 데이터를 저장할 대상 프로젝트를 선택하고 다음을 클릭합니다.

  5. API 사용 설정을 클릭하여 내보낼 BigQuery API를 사용 설정합니다. 완료하는 데 몇 초 정도 걸릴 수 있습니다. 완료되면 계속을 클릭합니다.

  6. 전송 구성 양식에서 다음 세부정보를 입력합니다.

    • 전송 구성 이름 섹션의 표시 이름에 전송 이름을 입력합니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 쉽게 식별할 수 있는 값이면 됩니다.

    • 일정 옵션 섹션의 일정에서 기본값(지금 시작)을 유지하거나 설정 시간에 시작을 클릭합니다.

      • 반복에서 전송을 실행할 빈도 옵션을 선택합니다.

        • 매일(기본값)
        • 매주
        • 매월
        • 커스텀
        • 주문형
      • 시작일 및 실행 시간에 전송을 시작할 날짜 및 시간을 입력합니다. 지금 시작을 선택하면 이 옵션은 중지됩니다.

    • 대상 설정 섹션의 대상 데이터 세트에서 데이터를 저장하기 위해 만든 데이터 세트를 선택합니다.

    • 데이터 소스 세부정보 섹션에서 다음을 수행합니다.

      • organization_id의 기본값은 현재 권장사항을 보고 있는 조직입니다. 권장사항을 다른 조직으로 내보내려면 조직 뷰어의 콘솔 상단에서 이를 변경하면 됩니다.

    • (선택사항) 알림 옵션 섹션에서 다음을 수행합니다.

      • 전환을 클릭해서 이메일 알림을 사용 설정합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
      • Pub/Sub 주제 선택에서 주제 이름을 선택하거나 주제 만들기를 클릭합니다. 이 옵션은 전송에 대한 Pub/Sub 실행 알림을 구성합니다.

  7. 만들기를 클릭하여 전송을 만듭니다.

  8. 동의 팝업에서 허용을 클릭합니다.

  9. 전송이 생성되면 다시 권장사항 허브로 이동됩니다. 링크를 클릭하여 전송 구성 세부정보에 액세스할 수 있습니다. 또는 다음을 수행하여 전송에 액세스할 수 있습니다.

    • 콘솔에서 BigQuery 페이지로 이동합니다.

      BigQuery 페이지로 이동

    • 데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.

전송 실행 기록 보기

전송 실행 기록을 보려면 다음 안내를 따르세요.

  1. 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.

  3. 목록에서 적절한 전송을 클릭합니다.

  4. 실행 기록 탭에 표시된 실행 전송 목록에서 세부정보를 볼 전송 항목을 선택합니다.

  5. 선택한 개별 실행 전송의 실행 세부정보 패널이 표시됩니다. 표시될 수 있는 실행 세부정보 중 일부는 다음과 같습니다.

    • 사용할 수 없는 소스 데이터로 인해 지연된 전송
    • 테이블로 내보낸 행 수를 나타내는 작업
    • 백필을 부여하고 나중에 예약해야 하는 데이터 소스에 대한 권한이 누락되었습니다.

언제 데이터를 내보내나요?

데이터 전송을 만들 때 첫 번째 내보내기가 수행되려면 2일이 걸립니다. 이후에는 내보내기 작업이 매일 실행됩니다. 다음 조건이 적용됩니다.

  • 일일 내보내기 작업은 이전 일자의 데이터를 BigQuery 데이터 세트로 내보냅니다.
  • 이전 일자의 데이터가 준비될 때까지는 일일 내보내기 작업이 실행되지 않습니다. 따라서 매일 데이터 세트가 업데이트되는 시간이 약간 달라질 수 있습니다.

전송 테이블 보기

권장사항을 BigQuery로 내보내면 데이터 세트에 파티션을 나눈 테이블 두 개가 포함됩니다.

  • recommendations_export
  • insight_export

테이블 및 스키마에 대한 자세한 내용은 테이블 만들기 및 사용스키마 지정을 참조하세요.

데이터 전송 테이블을 보려면 다음 안내를 따르세요.

  1. 콘솔에서 BigQuery 페이지로 이동합니다.
    BigQuery 페이지로 이동

  2. 데이터 전송을 클릭합니다. 사용 가능한 모든 데이터 전송을 볼 수 있습니다.

  3. 목록에서 적절한 전송을 클릭합니다.

  4. 구성 탭을 클릭하고 데이터 세트를 클릭합니다.

  5. 탐색기 패널에서 프로젝트를 확장하고 데이터 세트를 선택합니다. 설명 및 세부정보가 세부정보 패널에 표시됩니다. 데이터 세트의 테이블은 탐색기 패널에 데이터 세트 이름과 함께 나열됩니다.

백필 예약

과거의 날짜(조직에서 내보내기를 선택한 날짜보다 늦은 날짜)에 대한 권장사항을 백필을 예약하여 내보낼 수 있습니다. 백필을 예약하려면 다음 안내를 따르세요.

  1. 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 데이터 전송을 클릭합니다.

  3. 전송 페이지의 목록에서 적절한 전송을 클릭합니다.

    1. 백필 예약을 클릭합니다.

    2. 백필 예약 대화상자에서 시작일종료일을 선택합니다.

전송 작업에 대한 자세한 내용은 전송 작업을 참조하세요.

쿼리 예

다음 샘플 쿼리를 사용하여 내보낸 데이터를 분석할 수 있습니다.

추천 기간이 일 단위로 표시되는 권장사항의 비용 절감 보기

SELECT name, recommender, target_resources,
  case primary_impact.cost_projection.cost.units is null
       when true then round(primary_impact.cost_projection.cost.nanos * power(10,-9),2)
       else
       round( primary_impact.cost_projection.cost.units +
       (primary_impact.cost_projection.cost.nanos * power(10,-9)), 2)
   end
   as dollar_amt,
   primary_impact.cost_projection.duration.seconds/(60*60*24) as duration_in_days
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and primary_impact.category = "COST"

사용하지 않는 IAM 역할 목록 보기

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REMOVE_ROLE"

더 작은 역할로 바꿔야 하는 부여된 역할 목록 보기

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REPLACE_ROLE"

권장사항의 통계 보기

SELECT recommendations.name as recommendation_name,
insights.name as insight_name,
recommendations.cloud_entity_id,
recommendations.cloud_entity_type,
recommendations.recommender,
recommendations.recommender_subtype,
recommendations.description,
recommendations.target_resources,
recommendations.recommendation_details,
recommendations.state,
recommendations.last_refresh_time as recommendation_last_refresh_time,
insights.insight_type,
insights.insight_subtype,
insights.category,
insights.description,
insights.insight_details,
insights.state,
insights.last_refresh_time as insight_last_refresh_time
FROM `<project>.<dataset>.recommendations_export` as recommendations,
   `<project>.<dataset>.insights_export` as insights
WHERE DATE(recommendations._PARTITIONTIME) = "<date>"
and DATE(insights._PARTITIONTIME) = "<date>"
and insights.name in unnest(recommendations.associated_insights)

특정 폴더에 속한 프로젝트의 권장사항 보기

이 쿼리는 프로젝트에서 최대 5개 수준까지 상위 폴더를 반환합니다.

SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and "<folder_id>" in unnest(ancestors.folder_ids)

Sheets를 사용하여 BigQuery 데이터 탐색

BigQuery에서 쿼리를 실행하는 대신 새로운 BigQuery 데이터 커넥터인 연결된 시트를 사용하여 스프레드시트에서 수십억 개의 BigQuery 데이터 행을 액세스 분석, 시각화, 공유할 수 있습니다. 자세한 내용은 Google Sheets에서 BigQuery 데이터 시작하기를 참조하세요.

BigQuery 명령줄 및 REST API를 사용하여 내보내기 설정

  • 필요한 권한 가져오기:

    Google Cloud Console 또는 명령줄을 통해 필요한 Identity and Access Management 권한을 가져올 수 있습니다.

    예를 들어 명령줄을 사용하여 서비스 계정의 조직 수준 recommender.resources.export 권한을 가져오려면 다음 명령어를 실행합니다.

    gcloud organizations add-iam-policy-binding *<organization_id>* --member=serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'

  • 데이터 세트 만들기 및 BigQuery API 사용 설정

  • BigQuery 데이터 소스에 프로젝트 등록

    Datasource to use: 6063d10f-0000-2c12-a706-f403045e6250

  • 내보내기 만들기:

    bq mk \
    --transfer_config \
    --project_id=project_id \
    --target_dataset=dataset_id \
    --display_name=name \
    --params='parameters' \
    --data_source=data_source \
    --service_account_name=service_account_name
    

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

    • project_id는 프로젝트 ID입니다.
    • dataset는 전송 구성의 대상 데이터 세트 ID입니다.
    • name은 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 식별할 수 있는 값이면 됩니다.
    • parameters에는 JSON 형식으로 생성된 전송 구성의 매개변수가 있습니다. 권장사항 및 통계 BigQuery Export의 경우 권장사항과 통계를 내보내야 하는 organization_id를 제공해야 합니다. 매개변수 형식: '{"organization_id":"<org id>"}'
    • 사용할 data_source 데이터 소스: '6063d10f-0000-2c12-a706-f403045e6250'
    • service_account_name은 내보내기를 인증하는 데 사용되는 서비스 계정 이름입니다. 서비스 계정은 전송을 만드는 데 사용한 것과 동일한 project_id가 소유해야 하며 위에 나열된 모든 필수 권한이 있어야 합니다.
  • UI 또는 BigQuery 명령줄을 통해 기존 내보내기를 관리합니다.

  • 참고 - 향후 내보내기 구성을 업데이트하는 사용자와 관계없이 내보내기는 계정을 설정한 사용자로 실행됩니다. 예를 들어 서비스 계정을 사용하여 내보내기를 설정하고 나중에 인간 사용자가 BigQuery Data Transfer Service UI를 통해 내보내기 구성을 업데이트하면 내보내기가 서비스 계정으로 계속 실행됩니다. 이 경우 내보내기가 실행될 때마다 서비스 계정에 'recommender.resources.export'의 권한 확인이 수행됩니다.