Windows Server와 같이 운영체제에 사용자 라이선스를 사용하는 경우 계약 의무에 따라 이러한 라이선스를 사용 중인 VM 인스턴스, 물리적 서버, 물리적 CPU 코어 수를 모니터링하고 보고해야 할 수 있습니다.
이 문서에서는 오픈소스 도구인 License Tracker를 사용하여 사용 중인 VM 인스턴스, 물리적 서버, 물리적 CPU 코어 수를 모니터링하는 방법과 Looker Studio를 사용하여 결과를 시각화하는 방법을 설명합니다.
License Tracker 도구는 Compute Engine 감사 로그를 분석하여 각 VM 인스턴스의 배치를 확인하는 방식으로 작동합니다. 배치는 VM 인스턴스가 특정 물리적 서버에서 실행되는 기간을 설명합니다. 하나의 물리적 서버에서 다른 물리적 서버로 VM이 마이그레이션될 때마다 하나의 배치가 종료로 표시되고 또 다른 배치가 시작됩니다.
예를 들어 지금 시작되고 몇 개월 후 다시 중지되는 VM 인스턴스가 있다고 가정해보세요. 런타임 중 특정 시점에서 이 VM은 Server 1
에서 Server 2
로 자동으로 마이그레이션되고 이후 다시 Server 1
로 마이그레이션됩니다. 이러한 기록은 3개의 배치에 해당합니다.
License Tracker 도구를 처음 실행하면 이전 90일 동안의 Compute Engine 사용량을 분석하고 결과를 BigQuery에 기록합니다. 이후 실행 시에는 도구가 마지막 실행 시간과 현재 일자 사이의 델타 값을 분석하여 BigQuery 데이터 세트를 그에 따라 업데이트합니다.
License Tracker 도구는 IAP 데스크톱에서 제공하는 사용량 보고 기능을 대체합니다.
비용
이 가이드에서는 다음과 같은 비용이 청구될 수 있는 Google Cloud 구성요소를 사용합니다.
가격 계산기를 사용하면 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.
License Tracker 도구 배포
이 섹션에서는 License Tracker 도구를 하루 한 번 자동으로 실행하도록 Cloud Run 및 Cloud Scheduler를 설정하는 방법을 설명합니다.
다음 다이어그램은 이 문서에 설명된 솔루션을 보여줍니다.
- License Tracker 도구는 Cloud Run에 배포되고 하나 이상의 프로젝트 로그를 분석하도록 구성됩니다.
- 하루 한 번 Cloud Scheduler가 Cloud Run 작업을 트리거하여 License Tracker 도구가 BigQuery 데이터 세트를 업데이트합니다.
- Looker Studio 대시보드는 BigQuery의 데이터를 시각화하여 사용자에게 제공합니다.
프로젝트 만들기
Cloud Run 및 Cloud Scheduler를 설정하려면 새 프로젝트를 만듭니다.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
애플리케이션 배포
이제 License Tracker 도구를 Cloud Run에 배포합니다.
Google Cloud Console에서 Cloud Shell 활성화 버튼을 클릭하여 Cloud Shell을 엽니다.
프로젝트 ID를 포함하도록 환경 변수를 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID를 프로젝트의 ID로 바꿉니다.
배포할 Cloud Run 리전을 설정합니다.
gcloud config set run/region REGION
REGION을 Cloud Run 및 Cloud Scheduler를 지원하는 리전으로 바꿉니다.
도구에 대한 서비스 계정을 만듭니다.
SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \ --display-name "License Tracker" \ --format "value(email)")
서비스가 BigQuery 데이터 세트를 만들고 액세스하고 동일한 프로젝트에서 Cloud Run 작업을 시작하도록 허용합니다.
gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/bigquery.admin" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/run.invoker"
Cloud Build가 Cloud Run 배포를 수행하고 Cloud Scheduler 작업을 관리하도록 허용합니다.
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value core/project) --format='value(projectNumber)') \ gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/run.developer" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/cloudscheduler.admin"
GitHub 저장소를 클론하고
latest
분기로 전환합니다.git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Cloud Build에 빌드를 제출합니다.
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
이 빌드는 License Tracker 애플리케이션을 Cloud Run에 배포하고 하루 한 번 작업을 트리거하도록 Cloud Scheduler를 구성합니다.
빌드를 완료하는 데 약 3분이 걸립니다.
분석할 프로젝트 선택
License Tracker 도구는 다음 조건이 모두 적용되는 모든 Google Cloud 프로젝트를 분석합니다.
- Compute Engine API가 사용 설정됩니다.
- 프로젝트가 도구의 서비스 계정에 Compute 뷰어(
roles/compute.viewer
) 및 로그 뷰어(roles/logging.viewer
) 액세스를 부여합니다.
분석에 프로젝트, 폴더, 전체 조직을 포함하려면 다음을 수행합니다.
프로젝트
SCOPE_ID=RESOURCE_PROJECT_ID SCOPE_TYPE=projects gcloud projects add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud projects add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
RESOURCE_PROJECT_ID를 License Tracker 도구로 분석할 Google Cloud 프로젝트의 ID로 바꿉니다.
폴더
SCOPE_ID=RESOURCE_FOLDER_ID SCOPE_TYPE=folders gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
RESOURCE_FOLDER_ID를 License Tracker 도구로 분석할 프로젝트가 포함된 폴더의 ID로 바꿉니다.
조직
SCOPE_ID=ORGANIZATION_ID SCOPE_TYPE=organizations gcloud organizations add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud organizations add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
ORGANIZATION_ID를 조직의 ID로 바꿉니다.
초기 분석 시작
이제 초기 분석을 시작할 수 있습니다.
Google Cloud Console에서 Cloud Run > 작업으로 이동합니다.
license-tracker 작업을 선택하여 작업 세부정보를 엽니다.
실행을 클릭합니다.
선택한 프로젝트의 수와 크기에 따라 초기 분석이 완료되는 데 몇 시간이 걸릴 수도 있습니다.
작업이 완료되면 프로젝트에
license_usage
라는 BigQuery 데이터 세트가 포함됩니다.선택적으로 Cloud Logging에서 로그를 봅니다.
대시보드 만들기
이제 샘플 대시보드의 사본을 만들어 Looker Studio 대시보드를 만듭니다.
대시보드의 데이터 소스를 복사합니다.
각 데이터 소스에 대해 다음을 수행합니다.
- 위 링크를 클릭하여 데이터 소스를 엽니다.
- 이 데이터 소스의 사본 만들기를 클릭합니다.
- 데이터 소스 복사를 클릭합니다.
- 대시보드를 BigQuery에 연결하도록 승격되면 승인을 클릭합니다.
- 선택적으로 헤더를 클릭하고 데이터 소스의 이름을 바꿉니다.
- 결제 프로젝트 목록에서 License Tracker 도구를 배포하는 데 사용된 프로젝트를 선택합니다.
- 다시 연결을 클릭합니다.
- 연결 변경사항 적용 대화상자에서 적용을 선택합니다.
대시보드를 복사합니다.
샘플 대시보드를 엽니다.
대시보드가 데이터 소스에 연결되어 있지 않으므로 데이터가 표시되지 않습니다.
… > 사본 만들기를 클릭합니다.
이 보고서 복사 대화상자에서 데이터 소스의 사본을 선택합니다.
보고서 복사를 클릭합니다.
이제 대시보드에 BigQuery 데이터 세트의 데이터가 표시됩니다.
다른 사용자에게 대시보드에 대한 액세스 부여
대시보드의 데이터 소스는 뷰어의 사용자 인증 정보를 사용하여 BigQuery에 액세스하도록 구성됩니다. 다른 사용자에게 대시보드에 대한 액세스를 부여하려면 다음을 수행해야 합니다.
- 대시보드를 공유하고 사용자에게 보고서 보기 권한을 부여합니다.
- BigQuery 데이터 뷰어(
roles/bigquery.dataViewer
) 및 BigQuery 작업 사용자(roles/bigquery.jobUser
) 역할을 사용자에게 부여합니다. 데이터 세트 또는 프로젝트 수준에서 이러한 역할을 부여할 수 있습니다.
대시보드 맞춤설정
Looker Studio 보고서 편집기를 사용하여 기존 차트를 수정하거나 차트를 추가하도록 대시보드를 맞춤설정할 수 있습니다.
샘플 대시보드의 모든 차트는 BigQuery 데이터 세트의 placements
보기를 기반으로 합니다. 이 보기에는 모든 프로젝트의 모든 배치가 포함되어 있으며 다음 스키마를 사용합니다.
열 | 데이터 유형 | 설명 |
---|---|---|
instance_id | 정수 | 인스턴스 ID |
instance_name | 문자열 | 인스턴스 이름 |
instance_zone | 문자열 | 인스턴스의 영역 ID |
instance_project_id | 문자열 | 인스턴스의 프로젝트 ID |
tenancy | 문자열 | 단독 테넌트 노드에서 실행되는 경우 S , 그렇지 않으면 F |
node_type | 문자열 | 단독 테넌트 노드 유형 |
node_project_id | STRING | 노드의 프로젝트 ID, 공유 단독 테넌트 노드의 경우 이 값이 instance_project_id 와 다를 수 있습니다. |
server_id | 문자열 | 물리적 서버의 고유 ID |
operating_system_family | 문자열 | WIN , LINUX 또는 null (인식할 수 없는 경우) |
license | 문자열 | 이미지에 사용되는 라이선스 문자열 |
license_type | 문자열 | BYOL , SPLA 또는 null (인식할 수 없는 경우) |
machine_type | STRING | 인스턴스의 머신 유형 |
memory_mb | 정수 | 인스턴스에 할당된 RAM 용량(MB) |
vcpu_count | 정수 | 인스턴스에 할당된 vCPU 수 |
vcpu_min_allocated | 정수 | 인스턴스에 할당된 최소 vCPU 수, 단독 테넌트 VM에 CPU를 오버커밋하는 경우 이 값은 vcpu_count 와 다를 수 있습니다. |
maintenance_policy | STRING | 인스턴스의 유지보수 정책 |
start_date | 타임스탬프 | 배치 시작 |
end_date | 타임스탬프 | 배치 종료 |
기존 차트를 맞춤설정하거나 자체 차트를 대시보드에 추가할 때 placement
보기를 사용할 수 있습니다.
License Tracker 도구 업그레이드
이 섹션에서는 License Tracker 도구의 기존 배포를 업그레이드하여 최신 버전의 애플리케이션을 사용하거나 다른 구성을 사용하는 방법을 설명합니다.
Google Cloud Console에서 Cloud Shell 활성화 버튼을 클릭하여 Cloud Shell을 엽니다.
프로젝트 ID를 포함하도록 환경 변수를 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID를 기존 배포가 포함된 프로젝트의 ID로 바꿉니다.
기존 배포의 Cloud Run 리전을 선택합니다.
gcloud config set run/region REGION
GitHub 저장소를 클론하고
latest
분기로 전환합니다.git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Cloud Build에 빌드를 제출합니다.
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
빌드는 기존 배포를 업데이트하고 완료하는 데 약 3분 정도 걸립니다.