유휴 리소스 권장사항 보기 및 적용


Compute Engine은 사용되지 않는 영구 디스크(PD), IP 주소, 커스텀 디스크 이미지와 같은 리소스를 식별할 수 있도록 권장사항을 제공합니다. 유휴 리소스 권장사항을 사용하면 리소스의 낭비를 최소화하고 컴퓨팅 비용을 줄일 수 있습니다. 실제로 사용되지 않는 PD의 경우 백업 스냅샷을 만든 다음 리소스를 삭제할 수 있습니다. 사용하지 않는 PD, 이미지, IP 주소가 필요하지 않으면 해당 리소스를 삭제할 수 있습니다.

유휴 VM 권장사항에 관심이 있는 경우 유휴 VM 권장사항 보기 및 적용을 참조하세요.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

가격 책정

유휴 PD 권장사항은 무료로 제공됩니다.

권장사항 생성

추천자는 15일 동안 VM이나 기타 리소스에 연결되지 않은 리소스를 유휴 상태로 분류합니다.

리소스를 유휴 상태로 분류하고 해당 권장 작업을 생성하려면 다음 조건 중 하나를 충족해야 합니다.

리소스 리소스가 유휴 상태로 분류되는 조건 권장 조치 절감 효과
PD 최소 15일 전에 생성되었고
VM에 연결된 적이 없으며
비어 있고
GKE 포드에 바인딩되지 않음
삭제 해당 디스크 비용의 100%를 절약(디스크 가격 책정 참조)
PD 15일 이상 분리되었으며
GKE 포드에 바인딩되지 않음
스냅샷 생성 후 삭제 디스크 유지보수 비용을 35%에서 92%까지 절감(디스크 가격 책정 참조)
커스텀 이미지 15일 이상 디스크를 만드는 데 사용되지 않으며 인스턴스 템플릿에서 사용되지 않음 삭제 해당 이미지 비용의 100%를 절약(이미지 가격 책정 참조)
IP 주소 15일 이상 리소스에 연결되지 않음 삭제 해당 IP 주소 비용의 100%를 절약(IP 가격 책정 참조)

권장사항 빈도

유휴 리소스 권장사항은 리소스 생성 후 15일 후에 시작되며 24시간마다 업데이트됩니다.

권장사항 보기

유휴 리소스에 대한 권장사항을 보려면 gcloud CLI나 REST를 사용합니다.

콘솔

Google Cloud 콘솔에서 권장사항 페이지로 이동합니다.

추천으로 이동

모든 유휴 리소스가 사용되지 않는 Compute Engine 리소스에 나열됩니다.

gcloud

gcloud recommender recommendations list 명령어--recommender=RECOMMENDER_ID 플래그와 함께 사용합니다.

gcloud recommender recommendations list \
    --project=PROJECT_ID \
    --location=LOCATION \
    --recommender=RECOMMENDER_ID \
    --format=yaml

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • LOCATION: 권장사항을 확인할 리소스의 위치입니다.
    • PD의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • RECOMMENDER_ID: recommender의 ID입니다.
    • 디스크의 경우 google.compute.disk.IdleResourceRecommender를 지정합니다.
    • 이미지의 경우 google.compute.image.IdleResourceRecommender를 지정합니다.
    • IP의 경우 google.compute.address.IdleResourceRecommender를 지정합니다.

예를 들어 다음 명령어는 test-project에 대한 us-central1-c의 유휴 PD 권장사항을 나열합니다.

gcloud recommender recommendations list \
    --project=test-project \
    --location=us-central1-c \
    --recommender=google.compute.disk.IdleResourceRecommender \
    --format=yaml


---
content:
    operationGroups:
    - operations:
      - action: add
        resource: //compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name
        resourceType: compute.googleapis.com/Disk
        path: /
        value:
        - name: $snapshot-name
          sourceDisk: projects/test-project/locations/us-central1-c/disks/pd-name
          storageLocations: us-central1
      - action: remove
        resource: //compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name
        resourceType: compute.googleapis.com/Disk
        path: /
