使用 Lambda 函數指標 - AWS Lambda

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

使用 Lambda 函數指標

當您的 AWS Lambda 函數完成處理事件時,Lambda 會將有關呼叫的指標傳送至 Amazon CloudWatch。啟用這些指標不會產生額外費用。

在 CloudWatch 主控台上,您可以使用這些指標建立圖形和儀表板。您可以設定警示來回應使用率、效能或錯誤率變更。Lambda 會以 1 分鐘 CloudWatch 的間隔傳送指標資料至。如需要更快速清楚了解 Lambda 函數,您可以建立高解析度 自訂指標 (如無伺服器園地所述)。自訂指標和 CloudWatch警示需支付費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價

此頁面說明主控台上可用的 Lambda 函數叫用、效能和並行指標。 CloudWatch

在 CloudWatch 主控台上檢視指標

您可以使用主 CloudWatch 控台,依函數名稱、別名或版本來篩選和排序函數量度量。

若要在 CloudWatch 主控台上檢視指標
  1. 開啟主 CloudWatch 控台的「指標」頁面 (AWS/Lambda命名空間)。

  2. 瀏覽索引標籤的指標下,選擇下列任一維度:

    • 依函數名稱 (FunctionName) - 檢視函數所有版本和別名的彙總指標。

    • 依資源 (Resource) - 檢視函數版本或別名的指標。

    • 執行版本 (ExecutedVersion) - 檢視別名與版本組合的指標。使用 ExecutedVersion 維度來比較兩個函式版本的錯誤率,這兩個版本都是加權別名的目標。

    • 跨所有函數 (無) — 檢視目前所有函數的彙總度量 AWS 區域。

  3. 選擇指標,然後選擇新增至圖表或其他繪製選項。

根據預設,圖表會針對所有指標使用 Sum 統計資料。若要選擇不同的統計資料並自訂圖表,請使用 圖表化指標 標籤中的選項。

注意

指標上的時間戳記會反映呼叫函數的時間。根據調用的持續時間,這可能是發出指標前的幾分鐘。例如,如果函數逾時 10 分鐘,請查看過去 10 分鐘之前以獲取精確的指標。

如需有關的詳細資訊 CloudWatch,請參閱 Amazon CloudWatch 使用者指南

指標類型

下節說明 CloudWatch主控台上可用的 Lambda 指標類型。

呼叫指標

調用指標是 Lambda 函數調用結果的二進制指標。例如,若函數傳回錯誤,Lambda 會傳送具有值 1 的 Errors 指標。若要取得每分鐘發生的函數錯誤數目,請以一分鐘為其檢視 Errors 指標的 Sum

注意

檢視下列含有 Sum 統計資料的調用指標。

  • Invocations – 您的函數程式碼被調用的次數,包含成功調用和造成函數錯誤的調用。如果呼叫請求受到調節,或導致呼叫錯誤,系統就不會記錄呼叫。Invocations 的值等於計費的請求數目。

  • Errors - 導致函數錯誤的呼叫數目。函數錯誤包含程式碼擲回的例外,以及 Lambda 執行時間擲回的例外。執行時間會針對如逾時和組態錯誤等問題傳回錯誤。若要計算錯誤率,將 Errors 的值除以 Invocations 的值。請注意,錯誤指標上的時間戳記會反映調用函數的時間,而不是錯誤發生的時間。

  • DeadLetterErrors - 如為非同步調用,則為 Lambda 嘗試傳送事件至無效字母佇列 (DLQ) 但失敗的次數。無效信件錯誤可能設定錯誤的資源或大小限制而發生。

  • DestinationDeliveryFailures:如為非同步調用和支援的 事件來源映射,則為 Lambda 嘗試傳送事件至 目的地 但失敗的次數。事件來源映射方面,Lambda 支援串流來源 (DynamoDB 和 Kinesis) 的目的地。傳遞錯誤可能因權限錯誤、設定錯誤的資源或大小限制而發生。如果您設定的目的地是不受支援的類型 (例如 Amazon SQS FIFO 佇列或 Amazon SNS FIFO 主題),也可能發生此錯誤。

  • Throttles - 調節的調用請求次數。當所有函數執行個體正在處理請求且沒有並行可供擴展規模時,Lambda 會使用 TooManyRequestsException 錯誤拒絕其他請求。限流的請求和其他調用錯誤不會計為 InvocationsErrors

  • OversizedRecordCount:針對 Amazon DocumentDB 事件來源,您的函數從變更串流接收到大小超過 6 MB 的事件數量。Lambda 會捨棄訊息並發出此指標。

  • ProvisionedConcurrencyInvocations - 使用佈建並行調用函數程式碼的次數。

  • ProvisionedConcurrencySpilloverInvocations - 當所有佈建並行都處於使用中狀態時,使用標準並行調用函數程式碼的次數。

  • RecursiveInvocationsDropped— Lambda 因偵測到您的函數是無限遞迴迴圈的一部分而停止呼叫函數的次數。 使用 Lambda 遞迴迴路偵測來防止無限迴圈透過追蹤支援 AWS SDK 新增的中繼資料,監控函數作為請求鏈一部分的呼叫次數。如果函數作為請求鏈的一部分被調用超過 16 次,則 Lambda 會放棄下一次調用。

