

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

# Lambda 函數的指標類型
<a name="monitoring-metrics-types"></a>

下一節描述 CloudWatch 主控台中可用的 Lambda 指標的類型。

**Topics**
+ [呼叫指標](#invocation-metrics)
+ [部署指標](#deployment-metrics)
+ [效能指標](#performance-metrics)
+ [並行指標](#concurrency-metrics)
+ [非同步調用指標](#async-invocation-metrics)
+ [事件來源映射指標](#event-source-mapping-metrics)

## 呼叫指標
<a name="invocation-metrics"></a>

調用指標是 Lambda 函數調用結果的二進制指標。檢視下列有 `Sum` 統計資料的指標。例如，若函數傳回錯誤，Lambda 會傳送具有值 1 的 `Errors` 指標。若要取得每分鐘發生的函數錯誤數目，請以一分鐘為其檢視 `Errors` 指標的 `Sum`。
+ `Invocations` – 您的函數程式碼被調用的次數，包含成功調用和造成函數錯誤的調用。如果呼叫請求受到調節，或導致呼叫錯誤，系統就不會記錄呼叫。`Invocations` 的值等於計費的請求數目。
+ `Errors` - 導致函數錯誤的呼叫數目。函數錯誤包含程式碼擲回的例外，以及 Lambda 執行時間擲回的例外。執行時間會針對如逾時和組態錯誤等問題傳回錯誤。若要計算錯誤率，將 `Errors` 的值除以 `Invocations` 的值。請注意，錯誤指標上的時間戳記會反映調用函數的時間，而不是錯誤發生的時間。
+ `DeadLetterErrors` - 如為[非同步調用](invocation-async.md)，則為 Lambda 嘗試傳送事件至無效字母佇列 (DLQ) 但失敗的次數。由於資源或大小限制設定不正確，可能發生無效字母錯誤。
+ `DestinationDeliveryFailures`：如為非同步調用和支援的 [事件來源映射](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html)，則為 Lambda 嘗試傳送事件至 [目的地](invocation-async-retain-records.md#invocation-async-destinations) 但失敗的次數。事件來源映射方面，Lambda 支援串流來源 (DynamoDB 和 Kinesis) 的目的地。傳遞錯誤可能因權限錯誤、資源設定不正確或大小限制而發生。如果您設定的目的地是不受支援的類型 (例如 Amazon SQS FIFO 佇列或 Amazon SNS FIFO 主題)，也可能發生此錯誤。
+ `Throttles` - 調節的調用請求次數。當所有函數執行個體正在處理請求且沒有並行可供擴展規模時，Lambda 會使用 `TooManyRequestsException` 錯誤拒絕其他請求。限流的請求和其他調用錯誤不會計為 `Invocations` 或 `Errors`。
**注意**  
使用 [Lambda 受管執行個體](lambda-managed-instances.md)時，Lambda 會提供精細的限流指標，以識別造成限流的特定限制條件。當執行環境發生調節時，會以 1 的值發出以下其中一個子指標，其餘三個則以 0 的值發出。`Throttles` 指標一律會與這些子指標一起發出。  
`CPUThrottles` – 由於執行環境上的 CPU 耗盡而調節的調用。
`MemoryThrottles` – 因執行環境記憶體耗盡而調節的叫用。
`DiskThrottles` – 因執行環境上的磁碟耗盡而調節的調用。
`ConcurrencyThrottles` – 達到執行環境並行限制時調節的呼叫。
+ `OversizedRecordCount`：針對 Amazon DocumentDB 事件來源，您的函數從變更串流接收到大小超過 6 MB 的事件數量。Lambda 會捨棄訊息並發出此指標。
+ `ProvisionedConcurrencyInvocations` - 使用[佈建並行](provisioned-concurrency.md)調用函數程式碼的次數。
+ `ProvisionedConcurrencySpilloverInvocations` - 當所有佈建並行都處於使用中狀態時，使用標準並行調用函數程式碼的次數。
+ `RecursiveInvocationsDropped` – Lambda 因為偵測到您的函數是無限遞迴迴圈的一部分而停止調用函數的次數。透過追蹤支援的 AWS SDKs 新增的中繼資料，遞迴迴圈偵測會監控在請求鏈中調用函數的次數。如果函數作為請求鏈的一部分被調用超過 16 次，則 Lambda 會放棄下一次調用。如果您停用遞迴迴圈偵測，則不會發出此指標。如需使用此功能的詳細資訊，請參閱「[使用 Lambda 遞迴迴圈偵測功能防止無限迴圈](invocation-recursion.md)」。

## 部署指標
<a name="deployment-metrics"></a>

部署指標提供有關 Lambda 函式部署事件及相關驗證流程的資訊。
+ `SignatureValidationErrors` – 當程式碼簽署組態政策設定為 `Warn` 時，程式碼套件部署發生簽署驗證失敗的次數。當有效期、不一致或撤銷狀態檢查失敗，但因 `Warn` 政策設定仍允許部署時，將發出此指標。如需有關程式碼簽署的詳細資訊，請參閱[使用程式碼簽署來驗證 Lambda 的程式碼完整性](configuration-codesigning.md)。

## 效能指標
<a name="performance-metrics"></a>

效能指標提供單一函數調用的效能詳細資料。例如，`Duration` 指標表示您的函式處理事件時以豪秒計算的時間。若要了解您的函數如何處理事件，請檢視這些有 `Average` 或 `Max` 統計資料的指標。
+ `Duration` - 您的函數程式碼處理一個事件時所花費的時間。調用的計費期間是 `Duration` 四捨五入到最接近毫秒的值。`Duration` 不包含冷啟動時間。
+ `PostRuntimeExtensionsDuration` - 在函數程式碼完成後，執行時間在執行程式碼進行擴展時所用的累計時間。
+ `IteratorAge`：針對 DynamoDB、Kinesis 和 Amazon DocumentDB 事件來源，則為事件中最後一筆記錄的留存期 (以毫秒為單位)。這個指標用來衡量串流接收記錄到事件來源映射將事件傳送至函數之間的時間。
+ `OffsetLag` – 若為 Apache Kafka 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 事件來源，則為寫入主題的最後一筆記錄與函數取用者群組處理的最後一筆記錄之間的偏移量差異。雖然 Kafka 主題會有多個分區，但這個指標可以在主題層級測量偏移延遲。

`Duration` 也支援百分位數 (`p`) 統計資料。使用百分位數排除偏差 `Average` 和 `Maximum` 統計資料的離群值。例如，`p95` 統計資料會顯示調用的最大持續時間為 95%，排除最慢的 5%。如需詳細資訊，請參閱和《Amazon CloudWatch 使用者指南》**中的[百分位數](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Percentiles)。

## 並行指標
<a name="concurrency-metrics"></a>

Lambda 會將並行指標報告為跨函數、版本、別名或 AWS 區域處理事件的執行個體數彙總計數。若要查看您與達到[並行限制](lambda-concurrency.md#concurrency-quotas)的接近程度，請使用 `Max` 統計資料檢視這些指標。
+ `ConcurrentExecutions` - 處理事件的函數執行個體數目。如果此數目達到區域的[並行執行配額](gettingstarted-limits.md#compute-and-storage)，或是函數的[保留並行](configuration-concurrency.md)上限，Lambda 就會限流額外的調用請求。
+ `ProvisionedConcurrentExecutions` - 使用[佈建並行](provisioned-concurrency.md)處理事件的函數執行個體數目。針對具有佈建並行之別名或版本的每次調用，Lambda 都會發出目前的計數。如果函式處於非作用中狀態或未收到請求，Lambda 不會發出此指標。
+ `ProvisionedConcurrencyUtilization` - 對於版本或別名，則為 `ProvisionedConcurrentExecutions` 的值除以設定的佈建並行總量。例如，如果您為函數設定 10 的佈建並行數，且您的 `ProvisionedConcurrentExecutions` 為 7，則您的 `ProvisionedConcurrencyUtilization` 為 0.7。

  由於此指標基於 `ProvisionedConcurrentExecutions`，如果函式處於非作用中狀態或未收到請求，Lambda 不會發出此指標。如果將 `ProvisionedConcurrencyUtilization` 用作 CloudWatch 警示的基礎，需注意此事項。
+ `UnreservedConcurrentExecutions` - 若為區域，則是沒有保留並行的函數所處理的事件數目。
+ `ClaimedAccountConcurrency` – 對於區域，無法用於隨需調用的並行數量。`ClaimedAccountConcurrency` 等於 `UnreservedConcurrentExecutions` 加上配置並行的數量 (亦即預留並行總數加上佈建並行總數)。如需詳細資訊，請參閱[使用 `ClaimedAccountConcurrency` 指標](monitoring-concurrency.md#claimed-account-concurrency)。

## 非同步調用指標
<a name="async-invocation-metrics"></a>

非同步調用指標提供有關來自事件來源和直接調用的非同步調用詳細資料。您可以設定閾值和警示，以便在發生某些變更時通知您。例如排入處理佇列的事件數目意外增加時 (`AsyncEventsReceived`)。或是某事件已等待處理很長一段時間時 (`AsyncEventAge`)。
+ `AsyncEventsReceived` – Lambda 成功排入處理佇列的事件數目。此指標可讓您深入了解 Lambda 函數接收的事件數量。監控此指標並設定閾值警示以檢查問題。例如，偵測傳送至 Lambda 的不必要事件數量，並快速診斷因不正確的觸發程序或函數組態所造成的問題。`AsyncEventsReceived` 和 `Invocations` 之間的不相符項目可能表示處理差異、捨棄的事件或潛在的待處理佇列。
+ `AsyncEventAge` – Lambda 成功將事件排入佇列到調用函數之間的時間。因調用失敗或限流而重試事件時，此指標的值會增加。監控此指標，並針對發生佇列累積時的不同統計資料設定閾值警示。若要對此指標的增加情形進行疑難排解，請查看 `Errors` 指標以識別函數錯誤，並查看 `Throttles` 指標以找出並行問題。
+ `AsyncEventsDropped` – 在未成功執行函數的情況下捨棄的事件數目。如果您有設定無效字母佇列 (DLQ) 或 `OnFailure` 目的地，則事件會在捨棄之前傳送至該處。有多種原因會導致事件遭捨棄。例如，事件可能超過事件存留期上限、用盡重試次數上限，或是預留並行可能設定為 0。若要對捨棄事件的原因進行疑難排解，請查看 `Errors` 指標以識別函數錯誤，並查看 `Throttles` 指標來找出並行問題。

## 事件來源映射指標
<a name="event-source-mapping-metrics"></a>

事件來源映射指標可讓您深入了解事件來源映射的處理行為。

目前，事件來源映射指標可用於 Amazon SQS、Kinesis、DynamoDB、Amazon MSK 和自我管理 Apache Kafka 事件來源。

對於具有指標組態的事件來源映射，您也可以立即從主控台 **Lambda** > **其他資源** > **事件來源映射**頁面的**監控**索引標籤中檢查所有 ESM 相關指標。

**若要啟用指標或事件來源映射 (主控台)**

1. 開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇您要為其啟用指標的函數。

1. 選擇**組態**，然後選擇**觸發條件**。

1. 選擇您要為其啟用指標的事件來源映射，然後選擇**編輯**。

1. 在**事件來源映射組態**下，選擇**啟用指標**，或從**指標**下拉式清單中選取 。

1. 選擇**儲存**。

您也可以透過使用 [EventSourceMappingConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_EventSourceMappingConfiguration.html) 中的 [EventSourceMappingMetricsConfig](https://docs.aws.amazon.com/lambda/latest/api/API_EventSourceMappingMetricsConfig.html) 物件，以程式設計方式啟用事件來源映射的指標。例如，下列 [UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html) CLI 命令會啟用事件來源映射的指標：

```
aws lambda update-event-source-mapping \
    --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
    --metrics-config Metrics=EventCount
```

有 3 個指標上線：`EventCount`、 `ErrorCount`和 `KafkaMetrics`，而且每個群組都有多個指標。並非每個指標都適用於每個事件來源。下表摘要說明每種事件來源類型的支援指標。

您必須選擇加入指標群組，才能接收指標相關指標。例如，在指標組態中將 EventCount 設定為具有： (`PolledEventCount`、`FilteredOutEventCount`、`InvokedEventCount`、`FailedInvokeEventCount``DroppedEventCount`、 `OnFailureDestinationDeliveredEventCount`和 `DeletedEventCount`)。


| 事件來源映射指標 | 指標群組 | Amazon SQS | Kinesis 和 DynamoDB 串流 | Amazon MSK 和自我管理 Apache Kafka | 
| --- | --- | --- | --- | --- | 
|  `PolledEventCount`  |  `EventCount`  |  是  |  是  |  是  | 
|  `FilteredOutEventCount`  |  `EventCount`  |  是  |  是  |  是  | 
|  `InvokedEventCount`  |  `EventCount`  |  是  |  是  |  是  | 
|  `FailedInvokeEventCount`  |  `EventCount`  |  是  |  是  |  是  | 
|  `DroppedEventCount`  |  `EventCount`  |  否  |  是  |  是  | 
|  `OnFailureDestinationDeliveredEventCount`  |  `EventCount`  |  否  |  是  |  是  | 
|  `DeletedEventCount`  |  `EventCount`  |  是  |  否  |  否  | 
|  `CommittedEventCount`  |  `EventCount`  |  否  |  否  |  是  | 
|  `PollingErrorCount`  |  `ErrorCount`  |  否  |  否  |  是  | 
|  `InvokeErrorCount`  |  `ErrorCount`  |  否  |  否  |  是  | 
|  `OnFailureDestinationDeliveryErrorCount`  |  `ErrorCount`  |  否  |  否  |  是  | 
|  `SchemaRegistryErrorCount`  |  `ErrorCount`  |  否  |  否  |  是  | 
|  `CommitErrorCount`  |  `ErrorCount`  |  否  |  否  |  是  | 
|  `MaxOffsetLag`  |  `KafkaMetrics`  |  否  |  否  |  是  | 
|  `SumOffsetLag`  |  `KafkaMetrics`  |  否  |  否  |  是  | 

此外，如果您的事件來源映射處於[佈建模式](invocation-eventsourcemapping.md#invocation-eventsourcemapping-provisioned-mode)，則 Lambda 會提供下列指標：
+ `ProvisionedPollers` – 對於處於佈建模式的事件來源映射，主動執行的事件輪詢器數量。使用`MAX`數學檢視此指標。
+ （僅限 Amazon MSK 和自我管理的 Apache Kafka 事件來源） `EventPollerUnit` – 對於佈建模式中的事件來源映射，則為主動執行的事件輪詢器單位數量。使用`SUM`數學檢視此指標。
+ (Amazon MSK 和自我管理 Apache Kafka 事件來源） `EventPollerThroughputInBytes` – 對於佈建模式中的事件來源映射，從事件來源輪詢的事件輪詢器總記錄大小。它可以告訴您目前的輪詢輸送量。使用`SUM`數學檢視此指標。

以下是每個指標的詳細資訊：
+ `PolledEventCount` – Lambda 從事件來源順利讀取的事件數量。如果 Lambda 輪詢事件，但收到空白輪詢 (沒有新記錄)，則 Lambda 會為此指標發出 0 值。使用此指標可偵測您的事件來源映射是否在正確輪詢新事件。
+ `FilteredOutEventCount` – 對於[篩選條件](invocation-eventfiltering.md)的事件來源映射，該篩選條件所篩選出來的事件數量。使用此指標可偵測您的事件來源映射是否正在適當地篩選出事件。對於符合篩選條件的事件，Lambda 會發出 0 指標。
+ `InvokedEventCount` – 調用 Lambda 函數的事件數量。使用此指標可驗證事件是否在正在適當地調用您的函數。如果事件導致函數錯誤或限流，則 `InvokedEventCount` 可能會因為自動重試而多次計算同一輪詢事件。
**警告**  
Lambda 事件來源映射至少會處理每個事件一次，而且可能會發生重複處理記錄的情況。因此，在涉及事件計數的指標中，可能會將事件多次納入計算。
+ `FailedInvokeEventCount` – Lambda 嘗試用來調用您的函數但失敗的事件數量。調用可能失敗的原因包括網路組態問題、許可不正確，或是已刪除 Lambda 函數、版本或別名。如果您的事件來源映射已啟用[部分批次回應](services-sqs-errorhandling.md#services-sqs-batchfailurereporting)，則 `FailedInvokeEventCount` 會在回應中包括含非空白 `BatchItemFailures` 的事件。
**注意**  
`FailedInvokeEventCount` 指標的時間戳記表示函數調用結束的時間。此行為與其他 Lambda 調用錯誤指標不同，其他 Lambda 調用錯誤指標是在函數調用開始時加上時間戳記。
+ `DroppedEventCount` – Lambda 因過期或重試耗盡而捨棄的事件數量。具體而言，這是超過您為 `MaximumRecordAgeInSeconds` 或 `MaximumRetryAttempts` 所設定值的記錄數量。重要的是，這不包括由於超過事件來源的保留期限設定而過期的記錄數量。捨棄的事件也不包括您傳送至[失敗時的目的地](invocation-async-retain-records.md)的事件。使用此指標可偵測不斷增多的積壓事件。
+ `OnFailureDestinationDeliveredEventCount` – 對於已設定[失敗時的目的地](invocation-async-retain-records.md)的事件來源映射，傳送至該目的地的事件數量。使用此指標可監控與此事件來源的調用相關的函數錯誤。如果傳送至目的地失敗，則 Lambda 會以如下方式處理指標：
  + Lambda 不會發出 `OnFailureDestinationDeliveredEventCount` 指標。
  + 對於 `DestinationDeliveryFailures` 指標，Lambda 會發出 1。
  + 對於 `DroppedEventCount` 指標，Lambda 發出的數字等於傳送失敗的事件數量。
+ `DeletedEventCount` – Lambda 在處理後成功刪除的事件數。如果 Lambda 嘗試刪除事件但失敗，則 Lambda 會發出 0 指標。使用此指標可確定已從事件來源中刪除順利處理的事件。
+ `CommittedEventCount` – Lambda 在處理後成功遞交的事件數量。這是 Kafka 事件來源映射中每個分割區的最後一個和目前遞交位移差異的總和。
+ `PollingErrorCount` – Lambda 無法從事件來源輪詢請求的錯誤數目。Lambda 只會在發生錯誤時發出此指標資料。
+ `InvokeErrorCount` – Lambda 無法叫用函數的錯誤數目。請注意，調用是批次記錄。數字位於批次層級，而非記錄計數層級。Lambda 只會在發生錯誤時發出此指標資料。
+ `SchemaRegistryErrorCount` – Lambda 無法擷取結構描述或使用結構描述還原序列化的錯誤數目。Lambda 只會在發生錯誤時發出此指標資料。
+ `CommitErrorCount` – Lambda 無法遞交至 Kafka 叢集的錯誤數目。Lambda 只會在發生錯誤時發出此指標資料。
+ `MaxOffsetLag` – 事件來源映射中所有分割區的偏移延遲上限 （最新和遞交偏移之間的差異）。
+ `SumOffsetLag` – 事件來源映射中所有分割區的位移延遲總和。

如果您的事件來源映射已停用，則您不會收到事件來源映射指標。如果 CloudWatch 或 Lambda 的可用性下降，則您還可能會看到缺少指標。