本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄和指標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 函數的程式碼還可以根據記錄輸出層級輸出大量記錄資料輸出。這可能會影響您的記錄成本並影響效能。
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 記錄功能設定為處理和擷取格式適當的內嵌指標格式陳述式。