根據 Monitoring 指標調度資源

根據 Cloud Monitoring 指標自動調度資源,可根據應用程式的測量結果調整所需容量。根據指標自動調度 MIG 資源時,自動配置器會在指標值增加時建立 VM,並在指標值減少時刪除 VM。

舉例來說,您可以根據使用者人數、延遲時間或 Pub/Sub 訂閱項目中的訊息數量,定義所需的 VM 數量。您可以使用 Monitoring 服務提供的內建指標,也可以使用從應用程式匯出的自訂指標。

本文說明如何根據 Monitoring 指標,自動調度代管執行個體群組 (MIG) 的資源。

您也可以根據 CPU 使用率、負載平衡服務的負載能力或排程,自動調度 MIG 資源。

事前準備

  • 請參閱自動配置器的基本概念。
  • 請參閱監控指標概念,瞭解自動調度資源設定中使用的指標。
  • 如要根據Ops Agent 指標自動調度資源,請安裝Ops Agent。
  • 如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

限制

根據監控指標調度資源時,除了所有自動調度器都有的限制外,還須遵守下列限制:

  • 每個 MIG 最多可根據 5 個監控指標設定自動調度資源。
  • 您只能根據具有 INT64 或 DOUBLE 值類型的指標自動調度資源。不支援其他值類型。
  • 您無法在自動調度資源政策中多次設定同一項指標。

根據 Monitoring 指標設定自動調度資源功能

您可以透過兩種不同的方式,使用監控指標值進行自動調度資源:

  • 使用率目標:如要讓自動配置器將指標維持在特定值,請設定使用率目標。當指標值高於目標時,自動配置器會建立 VM;當指標值低於目標時,則會刪除 VM。這項功能適用於網路流量、記憶體或磁碟用量,或是應用程式的平均延遲時間等指標。下圖顯示自動調度器如何根據指標值新增及移除 VM,以維持使用率目標。

    自動配置器會新增及移除 VM,以維持目標使用率。

  • 單一執行個體指派:如要根據可指派給各 VM 的工作量自動調度資源,請設定單一執行個體指派。您指定的單一執行個體指派代表您預期每個 VM 要處理的工作量。自動配置器會將指標值除以單一執行個體指派值,計算出所需的 VM 數量。舉例來說,如果指標等於 100,且單一執行個體指派值為 5,則自動配置器會在 MIG 中建立 20 個 VM。這類指標有助於反映工作量,例如 Pub/Sub 佇列長度或批次工作計數。單一執行個體指派不適用於來自各 VM 的指標。下圖顯示使用單一執行個體指派進行資源調度時,指標值與 VM 數量之間的比例關係。

    指標值與執行個體數之間的比例關係。

自動調度資源,將指標維持在目標值

如要將指標維持在目標值,請指定使用率目標。當指標值高於目標時,自動配置器會建立 VM;當指標值低於目標時,自動配置器會刪除 VM。

  • 如果指標來自 MIG 中的每個 VM,自動配置器會擷取 MIG 中所有 VM 的平均指標值,並與使用率目標進行比較。舉例來說,如果您想使用 tcp_connections 指標 (提供 VM 上的 TCP 連線數量) 自動調度資源,自動配置器會計算 MIG 中所有 VM 的平均 TCP 連線數量,並與目標比較。使用這類源自 VM 的指標時,MIG 無法水平縮減至零,因為自動配置器至少需要一個 VM 發布指標值。

  • 如果指標適用於整個 MIG,且並非來自 MIG 中的 VM,自動配置器會比較指標值與使用率目標。舉例來說,您可以使用測量應用程式延遲時間的自訂指標。使用適用於整個 MIG 的這類指標時,只要將執行個體數量下限設為 0 並符合必要條件,MIG 就能縮減至零個執行個體。

