Mengelola Kuota Service

Halaman ini menjelaskan cara melihat semua metrik dan batas kuota di project Google Cloud untuk layanan tertentu, dan cara membatasi penggunaan kuota untuk layanan tersebut menggunakan penggantian kuota. Anda dapat menggunakan Penggunaan Layanan untuk mengelola kuota project untuk layanan apa pun, termasuk layanan Google Cloud publik dan layanan pribadi yang dibuat menggunakan Cloud Endpoints. Untuk mengetahui informasi selengkapnya tentang perbedaan antara API dan layanan publik dan pribadi, lihat Layanan Publik dan Pribadi.

Untuk sebagian besar kasus penggunaan operasional, cara termudah untuk mengelola kuota adalah dengan menggunakan Konsol Google Cloud. Jika Anda perlu memprogram terhadap Service Usage API, sebaiknya gunakan salah satu library klien yang kami sediakan. Untuk bereksperimen dengan API, Anda dapat mengikuti petunjuk dalam panduan ini dan menggunakan perintah gcurl untuk menguji API tanpa menyiapkan lingkungan pengembangan aplikasi lengkap.

Jika Anda menggunakan Terraform, lihat Mengelola resource Service Usage dengan Terraform.

Sebelum memulai

Untuk menggunakan contoh di halaman ini, selesaikan semua langkah yang tercantum dalam panduan Memulai. Langkah-langkah ini mencakup menentukan gcurl, yang merupakan alias yang diautentikasi untuk perintah curl standar, dan menentukan variabel lingkungan PROJECT_NUMBER.

Pastikan Anda memahami model kuota layanan untuk lebih memahami terminologi yang digunakan dalam tutorial ini.

Menampilkan kuota layanan

Untuk melihat semua metrik dan batas kuota yang berlaku untuk konsumen tertentu di layanan, gunakan perintah berikut:

gcurl "https://serviceusage.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics"

Panggilan merespons dengan daftar metrik yang ditentukan oleh layanan, masing-masing dengan daftar batas pada metrik tersebut yang berlaku untuk konsumen ini, nilai untuk batas tersebut, dan penggantian apa pun. Berikut adalah contoh respons sebagian:


{
  "metrics": [
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus",
      "displayName": "CPUs",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fzone",
          "unit": "1/{project}/{zone}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "-1",
              "defaultLimit": "-1"
            }
          ]
        },
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion",
          "unit": "1/{project}/{region}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/cpus",
          "quotaBuckets": [
            {
              "effectiveLimit": "24",
              "defaultLimit": "24"
            },
            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "asia-northeast1"
              }
            },

            ...

            {
              "effectiveLimit": "72",
              "defaultLimit": "72",
              "dimensions": {
                "region": "australia-southeast1"
              }
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/cpus",
      "unit": "1"
    },
    ...
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
      "displayName": "External VPN gateways",
      "consumerQuotaLimits": [
        {
          "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
          "unit": "1/{project}",
          "isPrecise": true,
          "metric": "compute.googleapis.com/external_vpn_gateways",
          "quotaBuckets": [
            {
              "effectiveLimit": "15",
              "defaultLimit": "15"
            }
          ]
        }
      ],
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "unit": "1"
    },
    ...

Setiap metrik dalam respons memiliki kolom name; untuk memeriksa setelan kuota hanya untuk metrik tersebut, bukan untuk semua metrik, gunakan name-nya di URL. Untuk tujuan tutorial ini, variabel lingkungan METRIC_RESOURCE_NAME menyimpan nama resource metrik kuota:

METRIC_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways"
gcurl "https://serviceusage.googleapis.com/v1beta1/${METRIC_RESOURCE_NAME}"

Karena nama resource metrik tertentu diberikan, panggilan hanya menampilkan informasi untuk metrik tersebut:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways",
  "displayName": "External VPN gateways",
  "consumerQuotaLimits": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
      "unit": "1/{project}",
      "isPrecise": true,
      "metric": "compute.googleapis.com/external_vpn_gateways",
      "quotaBuckets": [
        {
          "effectiveLimit": "15",
          "defaultLimit": "15"
        }
      ]
    }
  ],
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "unit": "1"
}

Demikian pula, setiap batas dalam metrik memiliki kolom name; untuk memeriksa setelan kuota hanya untuk batas tersebut pada metrik tersebut, bukan untuk semua batas pada metrik atau semua metrik, gunakan name-nya di URL. Untuk tujuan tutorial ini, variabel lingkungan LIMIT_RESOURCE_NAME menyimpan nama resource batas kuota:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject"
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}"

Jika batas tertentu diberikan, panggilan hanya akan menampilkan informasi untuk batas tersebut:

{
  "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject",
  "unit": "1/{project}",
  "isPrecise": true,
  "metric": "compute.googleapis.com/external_vpn_gateways",
  "quotaBuckets": [
    {
      "effectiveLimit": "15",
      "defaultLimit": "15"
    }
  ]
}

Membuat penggantian kuota konsumen

Pemilik project dapat menerapkan penggantian konsumen ke batas kuota tertentu pada project tersebut, untuk mengurangi jumlah total kuota yang dapat ditagih konsumen terhadap batas tersebut.

Perhatikan bahwa penggantian konsumen tidak dapat meningkatkan kuota yang tersedia di luar yang diizinkan oleh setelan default layanan dan penggantian yang ada oleh pihak lain (seperti pemilik layanan atau administrator kuota organisasi). Untuk meningkatkan kuota yang tersedia, gunakan opsi Edit Quotas di halaman kuota utama, atau minta admin organisasi untuk meningkatkan kuota.

