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

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

支援的日誌和探索的欄位

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

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

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

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

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

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

注意

僅標準日誌類別中的日誌群組支援欄位探索。如需日誌類別的詳細資訊,請參閱 日誌類

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

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

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

如果探索日誌欄位的名稱以 @ 字元開頭, CloudWatch Logs Insights 會顯示它,並在開頭@附加額外的 。例如,如果日誌欄位名稱是 @example.com,這個欄位名稱會顯示為 @@example.com

日誌類型 探索的日誌欄位

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事件包含名為 的物件userIdentityuserIdentity包含名為 的欄位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 最多可從日誌中擷取 200 個JSON日誌事件欄位。針對未擷取的額外欄位,可以使用 parse 命令來擷取訊息欄位中原始未剖析日誌事件的欄位。如需 parse命令的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的查詢語法