如果指標有多個值,請套用篩選器,使用指標中的個別值自動調整規模。如要進一步瞭解指標篩選器和可在設定中使用的其他欄位,請參閱「監控指標概念」。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 如果沒有代管執行個體群組,請建立一個。如未顯示,請點選清單中的 MIG 名稱,開啟該執行個體群組頁面。

  3. 按一下「編輯」。

  4. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。在開啟的「資源和指標」窗格中,執行下列操作:

    1. 按一下「選取指標」。
      1. 選取要用於自動調度資源的指標。您可以根據任何關鍵字篩選指標,例如記憶體、位元組、磁碟。
      2. 按一下 [套用]。窗格會顯示圖表,其中包含所選指標的資料。
    2. 如要使用指標中的特定資料,請依據標籤新增篩選器,如下所示:

      1. 在「篩選器」部分,按一下「新增篩選器」。
      2. 選取「標籤」並輸入「值」。
      3. 點按「Done」(完成)。圖表會重新整理,顯示篩選後的指標值。
    3. 如要查看用於自動調度 MIG 資源的指標匯總值,請切換「在圖表中顯示匯總資料」按鈕。圖表會重新整理,顯示匯總值。

    4. 在「自動調度資源的指標目標選項」部分,選取「使用率目標」。

    5. 請提供下列資訊:

      1. 使用率目標:指定自動配置器必須維持的值。這個值必須是正數。例如,24.5 和 100 都是可接受的值。
      2. 使用率目標類型:選取與指標測量類型對應的目標類型。如要進行準確比較,如果使用率目標是以秒為單位計算,請使用「每秒變化量」做為目標類型。同樣地,如要以每分鐘為單位評估使用率目標,請使用「每分鐘的差異」。
        • 計量表:自動配置器會計算過去幾分鐘內收集到的資料平均值,並與使用率目標進行比較。
        • 每分鐘變化量:自動配置器會計算每分鐘的平均成長率,並與使用率目標進行比較。
        • 每秒變化量:自動調度資源功能會計算每秒的平均成長率,並與使用率目標進行比較。
    6. 完成指標設定後,按一下「選取」。

  9. 檢查指標詳細資料,然後按一下「完成」。

  10. 按一下「儲存」即可完成設定。

gcloud

如要根據 Monitoring 指標設定自動調度資源,請使用 set-autoscaling 指令。

使用下列指令,根據使用率目標的監控指標自動調度資源。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

如果指標有多個值,且您想使用個別值進行自動調整資源配置,請使用 --stackdriver-metric-filter 旗標,如下列指令所示。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=METRIC_URL \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE \
  --stackdriver-metric-filter="METRIC_FILTER"

更改下列內容:

  • MIG_NAME:要新增自動配置器的 MIG。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須具備的 VM 數量下限。
  • METRIC_URL:監控指標的無通訊協定網址。例如:compute.googleapis.com/instance/uptime。如果使用自訂指標,則必須符合自訂指標規定。
  • TARGET_VALUE:自動配置器嘗試維持的指標值。
  • TARGET_TYPE:指標的值類型。
    • gauge,自動配置器會計算過去幾分鐘內收集到的資料平均值,並與使用率目標進行比較。
    • delta-per-minute,自動配置器會計算每分鐘的平均成長率,並與使用率目標進行比較。
    • delta-per-second,自動配置器會計算每秒平均成長率,並與使用率目標進行比較。為確保比較結果準確,如果您以秒為單位設定使用率目標,請使用 delta-per-second 做為目標類型。同樣地,以分鐘為單位的運用目標使用 delta-per-minute。
  • METRIC_FILTER:套用篩選條件,從有多個值的指標中選取個別值,並指定受監控的資源類型。如果使用來自各個 VM 的指標,則不必指定受監控資源類型,因為系統會預設使用 gce_instance。如果是其他指標,請在篩選運算式中使用 resource.type 指定受監控資源。如要進一步瞭解指標篩選器,請參閱「Monitoring 指標概念」。

如要查看 gcloud CLI 的可用指令和旗標完整清單,請參閱gcloud參考資料。

REST

如要根據可用區 MIG 的 Monitoring 指標設定自動調度資源,請使用 autoscalers 資源;如要根據區域 MIG 的 Monitoring 指標設定自動調度資源,請使用 regionAutoscalers 資源。

發出下列呼叫,根據 Monitoring 指標和使用率目標,自動調度可用區 MIG 的資源。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE
    }
  ],
 }
}