description: Save cost by snapshotting and then deleting idle persistent disk 'pd-name'
name: projects/test-project/locations/us-central1-c/recommenders/google.compute.disk.IdleResourceRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1
recommenderSubtype: SNAPSHOT_AND_DELETE_DISK
lastRefreshTime:
  seconds: 1543912652
primaryImpact:
  category: COST
  costProjection:
    cost:
      currencyCode: USD
      units: '-50'
    duration:
      seconds: 2592000
stateInfo: ACTIVE
etag: "cb0e6ac2cfc0b591"

gcloud CLI를 사용하여 권장사항 작업에 대해 자세히 알아보세요.

REST

recommendations.list 메서드를 호출하고 추천자 ID를 지정합니다(예: google.compute.disk.IdleResourceRecommender).

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • LOCATION: 권장사항을 확인할 리소스의 위치입니다.
    • PD의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • RECOMMENDER_ID: recommender의 ID입니다.
    • 디스크의 경우 google.compute.disk.IdleResourceRecommender를 지정합니다.
    • 이미지의 경우 google.compute.image.IdleResourceRecommender를 지정합니다.
    • IP의 경우 google.compute.address.IdleResourceRecommender를 지정합니다.

다음 예시에서는 curl 및 관련 샘플 응답을 사용하여 요청을 보내는 방법을 보여줍니다.

PROJECT_ID=test-project
LOCATION=us-central1-c
RECOMMENDER_ID=google.compute.disk.IdleResourceRecommender

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

유휴 PD 권장사항에 대한 JSON 응답의 예시

{
 "description" : "Save cost by deleting idle persistent disk 'pd-name'",
 "name": "projects/test-project/locations/us-central1-c/recommenders/"
         "google.compute.disk.IdleResourceRecommender/"
         "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
 "recommenderSubtype" : "SNAPSHOT_AND_DELETE_DISK",
 "lastRefreshTime": {
   "seconds": 1543912652
 },
 "primaryImpact": {
   "category": COST,
   "costProjection": {
    "cost": {"currencyCode": "USD", "units": -50},
    "duration": { "seconds": 2592000 }
   }
 },
 "stateInfo": ACTIVE,
 "content": {
   "operationGroups" : [
    {
      "operations" : [
       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"],
         }
       },
       {
         "action": "remove",
         "resourceType": "compute.googleapis/Disk",
         "resource": "//compute.googleapis.com/projects/test-project/"
                     "zones/us-central1-c/disks/pd-name"
       }
      ]
    }
   ]
 },
 "associatedInsights": [
    {
      "insight": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/31326443-bcc3-4776-9b86-48879fddb656"
    }
  ],
 "etag": "cb0e6ac2cfc0b591"
}

권장사항 응답 해석

gcloud CLI 또는 REST를 통해 수신하는 각 권장사항에는 순차적으로 수행하여 권장사항을 적용할 수 있는 작업으로 구성된 작업 그룹이 포함됩니다. 예를 들어 유휴 PD 권장사항 작업 그룹에는 1~2개의 작업이 포함됩니다.

  • 유휴 PD에 데이터가 있는 경우 권장사항에는 PD 백업을 위한 스냅샷을 만드는 add 작업이 포함됩니다. 예를 들면 다음과 같습니다.

       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "path": "/",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"]
         }
       }
    
  • 유휴 PD를 영구적으로 삭제하는 remove 작업. 예를 들면 다음과 같습니다.

       {
         "action": "remove",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name",
         "path": "/"
       }
    

PD의 스냅샷을 만들고 삭제하려면 유휴 PD 권장사항 적용을 참조하고, 사용하지 않는 IP 주소를 삭제하려면 유휴 IP 삭제를 참조하고, 사용하지 않는 커스텀 디스크 이미지를 삭제하려면 유휴 커스텀 이미지 삭제를 참조하세요.

