本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
支援的日誌和探索的欄位
CloudWatch Logs Insights 支援各種類型的日誌。對於傳送至 Amazon CloudWatch Logs 中標準類別日誌群組的每個日誌,CloudWatch Logs Insights 會自動產生五個系統欄位:
-
@message
包含原始未分析的日誌事件。這相當於 InputLogevent 中的message
欄位。 -
@timestamp
含有日誌事件timestamp
欄位中的事件時間戳記。這相當於 InputLogevent 中的timestamp
欄位。 -
@ingestionTime
含有 CloudWatch Logs 收到日誌事件的時間。 -
@logStream
包含日誌事件新增到其中的日誌串流名稱。日誌串流透過產生日誌串流的相同程序對日誌進行分組。 -
@log
是
形式的日誌群組識別碼。在查詢多個日誌群組時,這有助於識別特定事件所屬的日誌群組。account-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 流程日誌 |
|
Route 53 日誌 |
|
Lambda 日誌 |
如果 Lambda 日誌行包含 X-Ray 追蹤 ID,則也會包含以下欄位: CloudWatch Logs Insights 會自動探索 Lambda 日誌中的日誌欄位,但僅限於每個日誌事件中的第一個內嵌 JSON 片段。如果 Lambda 日誌事件包含多個 JSON 片段,您可以使用 |
CloudTrail 日誌 JSON 格式的日誌 |
如需詳細資訊,請參閱JSON 日誌中的欄位。 |
其他日誌類型 |
|
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 使用者指南》中的查詢語法。