如果指標有多個值,而您想使用個別值進行自動調度資源,請使用下列 API 呼叫中提供的 filter 參數。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "utilizationTarget": TARGET_VALUE,
      "utilizationTargetType": TARGET_TYPE,
      "filter": "METRIC_FILTER"
    }
  ],
 }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:自動調整程式的名稱。
  • MIG_NAME:要新增自動配置器的 MIG。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須具備的 VM 數量下限。
  • METRIC_URL:監控指標的無通訊協定網址。例如:compute.googleapis.com/instance/uptime。如果使用自訂指標,則必須符合自訂指標規定。
  • TARGET_VALUE:自動配置器嘗試維持的指標值。
  • TARGET_TYPE:指標的值類型。
    • GAUGE:自動配置器會計算過去幾分鐘內收集的資料平均值,並與使用率目標進行比較。
    • DELTA_PER_MINUTE自動配置器會計算每分鐘的平均成長率,並與使用率目標進行比較。
    • DELTA_PER_SECOND 自動配置器會計算每秒的平均成長率,並與使用率目標進行比較。如要進行準確比較,請以秒為單位設定使用率目標,並使用「DELTA_PER_SECOND」做為目標類型。同樣地,以分鐘為單位的運用目標使用 DELTA_PER_MINUTE。
  • METRIC_FILTER:套用篩選器,從具有多個值的指標中使用個別值,並指定受監控資源類型。如果您使用來自各個 VM 的指標,則不必指定受監控的資源類型,因為系統會預設使用 gce_instance。如果是其他指標,則必須使用 resource.type 選取器指定受監控資源。如要進一步瞭解指標篩選器,請參閱「Monitoring 指標概念」。

根據 MIG 中每個 VM 可用的工作量自動調度資源

如要根據 MIG 中每個 VM 可用的工作量自動調度資源,請指定單一執行個體指派。您設定的單一執行個體指派值,代表您預期每個 VM 要處理的工作量。自動配置器會將指標值除以單一執行個體指派值,計算出所需的 VM 數量。

如果指標值為 0,表示 MIG 沒有任何工作需要完成。如果 MIG 的執行個體最低數量設為 0,且指標值降至 0,MIG 會擴充至 0,直到指標值增加為止。

如果指標有多個值,請套用篩選器,使用指標中的個別值自動調度資源。如要進一步瞭解指標篩選器和可在設定中使用的其他欄位,請參閱「監控指標概念」。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 如果沒有代管執行個體群組,請建立一個。如未顯示,請點選清單中的 MIG 名稱,開啟該執行個體群組頁面。

  3. 按一下「編輯」。

  4. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。在開啟的「資源和指標」窗格中,執行下列操作:

    1. 按一下「選取指標」。
      1. 選取要用於自動調度資源的指標。您可以根據任何關鍵字篩選指標,例如記憶體、位元組、磁碟。
      2. 按一下 [套用]。窗格會顯示圖表,其中包含所選指標的資料。
    2. 如要使用指標中的特定資料,請依據標籤新增篩選器,如下所示:

      1. 在「篩選器」部分,按一下「新增篩選器」。
      2. 選取「標籤」並輸入「值」。
      3. 點按「Done」(完成)。圖表會重新整理,顯示篩選後的指標值。
    3. 如要查看用於自動調度資源的代管執行個體群組:MIG 的指標匯總值,請切換「在圖表中顯示匯總資料」按鈕。圖表會重新整理,顯示匯總值。

    4. 在「自動調度資源的指標目標選項」部分,選取「單一 VM 執行個體指派」。

    5. 提供「單一執行個體指派」值,代表要指派給 MIG 中每個 VM 的工作量。

    6. 完成指標設定後,按一下「選取」。

  9. 檢查指標詳細資料,然後按一下「完成」。

  10. 按一下「儲存」即可完成設定。

gcloud

如要根據 Monitoring 指標設定自動調度資源,請使用 set-autoscaling 指令。

在指令中,指定 --stackdriver-metric-single-instance-assignment 旗標,指出您預期群組中每個 VM 要處理的工作量。

下列指令會根據每個 VM 的工作指派建立自動配置器。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    --max-num-replicas=MAX_INSTANCES \
    --min-num-replicas=MIN_INSTANCES \
    --update-stackdriver-metric=METRIC_URL \
    --stackdriver-metric-filter="METRIC_FILTER" \
    --stackdriver-metric-single-instance-assignment=INSTANCE_ASSIGNMENT

