全部產品
Search
文件中心

Auto Scaling:使用公式運算自訂目標追蹤規則

更新時間:Jan 13, 2026

在使用目標追蹤的伸縮方式時,您可以通過公式運算組合多個企業CloudMonitor指標,建立自訂的目標追蹤規則,以滿足您實際的業務需求。

方案概述

方案優勢

  • 支援公式運算。您可以通過公式運算,組合至多三個指標作為追蹤的目標,更加靈活。

  • 支援更多的監控指標。該方案基於企業CloudMonitor實現,相比使用系統監控的目標追蹤規則,該方案支援使用更多的監控指標實現目標追蹤,關於企業CloudMonitor的更多資訊,請參見企業CloudMonitor概覽

使用流程

本方案基於伸縮組的目標追蹤規則企業CloudMonitor實現,您可以參考以下流程完成自訂目標追蹤規則。

  1. 設計目標追蹤伸縮方案

    首先,您需要根據需求,調研需要用到的企業CloudMonitor的監控指標,設計目標追蹤伸縮方案。

  2. 實現設計的伸縮方案。

    準備需要用到的企業CloudMonitor指標,並基於這些指標建立目標追蹤規則,實現設計好的伸縮方案。

  3. 持續監控,最佳化方案。

    持續監控伸縮組的伸縮活動及追蹤的指標變化,最佳化伸縮方案。

1. 設計目標追蹤伸縮方案

首先,您需要根據需求,調研需要用到的企業CloudMonitor的監控指標,設計目標追蹤伸縮方案。您可以參考以下樣本設計方案。

企業CloudMonitor支援的監控指標,請參見附錄1 雲產品監控指標。為保證目標追蹤的響應速度,請選擇最小指標周期為60s的指標進行目標追蹤。
指標計算結果應根據伸縮組中執行個體數量的變化按比例調整,確保在指標高於目標值時增加執行個體(擴容),而在指標低於目標值時減少執行個體(縮容)。

樣本方案設計

本文以“基於MNS隊列的活躍訊息數量,動態調整伸縮組執行個體”的伸縮方案為例,具體方案說明如下。

  • 預計效果

    期望伸縮組平均每個執行個體均有3個訊息需要排隊處理,如果訊息增多,則觸發擴容,小於3則觸發縮容。

  • 實現

    為實現該功能,需要準備兩個指標:Message ServiceMNS隊列的活躍訊息數量(ActiveMessages)、伸縮組中啟動並執行執行個體數(RunningInstanceCount),基於這兩個指標的比值,設定目標追蹤規則,目標值設定為3,即使兩個指標的比值維持在3左右。即滿足公式:

2. 實現設計的伸縮方案

2.1 準備目標追蹤規則需要關注的企業CloudMonitor指標

如果您已經準備好企業CloudMonitor指標,可跳過該步驟。
使用該功能需要開通企業CloudMonitor。具體操作,請參見開通企業CloudMonitor

在建立目標追蹤規則之前,需要先在企業CloudMonitor建立目標追蹤規則需要關注的企業CloudMonitor指標,用於後續追蹤該指標,操作步驟如下。

  1. 建立指標倉庫。

    具體操作,請參見建立指標倉庫

  2. 添加需要關注的指標。

    您可以根據實際需求,在步驟1中建立的指標倉庫中,添加您需要關注的指標,具體操作,請參見管理資料接入任務

    說明

    為保證目標追蹤的響應速度,請選擇最小指標周期為60s的指標進行目標追蹤。

樣本方案所需指標

建立指標倉庫ess-metrics-repo-test,並添加以下兩個監控指標:

  • Message Service MNS活躍訊息ActiveMessages)指標。

    image

  • Auto Scaling運行執行個體數RunningInstanceCount)指標。

    image

2.2 基於企業CloudMonitor指標,建立目標追蹤規則

在伸縮組中,建立追蹤企業CloudMonitor指標的目標追蹤規則,具體操作如下。

