當CloudMonitorWebhook現有的警示通知渠道(DingTalk、企業微信、飛書和Slack),以及警示投遞渠道(Auto Scaling、Log Service)和輕量訊息佇列(原 MNS)不能滿足您的需求時,可以通過Function Compute編寫代碼來實現更為廣泛的需求。
前提條件
請確保您已開通Function Compute服務。具體操作,請參見開通Function Compute服務。
如果您希望CloudMonitor通知渠道以外的工具也能收到警示通知,請提前準備好他們的Webhook地址。
應用情境
通過Function Compute對警示通知內容的格式進行處理,來實現CloudMonitor通知渠道以外的工具接收警示通知。
通過Function Compute對警示通知的內容進行處理,來實現CloudMonitor警示通知內容的個人化。
步驟一:在Function Compute中部署代碼函數
建立服務。
輸入服務名稱,其他參數均使用預設值。具體操作,請參見建立服務。
建立函數。
在基本設定地區,輸入函數名稱,請求處理常式類型選擇處理事件請求,其他參數均使用預設值。具體操作,請參見建立函數。
本文以運行環境為Java 8為例進行介紹。
說明函數進階配置地區的請求處理常式(函數入口)必須與函數代碼對應,例如:函數預設的請求處理常式為example.App::handleRequest,其中example標識為包名,App標識為類名,handleRequest標識為類方法。其他語言要求,請參見Function Compute運行時的事件請求處理常式(Event Handler)。
部署函數代碼。
在目標函數的函數代碼頁簽,先單擊右上方的上傳代碼,然後選擇上傳JAR包。
說明Java是編譯型語言,不支援線上查看編輯代碼,需要您先在本地完成開發後,再通過OSS或JAR包上傳。在Java環境編輯部署程式碼封裝,請參見編譯部署程式碼封裝。
函數代碼中JAR包的樣本如下。表示CloudMonitor的警示通知數據先通過
inputStream傳給函數,然後您可以修改資料格式,再將其發送到不同的Webhook地址進行其他商務邏輯處理。該程式碼範例實現了StreamRequestHandler介面,僅將警示通知數據列印出來。package example; import com.aliyun.fc.runtime.Context; import com.aliyun.fc.runtime.FunctionInitializer; import com.aliyun.fc.runtime.StreamRequestHandler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Hello world! */ public class App implements StreamRequestHandler, FunctionInitializer { public void initialize(Context context) throws IOException { //TODO } @Override public void handleRequest( InputStream inputStream, OutputStream outputStream, Context context) throws IOException { int n; StringBuilder sb = new StringBuilder(); while ((n = inputStream.read()) != -1) { sb.append((char) n); } System.out.println("alert param"); System.out.println(sb.toString()); } }說明代碼開發可以參考以下文檔:
多語言代碼開發,請參見代碼開發概述。
程式碼範例的事件函數(從Function Compute程式碼範例庫下載工程,再進行開發比較快捷),請參見事件函數。
Java開發具體說明,請參見事件請求處理常式(Event Handler)。
在通過ZIP、JAR包或WAR包上傳代碼對話方塊,先上傳程式碼封裝,然後單擊儲存並部署。
測試函數代碼。
在目標函數的函數代碼頁簽,單擊測試函數頁簽。
在測試函數頁簽,先單擊配置測試事件,然後將以下CloudMonitor警示通知數據拷貝到建立新測試事件中,再單擊測試函數。
執行成功後,您可以查看返回結果、日誌輸出及業務驗證結果。
{ "product":"KVstore", "metricName":"ShardingCpuUsage", "instance":{ "instanceId":"r-bp1wt5u2ov6e5w****", "resource":"r-bp1wt5u2ov6e5w****", "instanceName":"online", "vpc":{ "vswitchInstanceId":"vsw-bp1rpjm10in1wgxd4****", "vpcInstanceId":"vpc-bp1n5sng5dntm3daf****" }, "aliUid":173651113438****, "category":"KVSTORE", "region":{ "regionId":"cn-hangzhou", "availabilityZone":"" }, "networkType":"VPC", "dimension":{ }, "desc":"", "tags":[ { "value":"1", "key":"__level__" } ] }, "Average":0.483, "userId":"173651113438****", "curLevel":"INFO", "Maximum":0.483, "__ts__":168612****, "instanceId":"r-bp1wt5u2ov6e5w****", "escalation":{ "comparisonOperator":"GreaterThanOrEqualToThreshold", "expression":"$Average >= 0.1", "level":4, "statistics":"Average", "tag":"INFO", "threshold":"0.1", "times":1 }, "ruleName":"test-tair", "nodeId":"r-bp1wt5u2ov6e5w****-db-1", "timestamp":1686123300000 }
步驟二:在CloudMonitor中設定警示
步驟三:查看警示觸發結果
當已設定Function Compute的警示規則發生警示時,會觸發調用目標函數。您可以從Function Compute控制台查看目標函數的調用日誌,並判斷調用日誌是否符合預期。
在左側導覽列,單擊函數,然後選擇頂部功能表列地區。
在函數列表頁面,單擊目標函數名稱。
在目標函數的管理頁,單擊下方日誌頁簽,再單擊調用請求頁簽,然後選擇目標時間範圍。
說明當您初次查看函數的調用日誌時,需要單擊一鍵啟用,啟用日誌功能。
單擊目標調用日誌對應操作列的請求日誌。
您可以查看日誌詳情。