

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 監控 Lambda SnapStart
<a name="snapstart-monitoring"></a>

您可 Lambda 使用 Amazon CloudWatch、AWS X-Ray 和 [使用遙測 API 即時存取延伸功能的遙測資料](telemetry-api.md) 來監控 Lambda SnapStart 函數。

**注意**  
`AWS_LAMBDA_LOG_GROUP_NAME` 和 `AWS_LAMBDA_LOG_STREAM_NAME` [環境變數](configuration-envvars.md#configuration-envvars-runtime)無法在 Lambda SnapStart 函數中使用。

## 了解 SnapStart 的記錄和計費行為
<a name="snapstart-cloudwatch"></a>

SnapStart 函數的 [CloudWatch 日誌串流](monitoring-cloudwatchlogs.md)格式有一些差異：
+ **初始化日誌**：建立新的執行環境時，`REPORT` 不會含有 `Init Duration` 欄位。這是因為 Lambda 會在您建立版本時初始化 SnapStart 函數，而非在函數調用期間。若為 SnapStart 函數，`Init Duration` 欄位位於 `INIT_REPORT` 記錄中。此記錄會顯示 [初始化階段](lambda-runtime-environment.md#runtimes-lifecycle-ib) 的持續時間詳細資訊，包括任何 `beforeCheckpoint` [執行階段掛鉤](snapstart-runtime-hooks.md)的持續時間。
+ **調用日誌**：建立新的執行環境時，`REPORT` 會含有 `Restore Duration` 和 `Billed Restore Duration` 欄位：
  + `Restore Duration`：Lambda 還原快照、載入執行時期和執行任何還原後[執行時期勾點](snapstart-runtime-hooks.md)所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在 `Restore Duration` 中報告。
  + `Billed Restore Duration`：Lambda 載入執行時期和執行任何還原後[執行時期勾點](snapstart-runtime-hooks.md)所需的時間。

**注意**  
如同所有 Lambda 函數一樣，持續時間費用適用於函數處理常式中執行的程式碼。對於 SnapStart 函數，持續時間費用也適用於在處理常式之外宣告的初始化程式碼、執行時期進行載入所花的時間以及在[執行時期勾點](snapstart-runtime-hooks.md)中執行的任何程式碼。

冷啟動持續時間是 `Restore Duration` \+ `Duration` 的總和。

下列 Lambda Insights 查詢範例傳回了 SnapStart 函數的延遲百分位數。如需 Lambda Insights 查詢的詳細資訊，請參閱：[使用查詢故障排除函式的範例工作流程](monitoring-insights.md#monitoring-insights-queries)。

```
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 作用中追蹤
<a name="snapstart-xray"></a>

您可以使用 [X-Ray](services-xray.md) 來追蹤 Lambda SnapStart 函數的請求。SnapStart 函數的 X-Ray 子區段有一些差異：
+ SnapStart 函數沒有 `Initialization` 子區段。
+ `Restore` 子區段會顯示 Lambda 還原快照、載入執行時期和執行任何還原後[執行時期勾點](snapstart-runtime-hooks.md)所需的時間。還原快照的程序可能包括在 MicroVM 以外的活動上花費的時間。此時間在 `Restore` 子區段中報告。您不需要為在 MicroVM 外還原快照所花費的時間付費。

## SnapStart 的遙測 API 事件
<a name="snapstart-telemetry"></a>

Lambda 會將下列 SnapStart 事件傳送至 [遙測 API](telemetry-api.md)：
+ [`platform.restoreStart`](telemetry-schema-reference.md#platform-restoreStart) - 顯示 [`Restore` 階段](lambda-runtime-environment.md#runtimes-lifecycle-restore)開始的時間。
+ [`platform.restoreRuntimeDone`](telemetry-schema-reference.md#platform-restoreRuntimeDone) - 顯示 `Restore` 階段是否成功。執行階段傳送 `restore/next` 執行階段 API 請求時，Lambda 會產生此訊息。可能的狀態有三種：成功、失敗和逾時。
+ [`platform.restoreReport`](telemetry-schema-reference.md#platform-restoreReport) - 顯示 `Restore` 階段持續的時間長度，以及您須為此階段支付的費用。

## Amazon API Gateway 和函數 URL 指標
<a name="snapstart-metrics"></a>

如果您是[使用 API Gateway](services-apigateway.md) 建立 Web API，便可以使用 [IntegrationLatency](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) 指標來測量端對端延遲 (API Gateway 將請求轉送至後端與收到後端回應之間的時間)。

如果您使用的是 [Lambda 函數 URL](urls-configuration.md)，則可以使用 [UrlRequestLatency](urls-monitoring.md) 指標來測量端對端延遲 (函數 URL 收到請求與函數 URL 傳回回應之間的時間)。