更改下列內容:

  • MIG_NAME:要自動調度資源的 MIG 名稱。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須具備的 VM 數量下限。
  • METRIC_URL:Monitoring 指標的無通訊協定網址。例如:compute.googleapis.com/instance_group/size。如果使用自訂指標,則必須符合自訂指標規定。
  • METRIC_FILTER:套用篩選條件,從有多個值的指標中選取個別值,並指定受監控的資源類型。如要進一步瞭解指標篩選器,請參閱「Monitoring 指標概念」。
  • INSTANCE_ASSIGNMENT:要指派給 MIG 中每個 VM 執行個體的工作量。

REST

如要根據可用區 MIG 的 Monitoring 指標設定自動調度資源,請使用 autoscalers 資源;如要根據區域 MIG 的 Monitoring 指標設定自動調度資源,請使用 regionAutoscalers 資源。

使用 singleInstanceAssignment 參數,指定您預期每個 VM 處理的工作量。

舉例來說,您可以進行下列呼叫,建立自動配置器,根據執行個體指派作業調度區域 MIG 資源。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers

{
 "name": "AUTOSCALER_NAME",
 "target": "zones/ZONE/instanceGroupManagers/MIG_NAME",
 "autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "metric": "METRIC_URL",
      "filter": "METRIC_FILTER",
      "singleInstanceAssignment": INSTANCE_ASSIGNMENT
    }
  ],
 }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:自動調整程式的名稱。
  • MIG_NAME:要自動調度資源的 MIG 名稱。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須具備的 VM 數量下限。
  • METRIC_URL:監控指標的無通訊協定網址。例如:compute.googleapis.com/instance_group/size。如果使用自訂指標,則必須符合自訂指標規定。
  • METRIC_FILTER:套用篩選條件,從有多個值的指標中選取個別值,並指定受監控的資源類型。如要進一步瞭解指標篩選器,請參閱「監控指標概念」。
  • INSTANCE_ASSIGNMENT:要指派給 MIG 中每個 VM 執行個體的工作量。

根據指標自動調度資源的範例

本節提供一些用於自動調度資源的指標範例。如需完整的指標清單,請參閱「Cloud de Confiance 指標」。

依據自訂指標自動調度資源

在某些情況下,提供相關信號的指標可能不代表可用工作總量或適用於群組的其他資源,而是平均值、百分位數或其他統計屬性。以這個範例來說,假設您是根據群組的平均處理延遲時間進行調整。

假設下列設定:

  • 系統會指派名為 our-instance-group 的可用區 MIG 執行特定工作。該群組位於區域 us-central1-a 中。
  • 您有監控自訂指標,可匯出要維持在特定層級的值。針對這個範例,假設指標表示指派給群組之處理查詢的平均延遲時間。
    • 已為自訂指標命名:custom.googleapis.com/example_average_latency。
    • 自訂指標的標籤具有名為 group_name 的鍵,且值等於 MIG 的名稱 our-instance-group。
    • 自訂指標會匯出全域受監控資源的資料,也就是說,自訂指標不會與任何特定 VM 建立關聯。

您已判斷出當指標值高於特定值時,需要為群組新增更多 VM 來處理負載,而當指標值低於該值時,則可釋出部分資源。您希望自動配置器以與指標高於或低於目標值幅度成正比的速率,逐步新增或移除 VM。在本範例中,假設您已將目標值設為 250 delta/sec。

