根據 Monitoring 指標調度資源


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

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

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

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

事前準備

  • 瞭解自動調度資源基本概念
  • 請參閱監控指標概念,瞭解自動調度資源設定中使用的指標。
  • 如要根據 Ops Agent 指標自動調度資源,請安裝 Ops Agent
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 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. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

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

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

限制

根據 Monitoring 指標執行資源調度時,除了所有自動調度器都有的限制外,還會受到下列限制:

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

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

您可以透過兩種不同方式,使用 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 的指標,自動調度器至少需要一個 VM 發布指標值,因此 MIG 無法縮減至零。

  • 如果指標適用於整個 MIG,且並非來自 MIG 中的 VM,則自動調度器會比較指標值與使用率目標。舉例來說,您可以透過自訂指標測量應用程式的延遲時間。如果您使用適用於整個 MIG 的指標,只要將執行個體數量下限設為 0,且未指定其他需要個別 VM 資料的信號,MIG 就能縮減至零。

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

主控台

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

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

  2. 如果沒有代管執行個體群組,請建立一個。或者,在清單中按一下 MIG 的名稱,開啟該執行個體群組頁面。

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「Autoscaling」(自動調度資源) 下方的「Autoscaling signals」(自動調度資源信號) 區段中,如果已有 Cloud Monitoring 指標的信號,您可以點選編輯,或按一下「Add a signal」(新增信號) 新增信號。

  6. 將「信號類型」設為「Cloud Monitoring 指標」

  7. 按一下「設定」。在隨即開啟的「Resource and metric」(資源和指標) 窗格中,執行下列操作:

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

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

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

    5. 請提供下列資訊:

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

  8. 查看指標詳細資料,然後按一下「完成」

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

gcloud

如要依據監控指標設定自動調度資源,請使用 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:無通訊協定的 Monitoring 指標網址。例如: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 指定受監控資源。如要進一步瞭解指標篩選器,請參閱「監控指標概念」。

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

REST

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

進行下列呼叫,根據使用率目標的監控指標,自動調度區域 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
    }
  ],
 }
}

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

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:無通訊協定的 Monitoring 指標網址。例如: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 選取器指定要監控的資源。如要進一步瞭解指標篩選器,請參閱「監控指標概念」。

根據 MIG 中各 VM 可執行的工作量自動調度資源

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

如果指標值為 0,表示 MIG 沒有待完成工作。如果 MIG 的執行個體數量下限設為 0,且指標值降至 0,則 MIG 會縮減至 0,直到指標值增加為止。

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

主控台

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

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

  2. 如果沒有代管執行個體群組,請建立一個。或者,在清單中按一下 MIG 的名稱,開啟該執行個體群組頁面。

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」區段中,如果已有監控指標的信號,您可以點選編輯,或點選「新增信號」新增指標。

  6. 將「信號類型」設為「Cloud Monitoring 指標」

  7. 按一下「設定」。在隨即開啟的「Resource and metric」(資源和指標) 窗格中,執行下列操作:

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

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

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

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

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

  8. 查看指標詳細資料,然後按一下「完成」

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

gcloud

如要依據監控指標設定自動調度資源,請使用 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:套用篩選器,使用具有多個值的指標中的個別值,並指定受監控的資源類型。如要進一步瞭解指標篩選器,請參閱監控指標概念
  • 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:無通訊協定的 Monitoring 指標網址。例如:compute.googleapis.com/instance_group/size。如果您使用自訂指標,則必須符合自訂指標規定
  • METRIC_FILTER:套用篩選器,使用具有多個值的指標中的個別值,並指定受監控的資源類型。如要進一步瞭解指標篩選器,請參閱監控指標概念
  • INSTANCE_ASSIGNMENT:要指派給 MIG 中每個 VM 執行個體的工作量。

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

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

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

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

假設下列設定:

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

您已決定當指標值高於某個特定值時,需要將更多的 VM 新增至群組來處理負載,而當它低於這個值時,可以釋出部分資源。您希望自動調度器以與指標高於或低於目標的程度成正比的比率,來逐步新增或移除 VM。在這個範例中,假設您已將目標值設為 250 delta/sec

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

