記錄和指標AWS Lambda - AWS 規定指引

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

記錄和指標AWS Lambda

拉姆達不再需要管理和監控工作負載的伺服器,並自動使用 CloudWatch指標和 CloudWatch 無需對應用程式程式碼進行進一步設定或檢測的記錄。本節可協助您瞭解 Lambda 所使用之系統的效能特性,以及您的組態選擇如何影響效能。它還可協助您記錄和監控 Lambda 函數,以進行效能最佳化和診斷應用程式層級問題。

Lambda 函數記錄

Lambda 會自動將標準輸出和標準錯誤訊息從 Lambda 函數串流至 CloudWatch 記錄檔,不需要記錄驅動程式。Lambda 也會自動佈建執行 Lambda 函數的容器,並將其設定為在不同的記錄串流中輸出記錄訊息。

Lambda 函數的後續叫用可以重複使用相同的容器,並輸出至相同的記錄串流。Lambda 也可以佈建新的容器,並將呼叫輸出至新的記錄串流。

Lambda 會在第一次叫用 Lambda 函數時自動建立日誌群組。Lambda 函數可以有多個版本,您可以選擇要執行的版本。Lambda 函數叫用的所有記錄都儲存在相同的記錄群組中。名稱無法變更,且位於/aws/lambda/<YourLambdaFunctionName>格式。系統會在每個 Lambda 函數執行個體的記錄群組中建立個別的記錄串流。Lambda 有一個標準的命名慣例,用於使用YYYY/MM/DD/[<FunctionVersion>]<InstanceId>格式。該InstanceId是由AWS以識別 Lambda 函數實例。

我們建議您將日誌消息格式化為 JSON 格式,因為您可以更輕鬆地查詢它們 CloudWatch 日誌見解。它們也可以更容易地過濾和導出。您可以使用日誌庫來簡化此過程或編寫自己的日誌處理函數。我們建議您使用記錄程式庫來協助格式化和分類記錄訊息。例如,如果您的 Lambda 函數是用 Python 編寫的,則可以使用日誌記錄模塊記錄訊息並控制輸出格式。Lambda 原生會針對以 Python 撰寫的 Lambda 函數使用 Python 記錄程式庫,而且您可以在 Lambda 函數中擷取和自訂記錄器。AWS實驗室創造了AWS蟒蛇的拉姆達電動工具開發人員工具組可讓您更輕鬆地利用冷啟動等關鍵資料來豐富記錄訊息。該工具包可用於 Python,Java,打字稿和 .NET。

另一個最佳做法是使用變數來設定記錄輸出層級,並根據環境和您的需求進行調整。除了使用的程式庫之外,Lambda 函數的程式碼還可以根據記錄輸出層級輸出大量記錄資料輸出。這可能會影響您的記錄成本並影響效能。

Lambda 可讓您為 Lambda 函數執行階段環境設定環境變數,而無需更新程式碼。例如,您可以建立LAMBDA_LOG_LEVEL環境變數,定義您可以從程式碼擷取的記錄輸出層級。下列範例會嘗試擷取LAMBDA_LOG_LEVEL環境變量並使用該值來定義日誌記錄輸出。如果未設定環境變數,則預設為INFO水平。

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

將記錄檔傳送至其他目的地 CloudWatch

您可以將日誌發送到其他目的地(例如,亞馬遜 OpenSearch 服務或 Lambda 函數) 使用訂閱篩選器。如果你不使用亞馬遜 OpenSearch 服務中,您可以使用 Lambda 函數來處理日誌並將其發送到AWS使用您選擇的服務AWS軟體開發套件。

您也可以將 SDK 用於以外的日誌目的地AWS在 Lambda 函數中使用雲端功能,將記錄陳述式直接傳送至您選擇的目的地。如果選擇此選項,建議您考慮延遲、額外處理時間、錯誤和重試處理,以及操作邏輯耦合至 Lambda 函數的影響。

Lambda 函數指標

Lambda 可讓您執行程式碼,而無需管理或擴展伺服器,這幾乎消除了系統層級稽核和診斷的負擔。不過,瞭解系統層級的 Lambda 函數的效能和叫用指標仍然很重要。這有助於您優化資源配置並提高代碼性能。有效監控和衡量效能可以透過適當調整 Lambda 函數的大小,改善使用者體驗並降低成本。一般而言,以 Lambda 函數執行的工作負載也具有需要擷取和分析的應用程式層級指標。Lambda 直接支援嵌入式指標格式,以擷取應用程式層級 CloudWatch 指標更容易。

系統層級度量

自動整合 CloudWatch 度量標準,並提供了一組您的 Lambda 函數的標準指標。Lambda 還透過這些指標為每個 Lambda 函數提供單獨的監控儀表板。您需要監視的兩個重要指標是錯誤和叫用錯誤。瞭解叫用錯誤與其他錯誤類型之間的差異,可協助您診斷並支援 Lambda 部署。

調用錯誤防止您的 Lambda 函數執行。這些錯誤發生在您的代碼運行之前,因此您無法在代碼中實現錯誤處理來識別它們。相反地,您應該為 Lambda 函數設定警示,以偵測這些錯誤並通知作業和工作負載擁有者。這些錯誤通常與配置或權限錯誤有關,並且可能由於配置或權限的變更而發生。調用錯誤可能會啟動重試,從而導致多次調用函數。

成功叫用的 Lambda 函數會傳回 HTTP 200 回應,即使函數擲回例外狀況也是如此。您的 Lambda 函數應該實作錯誤處理並引發例外狀況,以便Errors指標會擷取並識別 Lambda 函數的失敗執行。您應該從 Lambda 函數叫用傳回格式化的回應,其中包含資訊,以判斷執行是完全、部分還是成功執行失敗。

CloudWatch 提供CloudWatch 拉姆達洞察您可以為個別 Lambda 函數啟用。Lambda 深入解析會收集、彙總和摘要系統層級指標 (例如 CPU 時間、記憶體、磁碟和網路使用量)。Lambda Insights 也會收集、彙總和摘要診斷資訊 (例如冷啟動和 Lambda 工作者關閉),以協助您隔離並快速解決問題。

Lambda 深入解析會使用內嵌的指標格式,自動將效能資訊發送至/aws/lambda-insights/具有根據 Lambda 函數名稱的日誌串流名稱前置詞的日誌群組。這些性能日誌事件創建 CloudWatch 指標是自動的基礎 CloudWatch 儀表板。我們建議您針對效能測試和生產環境啟用 Lambda 深入解析。由 Lambda 洞察建立的其他指標包括memory_utilization這有助於正確調整 Lambda 函數的大小,以避免支付不必要的容量費用。

應用程式指標

您也可以在以下位置建立和擷取自己的應用程式指標 CloudWatch 使用內嵌度量格式。您可以利用AWS 提供內嵌指標格式的程式庫建立並發出嵌入式指標格式陳述式 CloudWatch。整合的拉姆達 CloudWatch 記錄功能設定為處理和擷取格式適當的內嵌指標格式陳述式。