效能指標

效能指標提供單一函數調用的效能詳細資料。例如,Duration 指標表示您的函式處理事件時以豪秒計算的時間。若要了解您的函數如何處理事件,請檢視這些有 AverageMax 統計資料的指標。

  • Duration - 您的函數程式碼處理一個事件時所花費的時間。調用的計費期間是 Duration 四捨五入到最接近毫秒的值。Duration 不包含冷啟動時間。

  • PostRuntimeExtensionsDuration - 在函數程式碼完成後,執行時間在執行程式碼進行擴展時所用的累計時間。

  • IteratorAge:針對 DynamoDB、Kinesis 和 Amazon DocumentDB 事件來源,則為事件中最後一筆記錄的留存期。這個指標用來衡量串流接收記錄到事件來源映射將事件傳送至函數之間的時間。

  • OffsetLag – 若為 Apache Kafka 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 事件來源,則為寫入主題的最後一筆記錄與函數取用者群組處理的最後一筆記錄之間的偏移量差異。雖然 Kafka 主題會有多個分區,但這個指標可以在主題層級測量偏移延遲。

Duration 也支援百分位數 (p) 統計資料。使用百分位數排除偏差 AverageMaximum 統計資料的離群值。例如,p95 統計資料會顯示調用的最大持續時間為 95%,排除最慢的 5%。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的百分位數。

並行指標

Lambda 會將並行指標報告為跨函數、版本、別名或 AWS 區域處理事件的執行個體數彙總計數。若要查看您與達到並行限制的接近程度,請使用 Max 統計資料檢視這些指標。

  • ConcurrentExecutions - 處理事件的函數執行個體數目。如果此數目達到區域的並行執行配額,或是函數的保留並行上限,Lambda 就會限流額外的調用請求。

  • ProvisionedConcurrentExecutions - 使用佈建並行處理事件的函數執行個體數目。針對具有佈建並行之別名或版本的每次調用,Lambda 都會發出目前的計數。

  • ProvisionedConcurrencyUtilization— 對於版本或別名,值ProvisionedConcurrentExecutions除以已配置的佈建並行總量。例如,如果您為函數配置佈建的並行 10,而您的ProvisionedConcurrentExecutions是 7,則您的ProvisionedConcurrencyUtilization是 0.7。

  • UnreservedConcurrentExecutions - 若為區域,則是沒有保留並行的函數所處理的事件數目。

  • ClaimedAccountConcurrency – 對於區域,無法用於隨需調用的並行數量。ClaimedAccountConcurrency 等於 UnreservedConcurrentExecutions 加上配置並行的數量 (亦即預留並行總數加上佈建並行總數)。如需詳細資訊,請參閱 使用 ClaimedAccountConcurrency 指標

非同步調用指標

非同步調用指標提供有關來自事件來源和直接調用的非同步調用詳細資料。您可以設定閾值和警示,以便在發生某些變更時通知您。例如排入處理佇列的事件數目意外增加時 (AsyncEventsReceived)。或是某事件已等待處理很長一段時間時 (AsyncEventAge)。

  • AsyncEventsReceived – Lambda 成功排入處理佇列的事件數目。此指標可讓您深入了解 Lambda 函數接收的事件數量。監控此指標並設定閾值警示以檢查問題。例如,偵測傳送至 Lambda 的不必要事件數量,並快速診斷因不正確的觸發程序或函數組態所造成的問題。AsyncEventsReceivedInvocations 之間的不相符項目可能表示處理差異、捨棄的事件或潛在的待處理佇列。

  • AsyncEventAge – Lambda 成功將事件排入佇列到調用函數之間的時間。因調用失敗或限流而重試事件時,此指標的值會增加。監控此指標,並針對發生佇列累積時的不同統計資料設定閾值警示。若要對此指標的增加情形進行疑難排解,請查看 Errors 指標以識別函數錯誤,並查看 Throttles 指標以找出並行問題。

  • AsyncEventsDropped – 在未成功執行函數的情況下捨棄的事件數目。如果您有設定無效字母佇列 (DLQ) 或 OnFailure 目的地,則事件會在捨棄之前傳送至該處。有多種原因會導致事件遭捨棄。例如,事件可能超過事件存留期上限、用盡重試次數上限,或是預留並行可能設定為 0。若要對捨棄事件的原因進行疑難排解,請查看 Errors 指標以識別函數錯誤,並查看 Throttles 指標來找出並行問題。