

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

# 使用 Amazon CloudWatch Lambda 洞察監控函數效能
<a name="monitoring-insights"></a>

Amazon CloudWatch Lambda Insights 會收集和彙總無伺服器應用程式的 Lambda 函數執行時間效能指標和日誌。本頁說明如何啟用和使用 Lambda Insights 來診斷 Lambda 函數的問題。

**Topics**
+ [Lambda Insights 如何監控無伺服器應用程式](#monitoring-insights-how)
+ [定價](#monitoring-insights-pricing)
+ [支援的執行期](#monitoring-insights-runtimes)
+ [在 Lambda 主控台中啟用 Lambda Insights](#monitoring-insights-enabling-console)
+ [以程式設計方式啟用 Lambda Insights](#monitoring-insights-enabling-programmatically)
+ [使用 Lambda Insights 儀表板](#monitoring-insights-multifunction)
+ [偵測函式異常的工作流程範例](#monitoring-insights-anomalies)
+ [使用查詢故障排除函式的範例工作流程](#monitoring-insights-queries)
+ [後續步驟？](#monitoring-console-next-up)

## Lambda Insights 如何監控無伺服器應用程式
<a name="monitoring-insights-how"></a>

CloudWatch Lambda Insights 是一個監控與故障排除解決方案，適用於在 AWS Lambda 上執行的無伺服器應用程式。此解決方案會收集、彙總和摘要系統層級的指標，包括 CPU 時間、記憶體、磁碟和網路使用量。它也會收集、彙總和摘要診斷資訊，例如冷啟動和 Lambda 工作人員關閉，協助您隔離 Lambda 函數問題並快速加以解決。

Lambda Insights 使用新的 CloudWatch Lambda Insights [擴展功能](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)，提供它作為一個 [Lambda 層](chapter-layers.md)。當您在 Lambda 函數上為支援的執行時間啟用此擴展功能時，它會收集系統層級指標，並對 Lambda 函數的每個叫用發出單一效能日誌事件。CloudWatch 使用內嵌的指標格式，從日誌事件中擷取指標。如需詳細資訊，請參閱[使用AWS Lambda 延伸項目](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)。

Lambda Insights 層會擴展 `/aws/lambda-insights/` 日誌群組的 `CreateLogStream` 和 `PutLogEvents`。

## 定價
<a name="monitoring-insights-pricing"></a>

當您為 Lambda 函數啟用 Lambda Insights 時，Lambda Insights 會針對每個函數報告 8 個指標，而每個函數呼叫都會傳送約 1KB 的記錄資料至 CloudWatch。您只需要為 Lambda Insights 報告的函數指標和記錄付費。沒有最低費用或強制性的服務使用政策。如果未叫用函數，則不需為 Lambda Insights 支付費用。如需定價範例，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

## 支援的執行期
<a name="monitoring-insights-runtimes"></a>

您可以使用 Lambda Insights 搭配任何支援 [Lambda 擴展功能](runtimes-extensions-api.md)的執行時間。

## 在 Lambda 主控台中啟用 Lambda Insights
<a name="monitoring-insights-enabling-console"></a>

您可以對新函數和現有 Lambda 函數啟用 Lambda Insights 增強型監控功能。當您在 Lambda 主控台的函數中針對支援的執行時間啟用 Lambda Insights 時，Lambda 會將 Lambda Insights [擴展功能](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html)新增至您的函數，並驗證或嘗試將 [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor) 政策連接至函數的[執行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)。

**若要在 Lambda 主控台中啟用 Lambda Insights**

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

1. 選擇函數。

1. 選擇 **Configuration** (組態) 索引標籤。

1. 在左側功能表中選擇**監控和操作工具**。

1. 在**其他監控工具**窗格上選擇**編輯**。

1. 在 **CloudWatch Lambda Insights** 中，開啟**增強型監控**。

1. 選擇**儲存**。

## 以程式設計方式啟用 Lambda Insights
<a name="monitoring-insights-enabling-programmatically"></a>

您也可以使用 AWS Command Line Interface (AWS CLI)、AWS Serverless Application Model (SAM) CLI、CloudFormation 或 AWS Cloud Development Kit (AWS CDK) 啟用 Lambda Insights。當您以程式設計方式在函數中對受支援的執行時間啟用 Lambda Insights 時，CloudWatch 會將 [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy$jsonEditor) 政策連接至函數的[執行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)。

如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的 [Lambda Insights 入門](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights-Getting-Started.html)。

## 使用 Lambda Insights 儀表板
<a name="monitoring-insights-multifunction"></a>

Lambda Insights 儀表板在 CloudWatch 主控台中有兩種檢視：多函數概觀和單一函數檢視。多函數概觀會彙總目前 AWS 帳戶和區域中 Lambda 函數的執行時間指標。單一函數檢視會顯示單一 Lambda 函數的可用執行時間指標。

您可以使用 CloudWatch 主控台中的 Lambda Insights 儀表板多函數概觀來識別過度使用和使用不足的 Lambda 函數。您可以使用 CloudWatch 主控台中的 Lambda Insights 儀表板單一函數檢視來對個別請求進行故障排除。

**檢視所有函式的執行階段指標**

1. 在 CloudWatch 主控台中開啟[多函數](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)頁面。

1. 從預先定義的時間範圍中選擇，或選擇自訂的時間範圍。

1. (選用) 選擇 **Add to dashboard** (新增至儀表板)，將小工具新增至 CloudWatch 儀表板。  
![\[Lambda Insights 儀表板上的多函數概觀。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-multifunction-view.png)

**檢視單一函式的執行階段指標**

1. 在 CloudWatch 主控台中開啟[單一函數](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:functions)頁面。

1. 從預先定義的時間範圍中選擇，或選擇自訂的時間範圍。

1. (選用) 選擇 **Add to dashboard** (新增至儀表板)，將小工具新增至 CloudWatch 儀表板。  
![\[Lambda Insights 儀表板上的單一函數檢視。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambainsights-singlefunction-view.png)

如需詳細資訊，請參閱[建立和使用 CloudWatch 儀表板上的小工具](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-and-work-with-widgets.html)。

## 偵測函式異常的工作流程範例
<a name="monitoring-insights-anomalies"></a>

您可以使用 Lambda Insights 儀表板上的多函數概觀來識別和偵測您的函數是否有運算記憶體異常。例如，如果多函式概觀指出某個函式正在使用大量記憶體，您可以在**記憶體使用量**窗格中檢視詳細的記憶體使用量。然後，您可以移至「指標」儀表板以啟用異常偵測或建立警示。

**啟用對函式的異常偵測**

1. 在 CloudWatch 主控台中開啟[多函數](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)頁面。

1. 在**函式摘要**下方，選擇您的函式名稱。

   單一函式檢視隨即開啟，其中包含函式執行階段指標。  
![\[Lambda Insights 儀表板上的函數摘要窗格。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-function-summary.png)

1. 在**記憶體使用量**窗格中，選擇三個垂直點，然後選擇**在指標中檢視**以開啟**指標**儀表板。  
![\[Memory Usage (記憶體使用量) 窗格上的選單。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-memory-usage.png)

1. 在**圖形化指標**索引標籤的**動作**欄中，選擇第一個圖示，以啟用對函式的異常偵測。  
![\[Memory Usage (記憶體使用量) 窗格的 Graphed metrics (圖形化指標) 標籤。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-graphed-metrics.png)

如需詳細資訊，請參閱[使用 CloudWatch 異常偵測](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html)。

## 使用查詢故障排除函式的範例工作流程
<a name="monitoring-insights-queries"></a>

您可以使用 Lambda Insights 儀表板上的單一函數檢視來識別函數持續時間中峰值的根本原因。例如，如果多函式概觀指出函式持續時間大幅增加，您可以暫停或選擇**持續時間**窗格中的每個函式，以判斷哪個函式造成增加。然後，您可以移至單一函式檢視並檢閱**應用程式日誌**，以判斷根本原因。

**在函式上執行查詢**

1. 在 CloudWatch 主控台中開啟[多函數](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:performance)頁面。

1. 在**持續時間**窗格中，選擇您的函式以篩選持續時間量度。  
![\[在 Duration (持續時間) 窗格中選擇的函數。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-choose-function.png)

1. 開啟[單一函式](https://console.aws.amazon.com/cloudwatch/home#lambda-insights:functions)頁面。

1. 選擇**依函式名稱篩選指標**下拉式清單，然後選擇您的函式。

1. 若要檢視 **最近 1000 個應用程式日誌**，請選擇**應用程式日誌**索引標籤。

1. 檢閱**時間戳記**和**訊息**，以識別您要故障排除的叫用請求。  
![\[最近的 1000 個應用程式日誌。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-application-logs.png)

1. 若要顯示**最近的 1000 次叫用**，請選擇**叫用**索引標籤。

1. 針對您要故障排除的叫用請求，選取**時間戳記**或**訊息**。  
![\[選取最近的叫用請求。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-invocations-function-select.png)

1. 選擇**檢視日誌**的下拉式清單，然後選擇**檢視效能日誌**。

   您的函式自動產生的查詢會在**日誌深入資訊**儀表板中開啟。

1. 選擇**執行查詢**以產生叫用請求的**日誌**訊息。  
![\[查詢 Logs Insights 儀表板中選取的函數。\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/lambdainsights-query.png)

## 後續步驟？
<a name="monitoring-console-next-up"></a>
+ 了解如何在 *Amazon CloudWatch 使用者指南*中的[建立儀表板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create_dashboard.html)中建立 CloudWatch Logs 儀表板。
+ 了解如何在 *Amazon CloudWatch 使用者指南*中的[新增查詢至儀表板或匯出查詢結果](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_ExportQueryResults.html)中將查詢新增至 CloudWatch Logs 儀表板。