您可以使用 250 的使用率目標,為群組設定自動調度資源功能,這代表自動配置器會嘗試維持的指標值變化率:

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 按一下「編輯」。

  4. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。「資源和指標」窗格隨即開啟。

    1. 按一下「選取指標」。
      1. 依序選取「Global」>「Custom metrics」,然後選擇指標。
      2. 按一下「套用」。
    2. 在「篩選器」部分,執行下列操作:
      1. 按一下 [新增篩選器]。
      2. 在「標籤」下拉式選單中,選取 group_name。
      3. 在「值」欄位中提供 our-instance-group。
      4. 點按「Done」(完成)。圖表會重新整理,顯示指標的篩選值。
    3. 在「Metric target options for autoscaling」(自動調度資源的指標目標選項) 部分,執行下列操作:
      1. 選取「使用率目標」。
      2. 輸入 250 做為使用率目標值。
      3. 將使用率目標類型設為「Delta / 秒」。
    4. 設定指標後,按一下「選取」。
  9. 查看指標詳細資料,然後按一下「完成」。

  10. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling our-instance-group \
  --zone=us-central1-a \
  --max-num-replicas=50 \
  --min-num-replicas=0 \
  --update-stackdriver-metric=custom.googleapis.com/example_average_latency \
  --stackdriver-metric-filter="metric.labels.group_name = \"our-instance-group\" AND resource.type = \"global\"" \
  --stackdriver-metric-utilization-target=250 \
  --stackdriver-metric-utilization-target-type=delta-per-second

REST

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/autoscalers
{
"name": "our-instance-group-autoscaler",
"target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceGroupManagers/our-instance-group",
"autoscalingPolicy": {
  "maxNumReplicas": 50,
  "minNumReplicas": 0,
  "customMetricUtilizations": [
    {
      "filter": "metric.labels.group_name=\"our-instance-group\" AND resource.type = \"global\"",
      "utilizationTargetType": "delta-per-second",
      "utilizationTarget": 250.0,
      "metric": "custom.googleapis.com/example_average_latency"
    }
  ]
}
}

依據 Pub/Sub 中未確認的訊息自動調度資源

如要根據 Pub/Sub 訂閱中的未確認訊息設定自動調度資源,請使用 pubsub 提供的 subscription/num_undelivered_messages 指標,並依 subscription ID 篩選。

subscription/num_undelivered_messages 指標會匯出訂閱項目中的訊息總數,包括正在處理但尚未確認的訊息。不建議使用不含處理中訊息的指標,因為這類指標可能會在仍有工作進行時降至 0,導致自動調度資源功能縮減資源,並可能中斷實際工作。

如果沒有訂閱項目,可以先建立提取、推送或 BigQuery 訂閱項目,再設定自動調度資源。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 按一下「編輯」。

  4. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Pub/Sub 佇列」。

  8. 選取「主題」。如要建立新主題,請按一下「建立主題」來建立主題。

  9. 根據要自動調度 MIG 資源的 Subscription 選取。如要建立新的訂閱項目,請按一下「建立訂閱項目」。

  10. 在「Number of messages to assign to each VM」(要指派給各個 VM 的訊息數量) 欄位中,指定您預期每個 VM 要處理的未確認訊息數量。

  11. 按一下「完成」。

  12. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \
  --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"" \
  --stackdriver-metric-single-instance-assignment=NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM

REST

如要設定可用區 MIG 的自動調度資源功能,請使用 autoscalers 資源;如要設定區域 MIG 的自動調度資源功能,請使用 regionAutoscalers 資源。

舉例來說,您可以發出下列呼叫,為可用區 MIG 建立自動配置器。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "singleInstanceAssignment": NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM,
      "filter": "resource.type = \"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"",
      "metric": "pubsub.googleapis.com/subscription/num_undelivered_messages"
    }
  ]
}
}

根據傳入的網路流量自動調度資源

如要根據 MIG 中 VM 的網路連入流量設定自動調度,請使用 compute 提供的 instance/network/received_bytes_count 指標。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 按一下「編輯」。

  4. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。「資源和指標」窗格隨即開啟。

    1. 按一下「選取指標」。
      1. 依序選取「VM 執行個體」>「執行個體」>「收到的位元組」(compute.googleapis.com/instance/network/received_bytes_count)。
      2. 按一下「套用」。
    2. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 確認已選取「Utilization target」(使用率目標)。
      2. 輸入使用率目標值。
      3. 設定使用率目標類型。
    3. 設定指標後,按一下「選取」。
  9. 查看指標詳細資料,然後按一下「完成」。

  10. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "utilizationTargetType": "TARGET_TYPE",
      "utilizationTarget": TARGET_VALUE,
      "metric": "compute.googleapis.com/instance/network/received_bytes_count"
    }
  ]
}
}

根據記憶體用量自動調度資源