主控台

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

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

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

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Monitoring 指標」

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

    1. 按一下「選取指標」
      1. 依序選擇「全域」>「自訂指標」,然後選取指標。
      2. 按一下 [套用]
    2. 在「篩選器」部分執行下列操作:
      1. 按一下 [新增篩選器]
      2. 在「標籤」下拉式選單中,選取 group_name
      3. 在「Value」(值) 欄位中,輸入 our-instance-group
      4. 按一下 [完成]。圖表會重新整理,顯示指標的篩選值。
    3. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 選取「使用率目標」
      2. 輸入使用率目標值 250。
      3. 將使用率目標類型設為「Delta / sec」(每秒變化量)
    4. 設定指標後,按一下「選取」
  8. 查看指標詳細資料,然後按一下「完成」

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

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」BigQuery訂閱項目,再設定自動調度資源。

主控台

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

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

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

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調整規模信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Pub/Sub 佇列」

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

  8. 選取要自動調度 MIG 的「Subscription」(訂閱項目)。如要建立新的訂閱項目,請按一下「建立訂閱項目」

  9. 在「要指派給各個 VM 的訊息數量」欄位中,指定您預期每個 VM 要處理的未確認訊息數量。

  10. 按一下 [完成]

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

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. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

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

  3. 按一下 [編輯]

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Monitoring 指標」

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

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

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

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 記憶體狀態。如未指定篩選器,自動配置器會將標示為 bufferedcachedfreeslabused 的所有記憶體狀態記憶體用量加總。

主控台

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

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

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

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

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Monitoring 指標」

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

    1. 按一下「選取指標」
      1. 依序選取「VM 執行個體」>「記憶體」>「記憶體使用率」(compute.googleapis.com/instance/memory/percent_used)。
      2. 按一下 [套用]
    2. 在「篩選器」部分執行下列操作:
      1. 按一下 [新增篩選器]
      2. 在「標籤」下拉式選單中,選擇「狀態」指標標籤。
      3. 在「Value」(值) 欄位中,輸入 used
      4. 按一下 [完成]
    3. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 確認已選取「使用率目標」
      2. 輸入使用率目標值。
      3. 將使用率目標類型設為「Gauge」(計量表)
    4. 設定指標後,按一下「選取」
  8. 查看指標詳細資料,然後按一下「完成」

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

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

主控台

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

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

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

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

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Monitoring 指標」

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

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

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

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. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

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

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

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

  4. 如果沒有自動調度資源設定:

    1. 在「Autoscaling」(自動調度資源) 下,按一下「Configure autoscaling」(設定自動調度資源功能)
    2. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  5. 在「自動調度資源」下方的「自動調度資源信號」部分中,按一下「新增信號」

  6. 將「信號類型」設為「Cloud Monitoring 指標」

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

    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 名稱 (MIG_2)。
      4. 按一下 [完成]
    3. 在「自動調度資源的指標目標選項」部分,執行下列操作:
      1. 選取「單一 VM 執行個體指派」
      2. 在「Single VM instance assignment」(單一 VM 執行個體指派) 欄位中,輸入 4,這樣一來,您目前 MIG (MIG_1) 中的每 4 個 VM,就會保留 1 個 VM 在 MIG_2 中。
    4. 設定指標後,按一下「選取」
  8. 查看指標詳細資料,然後按一下「完成」

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

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"
  }
  ]
}
}

監控指標概念

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

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

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

  • 受控資源類型:指標值的來源。您可以從指標清單中找出指標的受控資源類型。

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

  • 指標篩選器:如果指標有多個值,篩選器可讓自動調度器從可能的指標值集合中,找出特定指標值。使用指標受監控資源類型中定義的標籤,篩選值。如要使用不同篩選條件探索指標值,請嘗試使用指標探索工具

    舉例來說,下列螢幕截圖顯示 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 秒,自動配置器可能無法足夠快速地回應負載變更。
  • 指標必須匯出 INT64DOUBLE 值類型的資料。

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

後續步驟