지원되는 로그 및 검색되는 필드 - Amazon CloudWatch Logs

지원되는 로그 및 검색되는 필드

CloudWatch Logs Insights는 다양한 유형의 로그를 지원합니다. Amazon CloudWatch Logs로 전송되는 모든 로그에 대해 CloudWatch Logs Insights는 다음과 같은 5개의 시스템 필드를 자동으로 생성합니다.

  • @message에는 구문 분석되지 않은 원시 로그 이벤트가 포함되어 있습니다. 이 필드는 InputLogeventmessage 필드와 동등합니다.

  • @timestamp에는 로그 이벤트 timestamp 필드의 이벤트 타임스탬프가 포함되어 있습니다. 이 필드는 InputLogeventtimestamp 필드와 동등합니다.

  • @ingestionTime에는 CloudWatch Logs가 로그 이벤트를 수신한 시간이 포함되어 있습니다.

  • @logStream에는 로그 이벤트가 추가된 로그 스트림의 이름이 포함되어 있습니다. 로그 스트림은 로그를 생성한 프로세스와 동일한 프로세스를 통해 로그를 그룹화합니다.

  • @log는 형식의 로그 그룹 식별자입니다.account-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, 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": "205.251.233.176", "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

중첩된 JSON 필드 instanceId 값에 액세스하기 위해 filter 명령과 함께 점 표기법을 사용하는 쿼리를 보여주는 코드 조각입니다. instanceId 값이 "i-abcde123"과 같은 메시지를 필터링하고 지정된 값을 포함하는 모든 로그 이벤트를 반환하는 쿼리입니다.

참고

CloudWatch Logs Insights는 하나의 JSON 로그에서 최대 200개의 로그 이벤트 필드를 추출할 수 있습니다. 추출되지 않은 추가 필드의 경우 parse 명령을 사용하여 메시지 필드의 구문 분석되지 않은 원시 로그 이벤트에서 이러한 필드를 추출할 수 있습니다. parse 명령에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서에서 쿼리 구문을 참조하세요.