Performance Testing Service的Access Log壓測功能,僅依賴網關日誌,對服務端零侵入,通過PTS介面的簡單配置,可以快速實現真實的網關流量回放。本文介紹如何使用Access Log壓測功能。
方案概覽
Access Log壓測通過簡單的配置即可實現網關真實流量回放,並且將壓測請求參數化,自動建立壓測情境,以及通過簡單的登入介面配置即可解決登入態到期的問題。其配置主要分為四個模組:
配置日誌生產者:您的訪問日誌可能來自於負載平衡ALB、CLB、MSE網關或者Elastic Compute Service中自建的Web服務,首先需要將訪問日誌投遞到Log ServiceSLS中。關於日誌投遞可以參考配置ALB訪問日誌,配置CLB訪問日誌,MSE開啟網關日誌投遞,使用Nginx配置模式採集文本日誌。
配置Log Service:用於接收日誌生產者投遞的日誌。
配置Access Log壓測:分析Log Service中儲存的日誌,擷取待壓介面並構造壓測情境。
編輯PTS情境:待Access Log壓測情境構造完成後,將跳轉到PTS情境編輯頁面,您可在此頁面做進一步配置,也可以直接調試情境並啟動壓測。
日誌規範
URL欄位索引和值存在,且索引名在["request_uri", "path", "request_url", "url", "uri", "requestURI", "requestURL"]中。如果URL的路徑和參數是分開記錄的,參數欄位值存在,且索引名在["method", "http_method", "request_method"]中。
如需回放POST請求,必須滿足以下要求:
HTTP POST body欄位索引和值存在,且索引名在["body", "http_body", "http_request_body", "request_body"]中。當前僅支援
application/x-www-form-urlencoded,text/plain,application/json格式的body,不支援位元據body。Content-Type欄位索引和值存在,且索引名在["content_type", "contentType"]中,否則PTS將自動推斷Content-Type。若您使用MSE網關,可參考將完整的請求應答資訊添加到訪問日誌,將POST請求的body列印到網關日誌中。如此列印的POST請求,PTS會直接支援回放。
如使用簡單模式,還需滿足以下規範,不符合規範的日誌會被忽略:
網域名稱欄位索引和值存在,且索引名在["host", "http_host", "authority"]中。
HTTP協議欄位索引和值存在,且索引名在["http_protocol", "protocol", "scheme", "http_scheme"]中,且值為
http或https,否則將預設使用http。
前提條件
已開通Log Service,已建立Project和標準型Logstore,並完成索引配置和日誌採集。具體操作,請參見建立專案Project,建立Logstore,建立索引。
步驟一:建立Access Log壓測情境
步驟二:選擇壓測模式
在建立Access Log 壓測情境頁面,開啟簡單回放模式開關並單擊選擇目標介面即可進入簡單模式;關閉簡單回放模式開關並單擊選擇目標介面即可進入標準模式。

簡單模式直接回放日誌記錄的流量,不解析請求結構,不限制不同的網域名稱和介面數量,但只能控制整個情境的RPS,並且不關心登入態。
標準模式能配置登入態,能分析各介面的請求數和MaxQPS分布,並能精確控制每個介面的壓力值,但限制不同的網域名稱和介面數量。
您可根據具體需求選擇簡單模式或標準模式做日誌回放,對比如下:
壓測模式 | 說明 |
簡單模式 |
|
標準模式 |
|
簡單模式
配置回放參數
簡單模式分析結果展示所選時段內有效請求數,您可以進行以下參數的配置:
是否回放POST請求:開啟開關後PTS將為您回放POST請求,但如果您的Request Body並未打到Access Log中, 回放POST請求將不帶Body, 可能會出錯,謹慎開啟。
是否重複回放:若開啟重複回放,回放到日誌末尾時將會從頭迴圈回放請求。 若關閉重複回放,回放到末尾時將停止發壓,但未達到指定時間長度回放不會自動停止,請在請求發送完後手動停止回放避免更多VUM消耗。
回放時間長度(分鐘):流量回放的持續時間長度,預設十分鐘。
每秒請求數:配置流量回放的速率,PTS會以該速率回放您的Access Log流量,該數值會以平均原則分配到每個抽象介面上。

構造壓測情境
單擊構造壓測情境,PTS會總結回放配置的結論,單擊確認,將跳轉到PTS情境編輯頁面。您可在此頁面進一步編輯產生的情境,也可以跳過 配置PTS情境直接啟動壓測。
標準模式
如果日誌中包含請求網域名稱,且欄位名在["host", "http_host", "authority"]中,PTS將會自動補全host,同時你也可以自行修改。當前僅支援單host, 所有介面共用這個host。如果您需要回放多個網域名稱,可以依次選擇介面去建立情境,然後在壓測情境中做進一步修改即可。
選擇目標介面
PTS 展示所選的時間段從 access log 獲知的頻數和 QPS 維度下 TOP10 介面,可單擊介面旁的灰色圓圈選擇待壓介面。已選的介面會展示在已選目標介面地區。

配置壓測參數
如果待壓介面無需登入,則開啟目標介面無需登入開關;如果待壓介面需要登入態資訊,則需要配置登入介面資訊,配置方法如下所示:
a. 從介面選擇:如果查詢出的介面中包括登入介面,可以選擇此項。PTS會自動將該介面作為登入介面,使用日誌中的參數,匯出Cookie登入態使用,無需您手動設定。

b. 配置登入介面:如果展示出的介面沒有登入的介面,您也可以手工配置。輸入登入介面地址,如http://example.com/login。配置登入介面的body參數,如username、password。可以用${}引用參數,用到的參數請點擊配置參數檔案,更多資訊,請參見資料來源。

確認配置無誤後,單擊構造壓測情境,將跳轉至PTS情境編輯頁面。您可在此頁面進一步編輯產生的情境,也可以跳過配置PTS情境直接啟動壓測。
(可選)步驟三: 配置PTS情境
單擊資料匯出,可編輯使用的Cookie數。如需要使用其他登入態比如token,單擊登入介面後,設定出參,並在資料匯出節點設定匯出,詳見Use a data export instruction。

單擊任意介面,可為介面添加Header。

步驟四: 啟動壓測
分析壓測結果
壓測結束後,系統會自動擷取壓測資料,例如壓測情境指標、業務詳情資料、監控詳情資料和API採樣日誌等,產生壓測報告。更多資訊,請參見查看PTS壓測報告。