如要根據記憶體用量百分比設定自動調度資源,請指定 percent_used 指標,該指標由 memory Ops Agent 指標提供。您應依 state 篩選指標,只使用 used 記憶體狀態。如未指定篩選器,自動調整程式會將標示為 buffered、cached、free、slab 和 used 的所有記憶體狀態記憶體用量加總。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 在執行個體群組總覽頁面中,按一下「編輯」。

  4. 按一下「群組大小和自動調度」展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。「資源和指標」窗格隨即開啟。

    1. 點選「選取指標」。
      1. 依序選取「VM Instance」>「Memory」>「Memory utilization」(agent.googleapis.com/memory/percent_used)。
      2. 按一下「套用」。
    2. 在「篩選器」部分,執行下列操作:
      1. 按一下 [新增篩選器]。
      2. 在「Label」(標籤) 下拉式選單中,選擇「state」(狀態) 指標標籤。
      3. 在「值」欄位中輸入 used。
      4. 按一下「完成」。
    3. 在「Metric target options for autoscaling」(自動調度資源的指標目標選項) 部分,執行下列操作:
      1. 確認已選取「Utilization target」(使用率目標)。
      2. 輸入使用率目標值。
      3. 將使用率目標類型設為「度量圖」。
    4. 設定指標後,按一下「選取」。
  9. 查看指標詳細資料,然後按一下「完成」。

  10. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=agent.googleapis.com/memory/percent_used \
  --stackdriver-metric-filter="metric.labels.state = \"used\"" \
  --stackdriver-metric-utilization-target-type=gauge \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "filter": "metric.labels.state=\"used\"",
    "utilizationTargetType": "GAUGE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/memory/percent_used"
  }
  ]
}
}

根據磁碟 I/O 自動調度資源

如要根據磁碟 I/O 作業總數設定自動調度資源,請使用 operation_count 指標,該指標由 disk Ops Agent 指標提供。如要根據讀取或寫入作業進行調整,請使用 direction 標籤篩選指標。同樣地,如要根據特定裝置的磁碟作業進行調整,請在指標篩選器中使用 device 標籤。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 在執行個體群組總覽頁面中,按一下「編輯」。

  4. 按一下「群組大小和自動調度」展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。「資源和指標」窗格隨即開啟。

    1. 點選「選取指標」。
      1. 依序選取「VM instance」(VM 執行個體) >「Disk」(磁碟) >「Disk operations」(磁碟作業) (agent.googleapis.com/disk/operation_count)。
      2. 按一下「套用」。
    2. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 確認已選取「Utilization target」(使用率目標)。
      2. 輸入使用率目標值。
      3. 設定使用率目標類型。
    3. 設定指標後,按一下「選取」。
  9. 查看指標詳細資料,然後按一下「完成」。

  10. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
  --max-num-replicas=MAX_INSTANCES  \
  --min-num-replicas=MIN_INSTANCES  \
  --update-stackdriver-metric=agent.googleapis.com/disk/operation_count \
  --stackdriver-metric-utilization-target=TARGET_VALUE  \
  --stackdriver-metric-utilization-target-type=TARGET_TYPE

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
  {
    "utilizationTargetType": "TARGET_TYPE",
    "utilizationTarget": TARGET_VALUE,
    "metric": "agent.googleapis.com/disk/operation_count"
  }
  ]
}
}

根據其他 MIG 的大小自動調度資源

您可以根據同一專案中另一個 MIG 的大小,自動調度 MIG 資源。舉例來說,您可以建立多層級應用程式,前端 MIG 根據負載平衡器自動調度資源,後端 MIG 則根據前端 MIG 的調度資源比例自動調度資源。使用單一執行個體指派作業,定義每個前端 VM 需要多少後端 VM。如果每 4 個前端 VM 需要 1 個後端 VM,請將後端 MIG 的單一執行個體指派設為 4。

