Cloud 애셋 인벤토리 및 BigQuery를 사용하여 조직의 VM Manager 상태 보기

Cloud 애셋 인벤토리에서 BigQuery로 VM Manager 데이터를 내보내면 고급 쿼리를 실행하여 VM Manager가 사용 설정되어 있는지 확인하고, OS 구성 에이전트 버전을 확인하고, 조직의 모든 프로젝트에서 운영체제 세부정보를 검사할 수 있습니다.

이 문서에서는 VM Manager, Cloud 애셋 인벤토리, BigQuery를 사용하여 조직 전체의 Compute Engine 인스턴스에 대한 VM Manager 사용 설정 및 운영체제 상태 보고서를 확인하는 방법을 설명합니다.

시작하기 전에

  • VM Manager 설정
  • Cloud Asset Inventory API를 사용 설정합니다.
  • 내보낸 데이터를 저장할 BigQuery 데이터 세트를 만듭니다.
  • 조직 전체에서 VM Manager 상태 보고서를 볼 수 있는 필요한 권한이 있는지 확인합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스하는 경우 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  • 기본 리전 및 영역을 설정합니다.

필요한 역할

리소스 데이터를 내보내고 BigQuery에서 쿼리를 실행하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트, 폴더 또는 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 리소스 데이터를 내보내고 BigQuery에서 쿼리를 실행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

리소스 데이터를 내보내고 BigQuery에서 쿼리를 실행하려면 다음 권한이 필요합니다.

  • cloudasset.assets.exportOSInventories
  • cloudasset.assets.exportResource
  • bigquery.datasets.get
  • bigquery.tables.create
  • bigquery.tables.update
  • bigquery.tables.get
  • bigquery.jobs.create

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

BigQuery로 VM Manager 데이터 내보내기

OS 인벤토리 및 리소스 데이터를 BigQuery로 내보내려면 다음 단계를 따르세요.

  1. 조직 ID를 확인합니다.

    gcloud projects get-ancestors PROJECT_ID
    

    PROJECT_ID를 해당 프로젝트의 프로젝트 ID로 바꿉니다.

  2. VM 인스턴스에서 VM Manager가 수집한 OS 인벤토리 데이터를 내보냅니다.

    gcloud asset export \
        --content-type=os-inventory \
        --organization=ORGANIZATION_ID \
        --per-asset-type \
        --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/os"
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직 ID입니다.
    • BQ_PROJECT_ID: BigQuery 데이터 세트가 있는 프로젝트 ID입니다.
    • DATASET_ID: BigQuery 데이터 세트의 이름입니다.
  3. 리소스 메타데이터를 BigQuery 테이블로 내보냅니다.

    gcloud asset export \
        --content-type=resource \
        --organization=ORGANIZATION_ID \
        --per-asset-type \
        --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/res"
    

    다음을 바꿉니다.

    • ORGANIZATION_ID: 조직 ID입니다.
    • BQ_PROJECT_ID: BigQuery 데이터 세트가 있는 프로젝트 ID입니다.
    • DATASET_ID: BigQuery 데이터 세트의 ID

OS 인벤토리 스냅샷을 내보내는 방법을 알아보려면 애셋 스냅샷 내보내기를 참고하세요.

조직의 VM Manager 상태 보고서 생성

인벤토리 데이터를 내보낸 후 BigQuery에서 SQL 쿼리를 실행하여 VM Manager 상태 보고서를 생성할 수 있습니다. 이 보고서는 다음 정보를 제공합니다.

  • 각 VM 인스턴스에 대해 VM Manager OS 인벤토리 데이터가 보고되는지 여부입니다 (vmm_data).
  • 각 인스턴스에서 보고한 운영체제 긴 이름 (os_info_reported_by_vmm) 및 osconfig 에이전트 버전 (osconfig_agent_version)입니다.
  • 계층 구조의 프로젝트 전반에서 osconfig.googleapis.com API 서비스가 사용 설정되어 있는지 여부입니다.osconfig_enabled_in_project

보고서를 생성하려면 다음 단계를 따르세요.

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

    BigQuery로 이동

  2. 쿼리 편집기에 다음 SQL 스크립트를 붙여넣습니다.

    SELECT
      vms.project,
      vms.zone,
      vms.instance_name,
      vms.instance_status,
      vms.vmm_data,
      vms.instance_creation_time,
      vms.vmm_info_update_time,
      --  vms.gce_image,
      vms.os_info_reported_by_vmm,
      vms.service_account,
      service.resource.data.state AS osconfig_enabled_in_project,
      vms.osconfig_agent_version
      --  "INFO N/A" as enable_osconfig_metadata_set_in_project,
      --  "INFO N/A" as enable_osconfig_metadata_set_in_instance,
    FROM
    (
      SELECT
        SPLIT(name, '/')[OFFSET(8)] AS instance_name,
        SPLIT(name, '/')[OFFSET(4)] AS project,
        SPLIT(name, '/')[OFFSET(6)] AS zone,
        instances.ancestors,
        instances.resource.data.creationTimestamp AS instance_creation_time,
        instances.resource.data.serviceAccounts[SAFE_OFFSET(0)].email AS service_account,
        CASE WHEN inventory.os_inventory IS NOT NULL THEN TRUE ELSE FALSE END AS vmm_data,
        /*  SPLIT(resource.data.disks[OFFSET(0)].licenses[OFFSET(0)], '/')[OFFSET(9)] as gce_image, */
        inventory.os_inventory.os_info.long_name AS os_info_reported_by_vmm,
        inventory.os_inventory.update_time AS vmm_info_update_time,
        instances.resource.data.status AS instance_status,
        inventory.os_inventory.os_info.osconfig_agent_version
      FROM
        DATASET_ID.res_compute_googleapis_com_Instance AS instances
        LEFT JOIN DATASET_ID.os_compute_googleapis_com_Instance AS inventory
      USING (name)
      --  WHERE instances.resource.data.status = "RUNNING"
    ) AS vms
    LEFT JOIN DATASET_ID.res_serviceusage_googleapis_com_Service AS service
      ON vms.ancestors[OFFSET(0)] = service.resource.data.parent
    WHERE service.resource.data.name = "osconfig.googleapis.com"
    

    DATASET_ID을 BigQuery 데이터 세트 이름으로 바꿉니다.

  3. 실행을 클릭합니다.

데이터 쿼리에 대한 자세한 내용은 쿼리 실행을 참고하세요.

보고서를 생성한 후 데이터 스튜디오를 사용하여 맞춤 대시보드를 만들 수 있습니다. 자세한 내용은 데이터 스튜디오로 데이터 분석을 참고하세요.

다음 단계