1. 程式人生 > >Ess報警任務全新升級

Ess報警任務全新升級

系統升級

摘要: AutoScaling(彈性伸縮) 報警任務迎來全新升級,本次升級從監控範圍,監控方式,監控響應速度等三個方面做出了全方位的優化,升級後的 AutoScaling 報警任務將您提供一種更全面,更可靠的利用報警任務動態管理 AutoScaling 伸縮組的方式。

AutoScaling(彈性伸縮) 報警任務迎來全新升級,本次升級從監控範圍,監控方式,監控響應速度等三個方面做出了全方位的優化,升級後的 AutoScaling 報警任務將您提供一種更全面,更可靠的利用報警任務動態管理 AutoScaling 伸縮組的方式。

本次的升級內容主要包括:

  1. 增加了對系統磁盤,網卡,TCP連接數等監控指標的報警任務支持。

  2. 報警任務最小統計周期升級到 1分鐘,提供更靈敏的監控報警。

  3. 增加自定義監控,為用戶自有監控系統接入 AutoScaling 報警任務提供標準化方式。

AutoScaling 報警任務

AutoScaling 報警任務是 AutoScaling 與 雲監控服務(CMS) 深度合作,提供的一種動態管理伸縮組的方式,類似於 AutoScaling 定時任務,AutoScaling 報警任務通過觸發您指定的伸縮規則來執行伸縮活動,達到調整伸縮組內實例個數的目的。

定時任務可以在您指定的時間執行您指定的伸縮規則,當業務場景在時間上可預料時,能夠提前做出響應,但是,在面對突發或者時間上不可預料的業務場景時,定時任務就顯得捉襟見肘,此時,就需要報警任務來提供更靈活的觸發伸縮規則的方式,在業務高峰期增加伸縮組內實例數量來緩解業務壓力,在業務低谷時釋放伸縮組內實例,減小生產成本。

報警任務通過監控特定的監控指標,對數據指標進行實時的統計,當統計值滿足您指定的報警條件時,觸發報警,執行您指定的伸縮規則。使用報警任務,您可以實時的根據業務的變化來不斷調整伸縮組內的實例數量,保證您監控的指標維持在您期望的範圍內。

AutoScaling 系統監控報警任務

AutoScaling 系統監控報警任務的監控指標是雲監控為用戶采集的 ECS 實例的相關數據指標,比如CPU,負載等。用戶在 AutoScaling 中設置的系統監控的報警任務是以伸縮組作為監控粒度的,即以伸縮組內的所有實例的監控指標的統計平均值作為伸縮組的指標值,當伸縮組內實例數量發生變化時,監控指標也會同時進行更新。

支持的監控指標

AutoScaling 系統監控報警任務目前支持的監控項,其中紅色字體代表本次升級新增支持的監控項:

監控項單位
CPU%
內存%
系統平均負載
內網出流量KB/min
內網入流量KB/min
外網出流量KB/min
外網入流量KB/min
系統盤寫bpsByte/s
系統盤讀bpsByte/s
系統盤寫iops個/s
系統盤讀iops個/s
外網網卡發包數(經典網絡)個/s
外網網卡收包數(經典網絡)個/s
內網網卡發包數個/s
內網網卡收包數個/s
TCP總連接數
TCP已建立連接數