如果您未建立伸縮組,請先建立伸縮組,具體操作,請參見建立ECS伸縮組建立ECI伸縮組
重要

目標追蹤伸縮規則支援縮容到0,請在建立目標追蹤規則之前,根據實際需求設定伸縮組的組內最小執行個體數組內最大執行個體數,控制擴縮容的邊界,防止方案設計問題導致服務不可用或費用超預算等問題。

  1. 進入待操作的伸縮組建立伸縮規則頁。

    1. 登入Auto Scaling控制台

    2. 在左側導覽列中,單擊伸縮組管理

    3. 在頂部功能表列處,選擇地區。

    4. 找到待操作的伸縮組,在對應操作列下,單擊查看詳情

    5. 在頁面上方,單擊伸縮規則與任務頁簽。

    6. 伸縮規則列表下,單擊建立伸縮規則進入建立伸縮規則頁。

  2. 在建立伸縮規則頁面,具體配置項說明如下。

    配置項

    說明

    伸縮規則類型

    選擇目標追蹤規則

    監控指標類型

    選擇企業CloudMonitor

    監控指標倉庫

    選擇在步驟2.1中準備的指標倉庫。

    監控指標描述

    選擇在步驟2.1中準備的指標,以及需要監控的資源。

    指標計算運算式

    根據實際需求,輸入運算式。支援+-*/以及()

    重要
    • 指標運算運算式最多支援三種不同指標參與運算。

    • 指標計算結果應根據伸縮組中執行個體數量的變化按比例調整,確保在指標高於目標值時增加執行個體(擴容),而在指標低於目標值時減少執行個體(縮容)。

    目標值

    指標計算運算式的目標值,目標追蹤規則會將CloudMonitor指標運算後的結果值維持在目標值附近。

    執行個體預熱時間

    單位為秒。處於預熱狀態的執行個體正常加入伸縮組,但是不會向CloudMonitor上報監控資料。動態計算需要擴縮容的執行個體數量時,處於預熱狀態的執行個體不計入現有執行個體數量,以免造成指標值波動。

    擴容警示觸發的閾值次數

    建立目標追蹤規則後,會自動建立警示任務。該參數指定自動建立的擴容警示任務觸發警示時,所需連續滿足閾值條件的次數。

    縮容警示觸發的閾值次數

    建立目標追蹤規則後,會自動建立警示任務。該參數指定自動建立的縮容警示任務觸發警示時,所需連續滿足閾值條件的次數。

    禁用縮容

    是否禁用縮容影響自動建立的警示任務的數量:

    • 如果禁用縮容,目標伸縮規則僅建立一個用於擴容的警示任務,因此不會從伸縮組移出ECS執行個體或ECI執行個體。

    • 如果允許縮容,目標伸縮規則會建立兩個警示任務,一個用於擴容,一個用於縮容。

    樣本方案所需關鍵配置說明

    配置項

    樣本

    監控指標類型

    選擇企業CloudMonitor

    監控指標倉庫

    選擇在步驟2.1中準備的指標倉庫,即ess-metrics-repo-test。

    監控指標描述

    指標a:

    • 監控指標選擇AliyunEss_RunningInstanceCount

    • 監控的資源選擇當前伸縮組。

    指標b:

    • 監控指標選擇AliyunMnsnew_ActiveMessages

    • 監控的資源選擇需要監控的MNS隊列。

    指標計算運算式

    輸入b/a。表示平均每個執行個體需要處理的訊息數。

    目標值

    輸入3。表示期望平均每個執行個體有3個訊息排隊。

  3. 完成配置後單擊確認按鈕,完成目標追蹤規則的建立。

3. 持續監控,最佳化方案

在您建立目標追蹤規則之後,需要持續監控您的伸縮組是否按照您的預期運行。您可以結合指標運算值的監控資訊及伸縮活動、伸縮組監控等資訊,判斷伸縮組是否按照您的預期執行。