Untuk mengidentifikasi batas yang akan diganti, gunakan salah satu metode sebelumnya untuk menemukan batas kuota yang diinginkan terlebih dahulu. Kemudian, gunakan kolom nama batas kuota untuk membuat penggantian konsumen baru pada batas tersebut. Contoh berikut adalah untuk batas per project dari metrik kuota "Gateway VPN eksternal" layanan Compute Engine:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject"
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides" -d '{"overrideValue": "14"}'

Jika berhasil, panggilan akan menampilkan ID operasi, yang mewakili pekerjaan yang sedang berlangsung di server, saat perubahan kuota diterapkan ke sistem backend:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

Untuk memeriksa progres operasi, cukup gunakan name-nya:

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl "https://serviceusage.googleapis.com/v1/${OPERATION_NAME}"

Jika operasi berhasil, pesan respons akan menyertakan done: true dan berisi resource penggantian yang baru dibuat. Jika operasi gagal, pesan respons akan menyertakan done: true, tetapi berisi detail error, bukan resource.

Untuk memverifikasi bahwa penggantian telah dibuat, cantumkan semua penggantian konsumen untuk batas:

gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"

Penggantian yang baru dibuat akan muncul dalam daftar:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "14"
    }
  ]
}

Membuat penggantian kuota regional atau zona

Beberapa batas kuota diterapkan berdasarkan per region atau per zona; hal ini ditunjukkan dengan adanya {region} atau {zone} di kolom unit batas. Misalnya, batas dengan unit "1/{project}/{region}" diterapkan berdasarkan per region. Menerapkan penggantian pada batas tersebut akan mengubah kuota dasar di setiap region atau zona. Untuk mengubah kuota hanya untuk wilayah atau zona tertentu, tambahkan dimensi kuota menggunakan kolom dimensions saat membuat penggantian. Misalnya, buat penggantian regional pada batas kuota regional Compute Engine seperti ini:

REGIONAL_LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion"
gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides" -d '{"overrideValue": "65", "dimensions": {"region": "southamerica-east1"} }'

Untuk memverifikasi bahwa penggantian regional telah dibuat, cantumkan semua penggantian konsumen untuk batas tersebut:

gcurl "https://serviceusage.googleapis.com/v1beta1/${REGIONAL_LIMIT_RESOURCE_NAME}/consumerOverrides"

Penggantian regional yang baru dibuat akan muncul dalam daftar:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/consumerOverrides/Cg1RdW90YU92ZXJyaWRlGhwKBnJlZ2lvbhISc291dGhhbWVyaWNhLWVhc3Qx",
      "overrideValue": "65",
      "dimensions": {
        "region": "southamerica-east1"
      }
    }
  ]
}

Memperbarui penggantian kuota konsumen

Pemilik project juga dapat mengubah nilai penggantian konsumen yang ada pada project.

Misalnya, anggap panggilan pembuatan sebelumnya menampilkan penggantian dengan kolom name seperti ini:

name: "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"

Kemudian, gunakan nama tersebut untuk mengidentifikasi penggantian yang akan diperbarui, seperti ini:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"
gcurl "https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME}" -X PATCH -d '{"overrideValue": "13"}'

Jika berhasil, panggilan akan menampilkan ID operasi, yang mewakili pekerjaan yang sedang berlangsung di server, saat perubahan kuota diterapkan ke sistem backend:

{
  "name": "operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
}

Untuk memeriksa progres operasi, cukup gunakan name-nya:

OPERATION_NAME="operations/quf.92accba3-6530-4fc1-9a95-c1280d48a6b7"
gcurl "https://serviceusage.googleapis.com/v1/${OPERATION_NAME}"

Jika operasi berhasil, pesan respons akan menyertakan done: true dan berisi resource penggantian yang diperbarui. Jika operasi gagal, pesan respons akan menyertakan done: true, tetapi berisi detail error, bukan resource yang diperbarui.

Untuk memverifikasi bahwa penggantian telah diperbarui, cantumkan semua penggantian konsumen untuk batas:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject"
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"

Penggantian sekarang akan muncul dalam daftar dengan nilai yang diperbarui:

{
  "overrides": [
    {
      "name": "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl",
      "overrideValue": "13"
    }
  ]
}

Menghapus penggantian kuota konsumen

Pemilik project juga dapat menghapus penggantian konsumen dari project.

Misalnya, anggap panggilan pembuatan sebelumnya menampilkan penggantian dengan kolom name seperti ini:

name: "projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"

Untuk menghapus penggantian, berikan urutan berikut:

OVERRIDE_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fdefault_requests/limits/%2Fmin%2Fproject/consumerOverrides/Cg1RdW90YU92ZXJyaWRl"
gcurl "https://serviceusage.googleapis.com/v1beta1/${OVERRIDE_RESOURCE_NAME}" -X DELETE

Untuk memverifikasi bahwa penggantian telah dihapus, cantumkan semua penggantian konsumen untuk batas tersebut:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject"
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides"

Penggantian yang dihapus tidak akan muncul lagi dalam daftar.

Memaksa perubahan kuota yang besar

Jika perubahan penggantian kuota akan menyebabkan kuota yang diterapkan berkurang lebih dari 10%, panggilan akan ditolak, sebagai tindakan pengamanan untuk menghindari penurunan kuota secara tidak sengaja terlalu cepat. Untuk mengabaikan batasan ini, gunakan flag force. Misalnya, berikut adalah panggilan create yang menggunakan flag force:

LIMIT_RESOURCE_NAME="projects/${PROJECT_NUMBER}/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fexternal_vpn_gateways/limits/%2Fproject"
gcurl "https://serviceusage.googleapis.com/v1beta1/${LIMIT_RESOURCE_NAME}/consumerOverrides?force=true" -d '{"overrideValue": "0"}'