

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

# 存取 CloudWatch Logs 洞察
<a name="access-cloudwatch-logs-insights"></a>

此解決方案會記錄 Lambda 函數的錯誤、警告、資訊和偵錯訊息。若要選擇要記錄的訊息類型：

1. 在 AWS Lambda 主控台中尋找適用的函數。

1. 新增 **POWERTOOLS\_LOG\_LEVEL** 環境變數。

1. 將變數設定為適用的訊息類型。

如需進一步指示，請參閱*AWS Lambda * [Lambda 開發人員指南》中的建立 Lambda 環境變數](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html)。

下表列出您可以選擇的日誌層級類型。


| Level | Description | 
| --- | --- | 
|  **ERROR (錯誤)**  | 日誌包含任何導致 操作失敗的資訊。 | 
|  **WARNING**  | 日誌包含任何可能導致函數不一致，但不一定會導致操作失敗的資訊。日誌也包含錯誤訊息。 | 
|  **INFO**  | 日誌包含有關函數運作方式的高階資訊。日誌也包含 ERROR 和 WARNING 訊息。 | 
|  **除錯**  | 日誌包含偵錯函數問題時可能有幫助的資訊。日誌也包含 ERROR、WARNING 和 INFO 訊息。 | 

使用下列程序將 CloudWatch Logs 洞察新增至此解決方案。

1. 識別相關的日誌群組：

   1. 登入 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)。

   1. 選擇您的目標堆疊。

   1. 選取**資源**索引標籤，並搜尋您的目標 Lambda 函數。

   1. 登入 [AWS Lambda 主控台](https://console.aws.amazon.com/lambda)，然後選擇每個目標 Lambda 函數。

   1. 針對每個目標 Lambda 函數，選取**監控**索引標籤，然後選擇**檢視 CloudWatch Logs**。

   1. 複製您要從中擷取洞見的日誌群組名稱。

1. 導覽至 [Amazon CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)。

1. 在導覽功能表的**日誌**下，選擇**日誌洞見**。

1. 在 **Logs Insights **頁面上，選擇 **Logs** 索引標籤。

1. 從步驟 1 搜尋日誌群組名稱。

1. 複製下列其中一個範例查詢，並將其貼到查詢欄位中：

   1. 若要識別所有用戶端例外狀況：

      ```
      fields @message
      |filter @message like /(?i)Exception/|stats count(*) as exceptionCount by @message
      ```

   1. 若要依函數名稱擷取調用計數：

      ```
      stats count(*) by function_name
      ```

   1. 若要擷取五分鐘間隔內的調用計數：

      ```
      stats count(*) as invocations by bin(5m)
      ```

   1. 若要擷取所有 [AWS X-Ray](https://aws.amazon.com/xray/) IDs：

      ```
      filter @message like "XRAY TraceId"
      |parse @message "XRAY TraceId: * " as traceId|stats count(*) by traceId
      ```

   1. 若要擷取與特定 X-Ray 追蹤 ID 相關的日誌：

      ```
      filter @message like "your-traceid-here"
      ```

   1. 若要擷取未經授權的 WebSocket 錯誤：

      ```
      fields
      @ingestionTime,
      @log,
      @logStream,
      @message,
      @requestId,
      @timestamp,
      errorMessage,
      errorType
      |filter @message like /Unauthorized/ and @message like /websocket/|sort @timestamp desc
      ```

   1. 若要擷取已發佈的指標計數：

      ```
      filter @message like "CloudWatchMetrics"
      |parse @message /"Metrics":\s*\[(?<metrics>.*?)\]/|stats count(*) as metric_count by metrics
      ```