相關操作

  • 查看目標追蹤規則資訊

    您可以在伸縮規則與警示任務 > 伸縮規則頁簽下,找到建立的目標追蹤規則,單擊伸縮規則ID可查看目標伸縮規則的資訊。您可以點擊已關聯的警示任務,查看警示任務的監控資訊。

  • 監控指標運算值

    建立目標追蹤規則後,會自動建立兩個警示任務(企業CloudMonitor),您可以在伸縮規則與任務 > 警示任務 > 警示任務(企業CloudMonitor)頁簽下,找到對應的警示任務,單擊警示任務ID進入警示任務詳情頁,查看監控指標計算值。

  • 查看伸縮活動

    伸縮活動頁簽下,查看伸縮組進行的伸縮活動紀錄。

調用API建立基於企業CloudMonitor的目標追蹤規則

您可以通過調用CreateScalingRule介面,建立基於企業CloudMonitor的目標追蹤規則。核心參數說明及樣本如下:

核心參數說明

參數名稱

類型

說明

如何設定

RegionId

String

伸縮組地區ID。

設定為目標伸縮組所在地區。

ScalingGroupId

string

伸縮組ID。

設定為待修改伸縮組的ID。

ScalingRuleName

string

伸縮規則名稱。

2~64 個英文或中文字元,以數字、大小寫字母或中文開頭,可包含數字、底線(_)、連字號(-)或點號(.)。

同一使用者帳號同一地區同一伸縮組內伸縮規則名稱唯一。

如果沒有指定該參數,預設值為 ScalingRuleId 的值。

ScalingRuleType

string

伸縮規則類型。

實現目標追蹤規則需設定為TargetTrackingScalingRule

DisableScaleIn

boolean

是否禁用縮容,僅適用於目標追蹤規則。

  • true:禁用。

  • false:不禁用。

根據實際方案設定。

TargetValue

integer

目標值。

TargetValue 最多保留小數點後三位,且必須大於 0。

EstimatedInstanceWarmup

integer

執行個體預熱時間。處於預熱狀態的 ECS 執行個體將正常的加入伸縮組,但是期間將不會向CloudMonitor上報監控資料。

動態計算需要擴縮容的 ECS 執行個體數量時,處於預熱狀態的執行個體不計入現有執行個體數量。

取值範圍:0~86400,單位:秒。

預設值:300。

ScaleOutEvaluationCount

integer

建立目標追蹤規則後,會自動建立警示任務。本參數用於指定對應的擴容警示任務觸發警示時,所需連續滿足閾值條件的次數。

預設值:3。

根據實際方案設定。

ScaleInEvaluationCount

integer

建立目標追蹤規則後,會自動建立警示任務。本參數用於指定對應的縮容警示任務觸發警示時,所需連續滿足閾值條件的次數。

預設值:15。

根據實際方案設定。

MetricType

string

監控項類型。

實現基於企業CloudMonitor指標的目標追蹤規則時需設定為hybrid,代表使用企業CloudMonitor作為監控指標。

HybridMonitorNamespace

string

企業CloudMonitor指標倉庫 ID。

管理指標倉庫,請參見管理指標倉庫

根據實際方案設定。

HybridMetrics

array<object>

企業CloudMonitor指標設定。

企業CloudMonitor指標數組。

HybridMetrics子屬性

Id

string

公制運算運算式中指標的引用 ID。

類似於聲明一個變數,後續在設定公式時會引用該變數。

可以設定為a、b、c等。

MetricName

string

企業CloudMonitor指標倉庫中的指標名稱。

根據實際方案設定。

Statistic

string

指標的統計方式。

根據實際方案設定,取值範圍:

  • Average:指定區間內所有點的平均值。

  • Minimum:指定區間內所有點的最小值。

  • Maximum:指定區間內所有點的最大值。

Expression

string

多個企業CloudMonitor指標的公制運算運算式,運算式的計算結果將用於觸發擴縮容。

運算運算式需滿足逆波蘭運算式(RPN)規範,並且操作符只支援+ - * /

根據實際方案設定。

Dimensions

object

