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


이 문서에서는 Persistent Disk 볼륨, IP 주소, 커스텀 디스크 이미지에 대한 유휴 리소스 권장사항을 보고 적용하는 방법을 설명합니다.

Compute Engine은 유휴 상태의 영구 디스크 볼륨, 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 사용을 위한 인증을 참고하세요.

가격 책정

유휴 리소스 권장사항을 사용하는 데는 비용이 들지 않습니다.

권장사항 생성

리소스가 15일 동안 VM이나 기타 리소스에 연결되지 않은 경우 추천자는 해당 리소스를 유휴 상태로 분류합니다. 리소스를 유휴 상태로 분류하는 조건 및 권장 작업에 관한 자세한 내용은 다음 표를 참고하세요.

리소스 리소스가 유휴 상태로 분류되는 조건 권장 작업 예금
Persistent Disk 다음 사항에 모두 해당해야 합니다.
  • 영구 디스크가 15일 이상 전에 생성되었습니다.
  • 영구 디스크가 VM에 연결된 적이 없습니다.
  • 영구 디스크가 비어 있습니다.
  • 영구 디스크가 GKE 포드에 바인딩되지 않습니다.
삭제 해당 디스크 비용의 100% 를 절약할 수 있습니다. 자세한 내용은 디스크 및 이미지 가격 책정을 참고하세요.
Persistent Disk 다음 사항에 모두 해당해야 합니다.
  • 영구 디스크가 15일 이상 분리되었습니다.
  • 영구 디스크가 GKE 포드에 바인딩되지 않습니다.
영구 디스크의 스냅샷을 만든 후 삭제 디스크 유지보수 비용을 35% 에서 92%까지 절감합니다. 자세한 내용은 디스크 및 이미지 가격 책정을 참고하세요.
커스텀 이미지 다음 사항에 모두 해당해야 합니다.
  • 15일 이상 디스크를 만드는 데 사용되지 않은 이미지입니다.
  • 이미지가 인스턴스 템플릿에 사용되지 않습니다.
삭제 해당 이미지 비용의 100% 를 절약합니다. 자세한 내용은 디스크 및 이미지 가격 책정을 참고하세요.
외부 IP 주소 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: 권장사항을 확인할 리소스의 위치입니다.
    • 영구 디스크 볼륨의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • RECOMMENDER_ID: 추천자의 ID입니다.
    • 디스크의 경우 google.compute.disk.IdleResourceRecommender를 지정합니다.
    • 이미지의 경우 google.compute.image.IdleResourceRecommender를 지정합니다.
    • IP의 경우 google.compute.address.IdleResourceRecommender를 지정합니다.

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

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: 권장사항을 확인할 리소스의 위치입니다.
    • 영구 디스크 볼륨의 경우 영역 또는 리전을 지정합니다(예: us-central1-c).
    • IP의 경우 다음과 같습니다.
      • 리전 IP를 나열하려면 리전을 지정해야 합니다.
      • 전역 IP를 나열하려면 global을 지정합니다. 리전 및 전역 IP 주소 리소스에 대한 자세한 내용은 IP 주소를 참조하세요.
    • 커스텀 이미지의 경우 global을 지정합니다.
  • RECOMMENDER_ID: 추천자의 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

유휴 영구 디스크 권장사항에 대한 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를 통해 수신하는 각 권장사항에는 순차적으로 수행하여 권장사항을 적용할 수 있는 작업으로 구성된 작업 그룹이 포함됩니다. 예를 들어 유휴 영구 디스크 권장사항 작업 그룹에는 1~2개의 작업이 포함됩니다.

  • 유휴 영구 디스크에 데이터가 있는 경우 권장사항에는 영구 디스크를 백업하기 위한 스냅샷을 만드는 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"]
         }
       }
    
  • 유휴 영구 디스크를 영구적으로 삭제하는 remove 작업 예를 들면 다음과 같습니다.

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

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

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

권장사항을 생성한 통계를 보려면 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: 통계를 확인할 리소스의 위치입니다.
    • 영구 디스크 볼륨의 경우 영역 또는 리전을 지정합니다(예: 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를 지정합니다.

다음은 유휴 영구 디스크 리소스에 관한 통계 응답의 예입니다.

{
  "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 명령어 또는 이미지 삭제 문서를 참조하세요.

유휴 영구 디스크 권장사항 적용

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

유휴 영구 디스크를 삭제하려면 gcloud compute disks delete 명령어를 참고하세요.

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