View a markdown version of this page

join - Amazon CloudWatch Logs

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

join

소스 로그 그룹의 로그 이벤트를 일치하는 필드를 기반으로 다른 로그 그룹 또는 쿼리 결과의 이벤트와 결합합니다.

join 명령을 사용하여 일치하는 요청 식별자 또는 트랜잭션 IDs.

구문

join type=<join_type> left=<left_alias> right=<right_alias> where <left_alias>.<field>=<right_alias>.<field> (SOURCE <right_log_group>)
파라미터

  • <right_log_group> - 조인할 보조 데이터 소스입니다.

  • <left_alias><right_alias> - 필드를 왼쪽(기본) 및 오른쪽(보조) 데이터 소스와 구분하는 별칭입니다.

  • where <field> - 조인 키로 사용되는 필드를 지정합니다. 필드는 두 데이터 소스 모두에 있어야 합니다.

  • type=<join_type> (선택 사항) - 조인 유형을 지정합니다. 유효값은 다음과 같습니다.

    • inner (기본값) - 일치하는 레코드만 반환합니다.

    • left - 기본 데이터 소스의 모든 레코드와 보조 데이터 소스의 일치하는 레코드를 반환합니다.

예제

예예제 1: API Gateway 요청을 Lambda 실행 로그와 상관관계 분석

이 예제에서는 API Gateway 액세스 로그를 Lambda 함수 로그와 조인하여 수신 요청을 백엔드 처리와 연관시키는 방법을 보여줍니다. 이는 end-to-end 요청 흐름 문제를 해결하고 특정 API 요청에 해당하는 Lambda 호출을 식별하는 데 유용합니다.

filter status >= 500 | join type=inner left=api right=lambda where api.requestId=lambda.requestId (SOURCE '/aws/lambda/my-function') | fields api.requestId, api.status, api.latency, lambda.duration, lambda.memoryUsed | sort api.latency desc

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

  1. API Gateway 액세스 로그 및 서버 오류 필터 쿼리(상태 >= 500)

  2. 두 로그 소스 모두에 표시되는 requestId 필드를 사용하여 Lambda 함수 로그와 조인합니다.

  3. 별칭(apilambda)을 사용하여 각 소스와 필드를 구분합니다.

  4. Lambda 실행 기간 및 메모리 사용량과 함께 API 지연 시간을 보여주는 결합된 정보를 반환합니다.

  5. API 지연 시간을 기준으로 결과를 정렬하여 가장 느린 요청을 식별합니다.

예예제 2: 마이크로서비스 전반의 분산 트랜잭션 추적

마이크로서비스 아키텍처에서 문제를 디버깅할 때 여러 서비스에서 트랜잭션을 추적해야 하는 경우가 많습니다. 이 예제에서는 공통 트랜잭션 ID를 사용하여 서로 다른 두 서비스의 로그를 조인하는 방법을 보여줍니다.

filter eventType = "ORDER_CREATED" | join type=left left=order right=payment where order.transactionId=payment.transactionId (SOURCE '/aws/lambda/payment-service') | filter payment.eventType = "PAYMENT_PROCESSED" or !ispresent(payment.eventType) | fields order.transactionId, order.orderId, order.customerId, payment.paymentStatus, payment.amount | filter payment.paymentStatus != "SUCCESS" or !ispresent(payment.paymentStatus)

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

  1. 주문 서비스의 주문 생성 이벤트로 시작합니다.

  2. left join를 사용하여 결제 레코드가 일치하지 않는 주문이라도 모든 주문을 포함합니다.

  3. 공유 transactionId 필드를 사용하여 결제 처리 이벤트에 참여합니다.

  4. 최종 결과를 필터링하여 결제 실패 또는 결제 레코드 누락이 있는 주문만 표시합니다.

왼쪽 조인은 생성되었지만 시스템 장애를 나타낼 수 있는 해당 결제 이벤트가 없었던 주문을 볼 수 있도록 하기 때문에 여기서 중요합니다.

동작

  • 기본 데이터 소스(왼쪽)가 먼저 처리됩니다.

  • 보조 데이터 소스는 지정된 조인 키를 사용하여 평가되고 일치됩니다.

  • 매칭은 조인 필드에서 등식 비교를 사용하여 수행됩니다.

  • 왼쪽 조인의 경우 기본 데이터 소스의 일치하지 않는 레코드는 보조 필드에 대해 null 값으로 유지됩니다.

참고 및 제한 사항

  • 등식(=) 조건만 지원됩니다.

  • 쿼리당 하나의 조인 명령만 지원됩니다.

  • 조인 키는 두 데이터 소스 모두에 존재해야 하며 호환되는 유형이어야 합니다.

  • 조인을 사용하는 쿼리는 더 많은 데이터를 스캔하고 더 많은 비용이 발생할 수 있습니다.

  • 쿼리 성능을 보장하기 위해 보조 데이터 소스의 고유 키 값 수는 50,000개로 제한됩니다.

  • 조인 오른쪽에 있는 하위 쿼리는 지원되지 않습니다.

관련 명령