指標維度。用於指定指標監控的資源。

Dimensions子屬性

DimensionKey

string

指標維度key。

根據實際方案設定。

DimensionValue

string

指標維度value。

根據實際方案設定。

調用樣本

以調用API實現步驟1中設定的樣本方案為例。

實現該方案,可以設定以下參數。

{
    "RegionId": "cn-hangzhou",
    "ScalingGroupId": "asg-bp1******",
    "ScalingRuleType": "TargetTrackingScalingRule",
    "ScalingRuleName": "TrackingQueueLength",
    "DisableScaleIn": false,
    "TargetValue": 3,
    "EstimatedInstanceWarmup": 300,
    "ScaleOutEvaluationCount": 3,
    "ScaleInEvaluationCount": 15,
    "MetricType": "hybrid",
    "HybridMonitorNamespace": "ess-metrics-repo-test",
    "HybridMetrics.1.Id": "a",
    "HybridMetrics.1.MetricName": "AliyunEss_RunningInstanceCount",
    "HybridMetrics.1.Statistic": "Average",
    "HybridMetrics.1.Dimensions.1.DimensionKey": "instanceId",
    "HybridMetrics.1.Dimensions.1.DimensionValue": "asg-bp1******",
    "HybridMetrics.2.Id": "b",
    "HybridMetrics.2.MetricName": "AliyunMnsnew_ActiveMessages",
    "HybridMetrics.2.Statistic": "Average",
    "HybridMetrics.2.Dimensions.1.DimensionKey": "region",
    "HybridMetrics.2.Dimensions.1.DimensionValue": "cn-hangzhou",
    "HybridMetrics.2.Dimensions.2.DimensionKey": "userId",
    "HybridMetrics.2.Dimensions.2.DimensionValue": "******",
    "HybridMetrics.2.Dimensions.3.DimensionKey": "queue",
    "HybridMetrics.2.Dimensions.3.DimensionValue": "test",
    "HybridMetrics.3.Id": "Expression",
    "HybridMetrics.3.Expression": "b/a"
}

核心JSON片段解讀:

  • 聲明一個變數a,值為ess-metrics-repo-test指標倉庫中的AliyunEss_RunningInstanceCount指標值,且指定伸縮組ID為asg-bp1******

    含義:ID為asg-bp1******伸縮組中啟動並執行執行個體數量。
    "HybridMetrics.1.Id": "a",
    "HybridMetrics.1.MetricName": "AliyunEss_RunningInstanceCount",
    "HybridMetrics.1.Statistic": "Average",
    "HybridMetrics.1.Dimensions.1.DimensionKey": "instanceId",
    "HybridMetrics.1.Dimensions.1.DimensionValue": "asg-bp1******",
  • 聲明另一個變數b,值為ess-metrics-repo-test指標倉庫中的AliyunMnsnew_ActiveMessages,且指定指標維度region=cn-hangzhouuserId=******queue=test

    含義:userId為******的帳號下杭州地區的隊列名稱為test的隊列的活躍訊息數量。
    "HybridMetrics.2.Id": "b",
    "HybridMetrics.2.MetricName": "AliyunMnsnew_ActiveMessages",
    "HybridMetrics.2.Statistic": "Average",
    "HybridMetrics.2.Dimensions.1.DimensionKey": "region",
    "HybridMetrics.2.Dimensions.1.DimensionValue": "cn-hangzhou",
    "HybridMetrics.2.Dimensions.2.DimensionKey": "userId",
    "HybridMetrics.2.Dimensions.2.DimensionValue": "******",
    "HybridMetrics.2.Dimensions.3.DimensionKey": "queue",
    "HybridMetrics.2.Dimensions.3.DimensionValue": "test",
  • 設定指標計算公式b/a

    含義:即實現公式
    "HybridMetrics.3.Id": "Expression",
    "HybridMetrics.3.Expression": "b/a"
  • 設定公式計算後的目標值。

    含義:公式計算結果的目標值為3。
    "TargetValue": 3