유휴 리소스 권장사항의 통계 보기

추천자는 리소스 통계를 기반으로 권장사항을 생성합니다. 리소스에 대한 통계를 확인하면 리소스가 VM에서 분리되어 있었던 시간이나 PD가 비어 있는지 여부 등 리소스에 대해 자세히 알아볼 수 있습니다.

권장사항을 생성한 통계를 보려면 gcloud CLI 또는 REST를 사용하면 됩니다.

gcloud

insights list 명령어를 사용합니다.

gcloud beta recommender insights list --project=PROJECT_NAME \
  --location=LOCATION --insight-type=INSIGHT_TYPE

다음을 바꿉니다.

  • LOCATION: 통계를 확인할 리소스의 위치입니다.
    • PD의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • INSIGHT_TYPE: 통계 유형의 ID입니다.
    • 디스크의 경우 google.compute.disk.IdleResourceInsight를 지정합니다.
    • 이미지의 경우 google.compute.image.IdleResourceInsight를 지정합니다.
    • IP의 경우 google.compute.address.IdleResourceInsight를 지정합니다.

REST

insights.list 메서드를 사용합니다.

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/insightTypes/INSIGHT_TYPE/insights

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • LOCATION: 통계를 확인할 리소스의 위치입니다.
    • PD의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • INSIGHT_TYPE: 통계 유형의 ID입니다.
    • 디스크의 경우 google.compute.disk.IdleResourceInsight를 지정합니다.
    • 이미지의 경우 google.compute.image.IdleResourceInsight를 지정합니다.
    • IP의 경우 google.compute.address.IdleResourceInsight를 지정합니다.

다음은 유휴 PD 리소스 관련 통계 응답의 예시입니다.

{
  "name": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/0ec21a13-bb04-3121-7321-dc43a11cc3e2",
  "description": "Disk 'pd-name' in zone 'us-central1-c' was last used 17 days ago. Consider taking snapshot and delete it.",
  "targetResources": [
    "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name"
  ],
  "insightSubtype": "IDLE_DISK",
  "content": {
    "diskLastUseTime": "2019-10-01 13:00:00",
    "isBlank": false,
  },
  "lastRefreshTime": "2019-10-10 13:00:00",
  "observationPeriod": "15 days",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "COST",
  "etag": "fds421j2349",
  "associatedRecommendations": [
    {
      "projects/test-project/locations/us-central1-c/recommenders/"
      "google.compute.disk.IdleResourceRecommender/"
      "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1"
    }
  ]
}

응답 예시에는 다음 필드가 포함됩니다.

  • diskLastUseTime: 디스크가 VM에 연결된 마지막 시간입니다. 디스크가 VM에 연결된 적이 없는 경우 디스크 생성 시간으로 설정됩니다.
  • isBlank: 디스크가 비어 있고 VM에 연결된 적이 없는 경우 이 필드는 true입니다. 그렇지 않은 경우 false입니다.

통계에 대한 자세한 내용은 참조 문서를 확인하세요.

유휴 리소스 권장사항 적용

유휴 리소스에 대한 권장사항을 수신한 다음 권장사항을 따르기로 결정한 경우 다음 안내를 따르세요.

유휴 IP 주소 삭제

addresses.delete 메서드, gcloud compute addresses delete 명령어 또는 고정 외부 IP 주소 해제 문서를 참조하세요.

유휴 커스텀 이미지 삭제

images.delete 메서드, gcloud compute images delete 명령어 또는 이미지 삭제 문서를 참조하세요.

유휴 PD 권장사항 적용

PD를 삭제하기 전에 PD의 스냅샷을 만들어야 하는 경우 영구 디스크 스냅샷 만들기를 참조하세요.

유휴 PD를 삭제하려면 gcloud compute disks delete 명령어를 참조하세요.

스냅샷에서 데이터를 복구하고 PD를 다시 만드는 방법은 스냅샷 복원을 참조하세요.