

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

# 使用 CloudWatch Logs Insights 分析日誌
<a name="cloudwatch-logs-reading"></a>

如上一節所述，將 CloudWatch 記錄選項新增至應用程式後，您可以使用 CloudWatch Logs Insights 查詢您的日誌串流中是否有特定事件或錯誤。

CloudWatch Logs Insights 可讓您以互動方式搜尋和分析 CloudWatch Logs 中的日誌資料。

如需 CloudWatch Logs Insights 使用入門的相關資訊，請參閱[使用 CloudWatch Logs Insights 分析日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。

## 執行範例查詢
<a name="cloudwatch-logs-reading-run"></a>

本節描述了如何執行 CloudWatch Logs Insights 查詢範例。

**先決條件**
+ 在 CloudWatch Logs 中設定的現有日誌群組和日誌串流。
+ 存放在 CloudWatch Logs 中的現有日誌。

如果您使用 服務 AWS CloudTrail，例如 Amazon Route 53 或 Amazon VPC，您可能已經設定這些服務的日誌以前往 CloudWatch Logs。如需將日誌傳送到 CloudWatch Logs 的詳細資訊，請參閱 [CloudWatch Logs 入門](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html)。

CloudWatch Logs Insights 中的查詢會從日誌事件傳回一組欄位，或在日誌事件上執行的數學彙總或其他運算的結果。本節示範的查詢會傳回日誌事件清單。

**執行 CloudWatch Logs Insights 範例查詢**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 ** Insights**。

   

1. 熒幕上方附近的查詢編輯器包含可傳回 20 筆最新日誌事件的預設查詢。在查詢編輯器上方，選取要查詢的日誌群組。

   

   選取日誌群組時，CloudWatch Logs Insights 會自動偵測日誌群組中資料內的欄位，並在右側窗格的 **Discovered fields** (已探索欄位) 中顯示。它也會顯示一段時間內此日誌群組中日誌事件的長條圖。此長條圖顯示日誌群組中符合您的查詢和時間範圍的事件分佈，而不只是表格中顯示的事件。

1. 選擇 **Run query** (執行查詢)。

   查詢的結果隨即出現。在這個範例中，結果是最新的 20 個日誌事件 (任何類型)。

1. 若要查看其中一個傳回的日誌事件的所有欄位，請選擇該日誌事件左側的箭頭。

如需如何執行和修改 CloudWatch Logs Insights 查詢的詳細資訊，請參閱[執行和修改範例查詢](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html)。

## 檢閱範例查詢
<a name="cloudwatch-logs-reading-examples"></a>

本節包含用於分析 Managed Service for Apache Flink 應用程式日誌的 CloudWatch Logs Insights 範例查詢。這些查詢會搜尋數個範例錯誤條件，並作為撰寫查詢以尋找其他錯誤條件的範本。

**注意**  
使用您應用程式的「地區」和「帳戶 ID」取代下列查詢範例中的地區 (*us-west-2*)、帳戶 ID (*012345678901*) 和應用程式名稱 (*YourApplication*)。

**Topics**
+ [分析操作：任務的分佈](#cloudwatch-logs-reading-tm)
+ [分析操作：平行處理的變化](#cloudwatch-logs-reading-auto)
+ [分析錯誤：存取遭拒](#cloudwatch-logs-reading-access)
+ [分析錯誤：找不到來源或接收器](#cloudwatch-logs-reading-con)
+ [分析錯誤：應用程式任務相關的失敗](#cloudwatch-logs-reading-apps)

### 分析操作：任務的分佈
<a name="cloudwatch-logs-reading-tm"></a>

下列 CloudWatch Logs Insights 查詢會傳回 Apache Flink 作業管理員在任務管理員之間分配的任務數目。您需要將查詢的時間範圍設定為符合一個作業執行，以便查詢不會傳回來自先前作業的任務。如需平行處理層級的詳細資訊，請參閱[實作應用程式擴展](how-scaling.md)。

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

下列 CloudWatch Logs Insights 查詢會傳回指派給每個任務管理員的子任務。子任務的總數是每個任務的平行處理層級的總和。任務平行處理層級衍生自運算子平行處理層級，且預設會與應用程式的平行處理層級相同，除非您在程式碼中指定 `setParallelism` 來變更它。如需設定運算子平行處理的詳細資訊，請參閱 [Apache Flink 文件](https://nightlies.apache.org/flink/flink-docs-release-1.15/)中的[設定平行處理：運算子層級](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level)。

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

如需任務排程的詳細資訊，請參閱 [Apache Flink 文件](https://nightlies.apache.org/flink/flink-docs-release-1.15/)中的[作業和排程](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html)。

### 分析操作：平行處理的變化
<a name="cloudwatch-logs-reading-auto"></a>

下列 CloudWatch Logs Insights 查詢會傳回應用程式平行處理層級的變更 (例如由於自動擴展)。此查詢還會傳回應用程式平行處理層級的手動變更。如需自動擴展的相關資訊，請參閱[在 Managed Service for Apache Flink 中使用自動擴展](how-scaling-auto.md)。

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### 分析錯誤：存取遭拒
<a name="cloudwatch-logs-reading-access"></a>

下列 CloudWatch Logs Insights 查詢會傳回 `Access Denied` 日誌。

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### 分析錯誤：找不到來源或接收器
<a name="cloudwatch-logs-reading-con"></a>

下列 CloudWatch Logs Insights 查詢會傳回 `ResourceNotFound` 日誌。`ResourceNotFound`如果找不到 Kinesis 來源或接收器，會記錄結果。

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### 分析錯誤：應用程式任務相關的失敗
<a name="cloudwatch-logs-reading-apps"></a>

下列 CloudWatch Logs Insights 查詢會傳回應用程式的任務相關失敗日誌。如果應用程式的狀態從 `RUNNING` 切換到 `RESTARTING`，就會產生這些日誌結果。

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

對於使用 Apache Flink 1.8.2 版及以前版本的應用程式，任務相關的失敗將導致應用程式狀態反而從 `RUNNING` 切換到 `FAILED`。使用 Apache Flink 1.8.2 及之前版本時，請使用下列查詢來搜尋與應用程式任務相關的失敗：

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```