View a markdown version of this page

하위 쿼리 - Amazon CloudWatch Logs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

하위 쿼리

하위 쿼리는 다른 쿼리에 대한 입력으로 사용할 수 있는 중첩된 Logs Insights 쿼리입니다. 하위 쿼리를 사용하여 중간 결과 세트를 도출한 다음 후속 명령에서 사용할 수 있습니다.

구문

필터의 하위 쿼리

filter <field> in ( <subquery> )
파라미터

  • <subquery> - 결과 집합을 반환하는 유효한 Logs Insights 쿼리입니다. 하위 쿼리는 외부 쿼리에서 참조하는 필드를 생성해야 합니다.

예제

예예제 1: 다운스트림 서비스에서 오류가 발생한 요청 찾기

이 예제에서는 하위 쿼리를 사용하여 기본 서비스에서 다운스트림 서비스에서 오류가 발생한 요청을 식별하는 방법을 보여줍니다. 이는 분산 시스템의 계단식 장애 문제를 해결하는 데 유용합니다.

filter requestId in ( SOURCE '/aws/lambda/database-service' | filter errorType = "DatabaseConnectionTimeout" | fields requestId ) | fields @timestamp, requestId, endpoint, userId, responseTime | sort @timestamp desc

이 쿼리는 다음과 같습니다.

  1. 하위 쿼리는 데이터베이스 서비스에서 연결 제한 시간이 발생한 모든 requestId 값을 찾습니다.

  2. 외부 쿼리는 기본 서비스의 로그를 필터링하여 오류가 발생하기 쉬운 요청 IDs

  3. 결과에는 영향을 받은 엔드포인트 및 사용자를 포함하여 다운스트림에서 실패한 요청의 전체 컨텍스트가 표시됩니다.

이 패턴은 다운스트림 장애의 업스트림 영향을 이해하는 데 도움이 됩니다.

예예제 2: 대상 조사에 대한 자주 실패하는 요청 식별

이 예제에서는 집계와 함께 하위 쿼리를 사용하여 반복적으로 실패하는 요청을 찾는 방법을 보여줍니다. 이는 일시적인 오류가 아닌 체계적인 문제를 나타내는 경우가 많습니다.

filter requestId in ( SOURCE '/aws/lambda/payment-processor' | filter status = "FAILED" | stats count(*) as failureCount by requestId | filter failureCount > 3 | fields requestId ) | fields @timestamp, requestId, customerId, amount, failureReason | sort @timestamp asc

이 쿼리는 다음과 같습니다.

  1. 하위 쿼리는 실패한 결제 시도를 집계하고 3회 이상 실패한 요청 IDs 식별합니다.

  2. 외부 쿼리는 문제가 있는 요청 IDs

  3. 재시도 진행 상황을 보여주기 위해 결과가 시간순으로 정렬됩니다.

이를 통해 일시적인 장애(단일 발생)와 심층 조사가 필요한 지속적인 문제(다중 장애)를 구별할 수 있습니다.

동작

  • 하위 쿼리는 외부 쿼리와 독립적으로 실행됩니다.

  • 외부 쿼리에서 사용하기 전에 결과가 구체화됩니다.

  • 외부 쿼리에는 하위 쿼리에서 명시적으로 선택한 필드만 사용할 수 있습니다.

참고 및 제한 사항

  • 하위 쿼리는 외부 쿼리에서 참조하는 필드를 반환해야 합니다.

  • 중첩 하위 쿼리는 지원되지 않습니다.

  • 하위 쿼리는 쿼리 실행 시간과 비용을 증가시킬 수 있습니다.

  • 상관 관계가 있는 하위 쿼리는 지원되지 않습니다.

  • 내부 쿼리 실행은 30초로 제한됩니다.

관련 명령