本文以轉賬應用的發布、變更及監控為例,介紹運維管理模塊中的各個組件的功能。
前提條件
步驟一:創建轉賬應用
在 應用管理 中創建名為 transfer money 的應用。技術棧選擇 SOFABoot 2.0 版本。具體步驟參見 創建應用。
步驟二:創建應用服務
在 容器應用服務 中創建以下 2 個應用服務,參見 創建應用服務。
創建轉賬服務端的應用服務,名為 aks-transfermoney-server。
涉及到的配置信息如下:
基本信息和 Pod 模版配置:
CPU:200m Core - 500m Core,Memory:512 MB - 1 GB;
image:
使用示例鏡像 aks-transfermoney-server,鏡像地址:
registry-vpc.cn-shanghai.aliyuncs.com/sofa-samples/aks-transfermoney-server:20190726095608708-master.40215e87
。環境變量配置:
APPSVC_VERSION = V1
,ANTCLOUD_SOFA_PROFILE = prod
。健康檢查配置:Readiness Probe 配置檢查方法為 HTTP GET 方法,訪問路徑為
/health/readiness
,訪問端口8080
。其余項按照輸入框提示配置。日志服務配置:選擇已有或新建日志庫,日志路徑
/home/admin/release/run/logs/aks-transfermoney-server/digest/*.log
。業務實時監控:監控目錄
/home/admin/release/run/logs
、/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。
彈性配置:Server 開啟副本彈性擴縮容功能,最小副本數 1,最大副本數 4。根據 CPU 使用率 50% 進行彈性擴縮容。即在副本數允許的情況下,確保 CPU 使用率在 50% (實際使用 / 請求資源量) 水位之下。可添加多個指標,如匹配內存共同使用,彈性規則 replica count 取最大期望值進行下發操作。
訪問配置:Server 使用 ClusterIP Service,允許集群內訪問。端口映射設置為 TCP 協議,訪問端口 80,容器端口 8341。需記錄下這個 Service Name,需要以環境變量形式配置到客戶端應用。
發布配置:都保持默認設置。
說明該應用服務配置編輯完成提交后,進行版本備注,方便區分版本。其他設置參見 創建應用服務。
創建轉賬客戶端的應用服務,名稱為 aks-transfermoney-client。
涉及到的配置信息如下:
基本信息和 Pod 模版配置:
CPU:200m Core - 500m Core,Memory:512 MB - 1 GB;
image:使用示例鏡像 aks-transfermoney-client,鏡像地址:
registry-vpc.cn-shanghai.aliyuncs.com/sofa-samples/aks-transfermoney-client:20190815134744553-master.5ea6278b
。環境變量配置:變量名稱為
SERVER_TM_ADDRESS
,值為 Server 端 Service Name。業務實時監控:監控目錄
/home/admin/release/run/logs
。
彈性配置:Client 使用固定副本數 1。每個 client 能夠壓測并發上限為 1000。
訪問配置:Client 綁定公網 SLB Service,前端端口 80 ,后端端口 8341。其余為默認值。
發布配置:保持默認設置。
該應用服務配置編輯完成提交后,進行版本備注,方便區分版本。其他設置參見 創建應用服務。
步驟三:創建發布單發布應用
選取兩個應用服務并進行串行發布。在高級配置中設置 aks-transfermoney-client 依賴于 aks-transfermoney-server。
步驟四:客戶端觸發批量操作
在 client 應用服務詳情頁面的 服務 頁簽中獲取到剛剛創建的 SLB Service 公網 IP 地址。
在本地執行以下 curl 命令,以 1000 并發啟動客戶端進行批量調用服務。
說明若客戶端實例有多個,則多調用幾次, SLB 默認是輪詢配置。本示例為 1 個客戶端實例。
# 啟動,最高并發1000 # 轉賬client因高并發 (max 1000)導致實例宕機,系統會自動重啟容器應用 curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1000&minamount=100&maxamount=100" # 統計 curl http://$Money_Client_SERVICE_IP/webapi/transferclient/gauges # 停止 curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"
步驟五:創建業務監控大盤
在 實時監控 的 自定義監控 頁面,創建如下各種維度的監控項:
說明監控項配置完成后,約 2 至 3 分鐘后可以查看監控數據。單擊左側導航欄 自定義監控,然后單擊您新增的監控項,可查看統計值。具體步驟請參見 創建自定義監控。
服務端響應請求的容器所在 Cell:
說明具體操作步驟請參見 秒級統計_多 Key。
監控類型:秒級統計/多 Key。
監控配置名:輸入監控項名稱,例如:transferserver_cell。
所屬應用:選擇本教程中創建的 Server 應用服務。
采集日志文件:選擇 Server 應用服務中指定的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分組:指定分組列為 Cell。
統計方式: 求值方式為求行數。
應用版本:
說明具體操作步驟請參見 秒級統計_多 Key。
監控類型:秒級統計/多 Key。
監控配置名:輸入監控項名稱,例如:transferserver_Version。
所屬應用:選擇本教程中創建的 Server 應用服務。
采集日志文件:選擇 Server 應用服務中指定的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分組:指定分組列為 Version。
統計方式: 求值方式為求行數。
客戶端記錄的 HTTP 訪問結果碼:
說明具體操作步驟請參見 秒級統計_多 Key。
監控類型:秒級統計/多 Key。
監控配置名:輸入監控項名稱,例如:transferclient_httpstatus。
所屬應用:選擇本教程中創建的 client 應用服務。
采集日志文件:選擇 client 應用服務的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。列值分組:指定分組列為 HttpStatus。
統計方式: 求值方式為求行數。
轉出賬戶名稱按分鐘的 Top 統計:
說明具體操作步驟請參見 分鐘統計 Top。
監控類型:分鐘統計 Top。
監控配置名:輸入監控項名稱,例如:transfer_top_From。
所屬應用:選擇本教程中創建的 Server 應用服務。
采集日志文件:選擇 Server 應用服務中指定的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分組:指定分組列為 From。
統計方式: 最大排名數為 10,求值方式為求行數。
轉入賬戶名稱按分鐘的 Top 統計:
說明具體操作步驟請參見 分鐘統計 Top。
監控類型:分鐘統計 Top。
監控配置名:輸入監控項名稱,例如:transfer_top_To。
所屬應用:選擇本教程中創建的 Server 應用服務。
采集日志文件:選擇 Server 應用服務中指定的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分組:指定分組列為 To。
統計方式: 最大排名數為 10,求值方式為求行數。
分鐘級客戶端調用統計:
說明具體操作步驟請參見 分鐘統計_多 Key。
監控類型:分鐘統計/多 Key。
監控配置名:輸入監控項名稱,例如:transferclient_status_minutes。
所屬應用:選擇本教程中創建的 client 應用服務。
采集日志文件:選擇 client 應用服務的日志路徑。例如:
/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。列值分組:指定分組列為 status。
求值方式:對列值求平均。
求平均列:latency。
在 自定義監控 頁面,新建 TransferMoney 大盤,配置如下:
步驟六:監控告警
針對某個監控項或者所有監控項進行報警規則設置和報警訂閱。
例如:以下配置對分鐘級客戶端調用統計 (transferclient_status_minutes)監控項,配置報警規則,即一旦延遲 (所有 HTTP code)或錯誤(非 HTTP 200)在 1 分鐘內 latency 時延指標到達一定程度后就報警。
步驟七:驗證應用服務彈性能力
在本地執行以下 curl 命令,以 1500 并發啟動客戶端進行批量調用服務。
curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1500&minamount=100&maxamount=100"
查看 Server 應用服務的實例數擴容情況。
之前對 Server 應用服務的彈性配置為 1 ~ 4。client 端壓力啟動后,Server 實例數很快會達到最大實例數 4。實時監控大盤亦開始展示相關數據趨勢。上限并發到一定程度會引發 OOM(內存不足)。
在 Server 應用服務詳情頁,單擊 快捷操作 > 擴縮容,擴容到 10 個實例,單擊 提交。提交后會自動生成發布單,單擊 整體發布 進行發布。
可以看到此次發布單因為只進行彈性配置變更,會很快生效。
在本地執行以下 curl 命令,停止 client 端調用。
curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"
查看 Server 應用服務的實例數縮容情況。
Server 實例數很快會跌回最小實例數 1。實時監控大盤亦開始展示相關數據趨勢。