本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控 Lambda SnapStart
您可 Lambda 使用 Amazon CloudWatch、AWS X-Ray 和 使用遙測 API 即時存取延伸功能的遙測資料 來監控 Lambda SnapStart 函數。
注意
AWS_LAMBDA_LOG_GROUP_NAME
和 AWS_LAMBDA_LOG_STREAM_NAME
環境變數無法在 Lambda SnapStart 函數中使用。
了解 SnapStart 的記錄和計費行為
SnapStart 函數的 CloudWatch 日誌串流格式有一些差異:
-
初始化日誌:建立新的執行環境時,
REPORT
不會含有Init Duration
欄位。這是因為 Lambda 會在您建立版本時初始化 SnapStart 函數,而非在函數調用期間。若為 SnapStart 函數,Init Duration
欄位位於INIT_REPORT
記錄中。此記錄會顯示 初始化階段 的持續時間詳細資訊,包括任何beforeCheckpoint
執行階段掛鉤的持續時間。 -
調用日誌:建立新的執行環境時,
REPORT
會含有Restore Duration
和Billed Restore Duration
欄位:-
Restore Duration
:Lambda 還原快照、載入執行時間 (JVM) 和執行任何afterRestore
執行時間掛鉤所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在Restore Duration
中報告。 -
Billed Restore Duration
:Lambda 載入執行時間 (JVM) 和執行任何afterRestore
掛鉤所需的時間。
-
注意
如同所有 Lambda 函數一樣,持續時間費用適用於函數處理常式中執行的程式碼。對於 SnapStart 函數,持續時間費用也適用於在處理常式之外宣告的初始化程式碼、執行時期進行載入所花的時間以及在執行時期勾點中執行的任何程式碼。
冷啟動持續時間是 Restore Duration
+ Duration
的總和。
下列 Lambda Insights 查詢範例傳回了 SnapStart 函數的延遲百分位數。如需 Lambda Insights 查詢的詳細資訊,請參閱:使用查詢故障排除函式的範例工作流程。
filter @type = "REPORT" | parse @log /\d+:\/aws\/lambda\/(?<function>.*)/ | parse @message /Restore Duration: (?<restoreDuration>.*?) ms/ | stats count(*) as invocations, pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 50) as p50, pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 90) as p90, pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 99) as p99, pct(@duration+coalesce(@initDuration,0)+coalesce(restoreDuration,0), 99.9) as p99.9 group by function, (ispresent(@initDuration) or ispresent(restoreDuration)) as coldstart | sort by coldstart desc
適用於 SnapStart 的 X-Ray 作用中追蹤
您可以使用 X-Ray 來追蹤 Lambda SnapStart 函數的請求。SnapStart 函數的 X-Ray 子區段有一些差異:
-
SnapStart 函數沒有
Initialization
子區段。 -
Restore
子區段會顯示 Lambda 還原快照、載入執行期 (JVM) 和執行任何afterRestore
執行期勾點所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在Restore
子區段中報告。您不需要為在 MicroVM 外還原快照所花費的時間付費。
SnapStart 的遙測 API 事件
Lambda 會將下列 SnapStart 事件傳送至 遙測 API:
-
platform.restoreStart - 顯示 Restore 階段開始的時間。
-
platform.restoreRuntimeDone - 顯示
Restore
階段是否成功。執行階段傳送restore/next
執行階段 API 請求時,Lambda 會產生此訊息。可能的狀態有三種:成功、失敗和逾時。 -
platform.restoreReport - 顯示
Restore
階段持續的時間長度,以及您須為此階段支付的費用。
Amazon API Gateway 和函數 URL 指標
如果您是使用 API Gateway 建立 Web API,便可以使用 IntegrationLatency 指標來測量端對端延遲 (API Gateway 將請求轉送至後端與收到後端回應之間的時間)。
如果您使用的是 Lambda 函數 URL,則可以使用 UrlRequestLatency 指標來測量端對端延遲 (函數 URL 收到請求與函數 URL 傳回回應之間的時間)。