註意事項

  1. AutoScaling 伸縮組在同一時刻只能執行一個伸縮活動,當伸縮組內存在正在執行的伸縮活動是,由報警任務觸發伸縮規則產生的伸縮活動將被拒絕。

  2. AutoScaling 報警任務在觸發伸縮規則時受伸縮規則冷卻時間影響,伸縮規則在冷卻時間內時,將拒絕執行伸縮規則。伸縮組內新增加的 ECS 實例從加入伸縮組到完成系統啟動配置,部署用戶業務,獲取到監控數據需要一定的時間(通常需要幾分鐘),因此您應該根據具體的業務場景,設置合適的冷卻時間,防止在新增實例的監控數據缺失的這段時間中,重復觸發伸縮規則。

  3. AutoScaling 報警任務,默認設置了一分鐘的沈默時間,即觸發報警之後,一分鐘內不會再次觸發伸縮規則。

  4. 部分系統監控項(內存,負載,網卡發包數,TCP連接數)指標的采集需要為您安裝雲監控客戶端。默認情況下,當您針對需要雲監控客戶端采集的監控項設置報警任務時,將為報警任務關聯的伸縮組內的所有實例安裝雲監控客戶端,同時,將為您在雲監控控制臺開啟 新購ECS自動安裝雲監控,為您所有新購的 ECS 實例安裝雲監控客戶端。

AutoScaling 自定義監控項報警任務

AutoScaling 自定義監控項報警任務的監控對象為用戶自主上報到雲監控中的監控指標。在一些場景下,系統監控項可能不包含您所需要的監控指標,您可能擁有自己的一套監控系統,並且關心的是與您特定業務相關的某些指標,自定義監控報警任務,為您自有的監控系統,或者與業務相關的自有監控指標提供了設置報警任務的接入點。

AutoScaling 自定義監控報警任務是針對阿裏雲雲監控服務的自定義監控項設置報警的,用戶在使用 AutoScaling 自定義監控報警任務之前需要首先向雲監控上報自定義監控數據,即自定義監控項。雲監控自定義監控是提供給用戶自由定義監控項及報警規則的一項服務,通過此服務,用戶可以針對自己關心的業務指標進行監控,將采集到監控數據上報至雲監控,由雲監控來進行數據的處理,並可以對其設置報警規則。

上報監控數據到雲監控

雲監控的自定義監控服務為您提供了上報監控數據的方式,您可以將自己采集到的時序數據上報到雲監控,這樣的數據稱作時間序列。雲監控提供了OpenAPI、Java SDK 和阿裏雲命令行工具(CLI) 三種方式上報數據,這裏我們將主要關註如何使用Java SDK的方式上報監控數據。更多詳細的信息您可以查看文檔 上報監控數據 。

使用Java sdk之前您需要首先在項目中引入相應的jar包,如果您使用maven管理項目,您只需要在項目中加入以下依賴:

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>3.2.6</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>aliyun-cms</artifactId>
            <version>0.2.4</version>
        </dependency>

您可以按照如下的方式向雲監控上報自定義監控項:

static String endPoint     = "https://metrichub-cms-cn-hangzhou.aliyuncs.com";
CMSClient cmsClient = new CMSClient(endPoint, accAutoScalingKey, accAutoScalingSecret);
CustomMetricUploadRequest request = CustomMetricUploadRequest.builder()
                    .append(CustomMetric.builder()
                    .setMetricName("myCustomMetric")//自定義指標名
                    .setGroupId(54504L)//設置分組id
                    .setTime(new Date())//時間
                    .setType(CustomMetric.TYPE_VALUE)//類型為原始值,
                    .appendValue(MetricAttribute.VALUE, number)//原始值,key只能為這個
                    .appendDimension("key1", "value1")//添加維度
                    .appendDimension("key2","value2")
                    .build())
                 .build();
            CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);//上報

在上述的代碼片段中,我們上報了一個數據點到雲監控。上報時,必須指定groupId參數,即雲監控應用分組id,該分組id可以是您在雲監控中已創建的應用分組,也可以是一個不存在的應用分組。您可以在 雲監控應用分組 創建和查看應用應用分組信息。您上報的自定義監控項(時間序列),可以在雲監控控制的 自定義監控 中查看。

我們建議您向一個 雲監控中已經存在的應用分組中推送自定義監控數據,雲監控的應用分組是針對多種雲產品的邏輯分組,向一個已存在的應用分組推送自定義監控數據將使您在需要使用雲監控等相關功能時保留擴展的能力。當然,您也可以完全不必理會應用分組的概念,選擇向任意一個分組id推送數據。