如要根據另一個代管執行個體群組:MIG (MIG_2) 的大小自動調度資源代管執行個體群組:MIG (MIG_1),請使用 compute 提供的 instance_group/size 指標。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱,開啟執行個體群組總覽頁面。

  3. 在執行個體群組總覽頁面中,按一下「編輯」。

  4. 按一下「群組大小和自動調度」展開該部分。
  5. 如果沒有自動調度資源設定,請按一下「Configure autoscaling」(設定自動調度資源功能)。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果不需要這個信號,可以編輯並變更信號類型。

  6. 在「自動調度資源信號」部分,如果已有監控指標的信號,您可以點選進行編輯,或點選「新增信號」來新增信號。
  7. 將「信號類型」設為「Cloud Monitoring 指標」。

  8. 按一下「設定」。「資源和指標」窗格隨即開啟。

    1. 點選「選取指標」
      1. 依序選取「Instance Group」(執行個體群組) >「Instance_group」(執行個體群組) >「Instance group size」(執行個體群組大小) (compute.googleapis.com/instance_group/size)。
      2. 按一下「套用」。
    2. 在「篩選器」部分,執行下列操作:
      1. 按一下 [新增篩選器]。
      2. 在「Label」(標籤) 下拉式選單中,選擇「instance_group_name」資源標籤。
      3. 在「Value」(值) 欄位中,輸入要自動調度資源的 MIG 名稱 (MIG_2)。
      4. 按一下「完成」。
    3. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 選取「單一 VM 執行個體指派」。
      2. 在「Single VM instance assignment」(單一 VM 執行個體指派) 欄位中,輸入 4,這樣系統就會為 MIG_2 中的每 4 個 VM,在目前的 MIG (MIG_1) 中保留 1 個 VM。
    4. 設定指標後,按一下「選取」。
  9. 查看指標詳細資料,然後按一下「完成」。

  10. 完成後,按一下「儲存」。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_1 \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance_group/size \
  --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"" \
  --stackdriver-metric-single-instance-assignment=4

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers
{
"name": "AUTOSCALER_NAME",
"target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_1",
"autoscalingPolicy": {
  "maxNumReplicas": MAX_INSTANCES,
  "minNumReplicas": MIN_INSTANCES,
  "customMetricUtilizations": [
    {
      "singleInstanceAssignment": 4,
      "filter": "resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"",
      "metric": "compute.googleapis.com/instance_group/size"
    }
  ]
}
}

根據其他專案的指標自動調度資源

您可以根據其他專案的指標自動調度 MIG 資源。如要允許專案存取其他專案的指標,請將其他專案新增至目前專案的指標範圍。

設定指標範圍後,您可以在篩選器中使用 resource.labels.project_id 標籤指定指標的專案 ID,藉此使用其他專案的指標。

使用其他專案的指標時,也適用下列限制:

  • 您只能使用 gcloud CLI 或 REST 設定指標。不支援 Cloud de Confiance 控制台。

  • 您只能使用適用於整個 MIG 的指標。系統不支援來自 MIG 中各個 VM 的指標。

以下範例說明如何根據另一個專案中 MIG (MIG_2) 的大小,自動調度區域 MIG (MIG_1) 的資源。

gcloud

gcloud compute instance-groups managed set-autoscaling MIG_1 \
  --max-num-replicas=MAX_INSTANCES \
  --min-num-replicas=MIN_INSTANCES \
  --update-stackdriver-metric=compute.googleapis.com/instance_group/size \
  --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.project_id = \"PROJECT_ID_OF_MIG_2\" AND resource.labels.instance_group_name = \"MIG_2\"" \
  --stackdriver-metric-single-instance-assignment=1 \
  --zone=ZONE

更改下列內容:

  • MIG_1:要自動調度資源的 MIG 名稱。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須擁有的 VM 數量下限。
  • PROJECT_ID_OF_MIG_2:包含指標的專案 ID。
  • MIG_2:提供指標的 MIG 名稱。
  • ZONE:包含要自動調度資源的 MIG 的可用區。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID_OF_MIG_1/zones/ZONE/autoscalers
{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID_OF_MIG_1/zones/ZONE/instanceGroupManagers/MIG_1",
  "autoscalingPolicy": {
    "maxNumReplicas": MAX_INSTANCES,
    "minNumReplicas": MIN_INSTANCES,
    "customMetricUtilizations": [
      {
        "singleInstanceAssignment": 1,
        "filter": "resource.type = \"instance_group\" AND resource.labels.project_id = \"PROJECT_ID_OF_MIG_2\" AND resource.labels.instance_group_name = \"MIG_2\"",
        "metric": "compute.googleapis.com/instance_group/size"
      }
    ]
  }
}

