本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
支持的日志和发现的字段
CloudWatch Logs Insights 支持不同的日志类型。对于发送到标准类日志组 Amazon Logs 的每份 CloudWatch 日 CloudWatch 志,Logs Insights 都会自动生成五个系统字段:
-
@message
包含原始未解析的日志事件。这等同于中的message
字段InputLogevent。 -
@timestamp
包含日志事件的timestamp
字段中事件时间戳。这等同于中的timestamp
字段InputLogevent。 -
@ingestionTime
包含 L CloudWatch ogs 收到日志事件的时间。 -
@logStream
包含已将日志事件添加到的日志流的名称。日志流使用与生成日志的相同进程对日志进行分组。 -
@log
是
形式的日志组标识符。在查询多个日志组时,这可能对于确定特定事件属于哪个日志组非常有用。account-id
:log-group-name
注意
仅标准日志类中的日志组支持字段发现。有关日志类的更多信息,请参阅 日志类。
CloudWatch Logs Insights 在其生成的字段的开头插入 @ 符号。
对于许多日志类型, CloudWatch 日志还会自动发现日志中包含的日志字段。这些自动发现字段如下表所示。
对于带有 Logs Insights 无法自动发现的字段的其他类型的 CloudWatch 日志,您可以使用parse
命令提取并创建提取的字段以用于该查询。有关更多信息,请参阅 CloudWatch 日志见解查询语法。
如果发现的日志字段的名称以@
字符开头, CloudWatch 则 Logs Insights 会显示该字段,并在开头@
附加一个额外的字段。例如,如果日志字段名称为 @example.com
,则此字段名称显示为 @@example.com
。
日志类型 | 发现的日志字段 |
---|---|
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 最多可以从日志中提取 200 个JSON日志事件字段。对于未提取的额外字段,您可以使用 parse
命令从消息字段中的原始未解析录入事件中提取这些字段。有关该parse
命令的更多信息,请参阅 Amazon CloudWatch 用户指南中的查询语法。