

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

# 支援的日誌和探索的欄位
<a name="CWL_AnalyzeLogData-discoverable-fields"></a>

CloudWatch Logs Insights 支援各種類型的日誌。對於傳送至 Amazon CloudWatch Logs 中標準類別日誌群組的每個日誌，CloudWatch Logs Insights 會自動產生五個系統欄位：
+ `@message` 包含原始未分析的日誌事件。這相當於 [InputLogevent](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_InputLogEvent.html) 中的 `message` 欄位。
+ `@timestamp` 含有日誌事件 `timestamp` 欄位中的事件時間戳記。這相當於 [InputLogevent](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_InputLogEvent.html) 中的 `timestamp` 欄位。
+ `@ingestionTime` 含有 CloudWatch Logs 收到日誌事件的時間。
+ `@logStream` 包含日誌事件新增到其中的日誌串流名稱。日誌串流透過產生日誌串流的相同程序對日誌進行分組。
+ `@log` 是 `{{account-id}}:{{log-group-name}}` 形式的日誌群組識別碼。在查詢多個日誌群組時，這有助於識別特定事件所屬的日誌群組。
+ `@entity` 包含與[探索相關遙測](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ExploreRelated.html)功能的實體相關的平面化 JSON。

  例如，此 JSON 可以代表實體。

  ```
  {
    "Entity": {
      "KeyAttributes": {
        "Type": "Service",
        "Name": "PetClinic"
      },
      "Attributes": {
        "PlatformType": "AWS::EC2",
        "EC2.InstanceId": "i-1234567890123"
      }
    }
  }
  ```

  對於此實體，擷取的系統欄位如下：

  ```
  @entity.KeyAttributes.Type = Service
  @entity.KeyAttributes.Name = PetClinic
  @entity.Attributes.PlatformType = AWS::EC2
  @entity.Attributes.EC2.InstanceId = i-1234567890123
  ```

**注意**  
僅標準日誌類別中的日誌群組支援欄位探索。如需日誌類別的詳細資訊，請參閱 [日誌類別](CloudWatch_Logs_Log_Classes.md)。

CloudWatch Logs Insights 會在其產生的欄位開頭插入 **@** 符號。

對於許多日誌類型，CloudWatch Logs 也會自動探索日誌包含的日誌欄位。下表顯示這些自動探索的欄位。

如果是 CloudWatch Logs Insights 不會自動探索欄位的其他日誌類型，您可以使用 `parse` 命令來擷取和建立擷取欄位，以用於該查詢中。如需詳細資訊，請參閱[CloudWatch Logs Insights 語言查詢語法](CWL_QuerySyntax.md)。

如果找到的日誌欄位以 `@` 為名稱開頭，CloudWatch Logs Insights 顯示該欄位時會在開頭多加一個 `@`。例如，如果日誌欄位名稱是 `@example.com`，這個欄位名稱會顯示為 `@@example.com`。

**注意**  
除了 `@message`、 `@timestamp`或 之外`@log`，您可以為探索到的欄位建立欄位索引。如需欄位索引的詳細資訊，請參閱 [建立欄位索引以改善查詢效能並減少掃描磁碟區](CloudWatchLogs-Field-Indexing.md)。


| 日誌類型 | 探索的日誌欄位 | 
| --- | --- | 
| Amazon VPC 流程日誌 | `@timestamp`, `@logStream`, `@message`, `accountId`, `endTime`, `interfaceId`, `logStatus`, `startTime`, `version`, `action`, `bytes`, `dstAddr`, `dstPort`, `packets`, `protocol`, `srcAddr`, `srcPort`<br />  | 
| Route 53 日誌 | `@timestamp`, `@logStream`, `@message`, `edgeLocation`, `ednsClientSubnet`, `hostZoneId`, `protocol`, `queryName`, `queryTimestamp`, `queryType`, `resolverIp`, `responseCode`, `version` | 
| Lambda 日誌 | `@timestamp`, `@logStream`, `@message`, `@requestId`, `@duration, ``@billedDuration`, `@type`, `@maxMemoryUsed`, `@memorySize`<br />如果 Lambda 日誌行包含 X-Ray 追蹤 ID，則也會包含以下欄位：`@xrayTraceId` 和 `@xraySegmentId`。<br />CloudWatch Logs Insights 會自動探索 Lambda 日誌中的日誌欄位，但僅限於每個日誌事件中的第一個內嵌 JSON 片段。如果 Lambda 日誌事件包含多個 JSON 片段，您可以使用 `parse` 命令來剖析和擷取日誌欄位。如需詳細資訊，請參閱[JSON 日誌中的欄位](#CWL_AnalyzeLogData-discoverable-JSON-logs)。 | 
| CloudTrail 日誌<br />JSON 格式的日誌 | 如需詳細資訊，請參閱[JSON 日誌中的欄位](#CWL_AnalyzeLogData-discoverable-JSON-logs)。 | 
| 其他日誌類型 | `@timestamp`, `@ingestionTime`, `@logStream`, `@message`, `@log`. | 

## JSON 日誌中的欄位
<a name="CWL_AnalyzeLogData-discoverable-JSON-logs"></a>

藉由 CloudWatch Logs Insights，您可以使用點符號來表示 JSON 欄位。本節包含 JSON 事件範例和程式碼片段，示範如何使用點符號存取 JSON 欄位。

**範例：JSON 事件**

```
{
    "eventVersion": "1.0",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn: aws: iam: : 123456789012: user/Alice",
        "accessKeyId": "EXAMPLE_KEY_ID",
        "accountId": "123456789012",
        "userName": "Alice"
    },
    "eventTime": "2014-03-06T21: 22: 54Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "StartInstances",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "192.0.2.255",
    "userAgent": "ec2-api-tools1.6.12.2",
    "requestParameters": {
        "instancesSet": {
            "items": [
                {
                    "instanceId": "i-abcde123"
                }
            ]
        }
    },
    "responseElements": {
        "instancesSet": {
            "items": [
                {
                    "instanceId": "i-abcde123",
                    "currentState": {
                        "code": 0,
                        "name": "pending"
                    },
                    "previousState": {
                        "code": 80,
                        "name": "stopped"
                    }
                }
            ]
        }
    }
}
```

範例 JSON 事件包含一個名為 `userIdentity` 的物件。`userIdentity` 包含名為 `type` 的欄位。若要使用點符號表示 `type` 的值，您可以使用 `userIdentity.type`。

範例 JSON 事件包含展平為巢狀欄位名稱和值清單的陣列。若要表示 `requestParameters.instancesSet` 中第一個項目 `instanceId` 的值，您可以使用 `requestParameters.instancesSet.items.0.instanceId`。放置在欄位 `instanceID` 前的數字 `0` 指的是欄位 `items` 的值的位置。下列範例包含一個程式碼片段，顯示如何存取 JSON 日誌事件中的巢狀 JSON 欄位。

**範例：查詢**

```
fields @timestamp, @message
| filter requestParameters.instancesSet.items.0.instanceId="i-abcde123"
| sort @timestamp desc
```

該程式碼片段顯示了一個查詢，該查詢使用帶有 `filter` 命令的點符號來存取巢狀 JSON 欄位 `instanceId` 的值。查詢會篩選出 `instanceId` 值等於 `"i-abcde123"` 的消息，並傳回包含指定值的所有日誌事件。

**注意**  
CloudWatch Logs Insights 最多可從 JSON 日誌中擷取 200 個日誌事件欄位。針對未擷取的額外欄位，可以使用 `parse` 命令來擷取訊息欄位中原始未剖析日誌事件的欄位。如需有關 `parse` 命令的詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[查詢語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)。