更改下列內容:

  • PROJECT_ID_OF_MIG_1:包含要自動調度資源的 MIG 專案 ID。
  • ZONE:包含要自動調度資源的 MIG 的可用區。
  • AUTOSCALER_NAME:要設定的自動配置器名稱。
  • MIG_1:要自動調度資源的 MIG 名稱。
  • MAX_INSTANCES:MIG 可擁有的 VM 數量上限。
  • MIN_INSTANCES:MIG 必須擁有的 VM 數量下限。
  • PROJECT_ID_OF_MIG_2:包含指標的專案 ID。
  • MIG_2:提供指標的 MIG 名稱。

監控指標概念

本節簡要說明根據 Monitoring 指標設定自動調度資源時,需要瞭解的 Monitoring 指標概念。

  • 指標 ID 或指標網址:指標名稱,格式為不含通訊協定的網址。您可以從指標清單中,找到內建指標的網址。

    舉例來說,提供未確認訊息數量的 Pub/Sub 指標網址為 pubsub.googleapis.com/subscription/num_undelivered_messages。

  • 受監控資源類型:指標值的來源。您可以在指標清單中,找到指標的受監控資源類型。

    舉例來說,pubsub.googleapis.com/subscription/num_undelivered_messages 指標的受監控資源類型為 pubsub_subscription。如要進一步瞭解各個受監控資源類型,請參閱「受監控資源類型」。

  • 指標篩選器:如果指標有多個值,篩選器可讓自動配置器從一組可能的指標值中,找出特定指標值。使用指標和受監控資源類型上定義的標籤來篩選值。如要使用不同篩選條件探索指標值,請嘗試使用Metrics Explorer。

    舉例來說,pubsub.googleapis.com/subscription/num_undelivered_messages 指標會提供所有可用訂閱項目中未確認的訊息數量。如果沒有篩選器,自動調整程式會從所有訂閱項目取得指標值的總和。如要根據單一訂閱項目自動調度資源,請對為 pubsub_subscription 定義的 subscription_id 標籤套用篩選器。

指標篩選條件

如果使用的指標有多個值 (使用標籤分類),您可以套用篩選器,根據指標中的特定值自動調度資源。如果篩選條件傳回多個值,這些值會加總。 為求最佳結果,請建立篩選器,傳回單一值。

指標的自動配置器篩選條件與 Monitoring 篩選條件語法相容。篩選條件必須符合下列規定:

  • 篩選器的值必須以雙引號括住。
  • 您必須使用直接相等比較運算子 (=)。
  • 您必須使用 AND 運算子,才能加入不同的篩選條件。

    例如 --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\""。

  • 你必須使用直接值。篩選器中不得使用萬用字元或函式。

    例如,您不能使用 resource.labels.zone = starts_with("us-")。

  • 您無法使用資源中繼資料標籤,儲存受監控資源的中繼資料。

如需可做為篩選條件的指標標籤和受監控資源標籤完整參考資料,請參閱「指標清單」和「受監控資源清單」。

自訂指標規定

如要使用自訂指標,您必須先建立與其中一種受監控資源類型相關聯的自訂指標。

用於自動調度資源的自訂指標必須具備下列屬性:

  • 如果自動調度資源設定使用群組中每個 VM 的資料,請在 MIG 中設定執行個體,讓每個 VM 匯出自訂指標。每個 VM 匯出的值都必須與受監控的資源相關聯,其中包含下列標籤:gce_instance
    • zone,執行個體所在的可用區名稱。
    • instance_id,值為指派給 VM 的專屬數字 ID。
  • 指標至少必須每 60 秒匯出資料一次。如果匯出資料的頻率低於 60 秒,自動配置器就能更快地回應負載變更。如果匯出資料的頻率低於每 60 秒一次,自動配置器可能無法及時因應負載變化。
  • 指標必須匯出 INT64 或 DOUBLE 值類型的資料。

如要瞭解如何建立自訂指標,請參閱使用自訂指標。

後續步驟