支援的日誌和探索的欄位 - Amazon CloudWatch Logs

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

支援的日誌和探索的欄位

CloudWatch Logs Insights 支援各種類型的日誌。對於傳送至 Amazon CloudWatch Logs 中標準類別日誌群組的每個日誌,CloudWatch Logs Insights 會自動產生五個系統欄位:

  • @message 包含原始未分析的日誌事件。這相當於 InputLogevent 中的 message 欄位。

  • @timestamp 含有日誌事件 timestamp 欄位中的事件時間戳記。這相當於 InputLogevent 中的 timestamp 欄位。

  • @ingestionTime 含有 CloudWatch Logs 收到日誌事件的時間。

  • @logStream 包含日誌事件新增到其中的日誌串流名稱。日誌串流透過產生日誌串流的相同程序對日誌進行分組。

  • @logaccount-id:log-group-name 形式的日誌群組識別碼。在查詢多個日誌群組時,這有助於識別特定事件所屬的日誌群組。

  • @entity 包含與探索相關遙測功能的實體相關的平面 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 Insights 會在其產生的欄位開頭插入 @ 符號。

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

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

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

注意

除了 @message@timestamp或 之外@log,您可以為探索到的欄位建立欄位索引。如需欄位索引的詳細資訊,請參閱 建立欄位索引以改善查詢效能並減少掃描磁碟區

日誌類型 探索的日誌欄位

Amazon VPC 流程日誌

@timestamp, @logStream, @message, accountId, endTime, interfaceId, logStatus, startTime, version, action, bytes, dstAddr, dstPort, packets, protocol, srcAddr, srcPort

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

如果 Lambda 日誌行包含 X-Ray 追蹤 ID,則也會包含以下欄位:@xrayTraceId@xraySegmentId

CloudWatch Logs Insights 會自動探索 Lambda 日誌中的日誌欄位,但僅限於每個日誌事件中的第一個內嵌 JSON 片段。如果 Lambda 日誌事件包含多個 JSON 片段,您可以使用 parse 命令來剖析和擷取日誌欄位。如需詳細資訊,請參閱JSON 日誌中的欄位

CloudTrail 日誌

JSON 格式的日誌

如需詳細資訊,請參閱JSON 日誌中的欄位

其他日誌類型

@timestamp, @ingestionTime, @logStream, @message, @log.

JSON 日誌中的欄位

藉由 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 使用者指南》中的查詢語法