您上報到雲監控的監控數據,雲監控會自動幫您進行聚合,當然,當您需要推送的數據量太大時,您也可以選擇在本地聚合之後再推送到雲監控。詳細信息可以參考 上報監控數據 。

需要註意,雲監控對用戶上報監控數據設置了以下限制:

  1. 單雲賬號QPS限制為100。

  2. 單次最多上報100條數據,body最大為256KB。

  3. “metricName”字段只支持字母、數字、下劃線。需要以字母開頭,非字母開頭會替換為大寫“A”,非法字符替換為“_”。

  4. “dimensions”字段不支持“=”、“&”、“,” ,非法字符會被替換為“_”。

  5. metricName 和dimensions的Key-value 最大均為64字節,超過64字節會被截斷。

  6. 其他限制請關註計量計費說明。

最佳實踐

在本文的最佳實踐中將具體講解 如何在 AutoScaling 控制臺創建,查看,以及修改一條報警任務。

創建系統監控項報警任務

首先進入 AutoScaling控制臺,選中報警任務側邊欄,點擊創建報警任務。

技術分享圖片

技術分享圖片

在彈出的創建報警任務對話框中,我們選中監控類型為 系統監控,設置任務名稱,描述等基本信息,然後選擇監控資源,即報警任務監控的伸縮組,選擇監控項為cpu(cpu使用率),統計周期選擇1分鐘,表示將對每1分鐘的監控數據進行統計檢查,判斷是否滿足報警條件。統計辦法我們選擇了 平均值>=50%,重復3次,這表示,當cpu的使用了在1分鐘平均值超過閾值50%,並且連續3次滿足統計辦法時,將發生報警。報警觸發規則為伸縮規則add1,表明在發生報警時,將執行報警規則add1,為伸縮組增加1臺機器。

創建自定義監控項報警任務

創建自定義監控項報警任務的過程和創建系統監控類似,唯一的不同在於,系統監控報警任務的監控項是由雲監控為用戶采集,而自定義監控報警任務的監控項則需要用戶自己上報至雲監控。

在創建自定義監控類型的報警任務時,首先需要存在已上報的自定義監控項,即時間序列。然後才能針對該時間序列設置報警規則。

技術分享圖片

在上圖創建自定義報警任務之前,已經向雲監控推送了一條自定義監控數據流(時間序列)。該時間序列所屬的應用分組為54504,監控項名稱為testMetric,維度信息為 age=10。

查看監控項詳情

在成功的創建完報警任務之後,我們可以在報警任務列表看到我們剛剛創建的報警任務。

技術分享圖片

切換到自定義監控列表,查看剛剛創建的自定義報警任務。

技術分享圖片

點擊報警任務的名稱,將跳轉到詳情頁,在詳情頁您將看到報警任務對應監控項的歷史數據。

技術分享圖片

技術分享圖片

修改報警任務

您可以在報警任務的列表頁修改報警任務,也可以進入報警任務的詳情頁修改報警規則。

技術分享圖片

技術分享圖片

修改報警任務分為兩個部分,一個是修改報警任務的基本信息,另外一個是修改報警規則的觸發規則。

修改基本信息包括修改任務名稱,監控項,統計周期,統計辦法,重復次數等,我們不建議您修改報警任務的監控項,因為,修改監控項意味著監控不同的指標,此時,新建一條針對新指標的報警任務是更合適的方法。

寫在最後

AutoScaling 報警任務為您提供了一種通過監控特定監控指標來動態調整伸縮組內實例數量的方法,讓您能夠根據業務的變化實時的執行指定的伸縮規則,調整伸縮組內的實例數量。

本次的 AutoScaling 報警任務的升級,擴展了原有的監控指標,並在原有監控項的基礎上,支持用戶接入自定義的監控項,提供定制化的報警任務,大大增強了 AutoScaling 報警任務的可用性和實用性,滿足用戶具體的,多樣化的需求。

原文鏈接


Ess報警任務全新升級