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
-
Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
gcloud init외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
- 기본 리전 및 영역을 설정합니다.
필요한 역할
리소스 데이터를 내보내고 BigQuery에서 쿼리를 실행하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트, 폴더 또는 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- Cloud 애셋 뷰어(
roles/cloudasset.viewer) - BigQuery 데이터 편집자 (
roles/bigquery.dataEditor) - BigQuery 작업 사용자 (
roles/bigquery.jobUser)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 리소스 데이터를 내보내고 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로 내보내려면 다음 단계를 따르세요.
조직 ID를 확인합니다.
gcloud projects get-ancestors PROJECT_IDPROJECT_ID를 해당 프로젝트의 프로젝트 ID로 바꿉니다.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 데이터 세트의 이름입니다.
리소스 메타데이터를 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.comAPI 서비스가 사용 설정되어 있는지 여부입니다.osconfig_enabled_in_project
보고서를 생성하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에 다음 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 데이터 세트 이름으로 바꿉니다.실행을 클릭합니다.
데이터 쿼리에 대한 자세한 내용은 쿼리 실행을 참고하세요.
보고서를 생성한 후 데이터 스튜디오를 사용하여 맞춤 대시보드를 만들 수 있습니다. 자세한 내용은 데이터 스튜디오로 데이터 분석을 참고하세요.
다음 단계
- Terraform을 사용하여 VM Manager 리소스를 프로비저닝합니다.
- VM Manager의 OS 인벤토리에 대해 자세히 알아보세요.
- BigQuery로 저작물 메타데이터를 내보내는 방법을 알아보세요.
- 데이터 스튜디오를 사용하여 BigQuery 데이터 시각화