디버그 사용

Apigee X 문서입니다.
Apigee Edge 문서 보기

이 섹션에서는 디버그 세션을 만들거나 관리하고 Apigee UI와 API를 사용하여 요청 및 응답 데이터를 확인하는 방법을 설명합니다.

오프라인 디버그를 사용하여 이전에 다운로드한 디버그 세션을 보고 분석할 수 있습니다.

디버그 세션 만들기

디버그 세션을 만들 때 API 또는 기타 외부 소스에서 생성된 요청에 대해 UI에서 요청 및 응답 데이터를 확인할 수 있습니다.

다음 섹션에 설명된 대로 Apigee UI 또는 API를 사용하여 디버그 세션을 만드세요.

새 프록시 편집기

새 프록시 편집기에서 디버그 세션을 만들려면 다음 안내를 따르세요.

  1. Apigee UI에 로그인합니다.
  2. 기본 뷰에서 개발 > API 프록시를 선택합니다.
  3. 디버그할 API 프록시를 선택합니다. 그러면 프록시 편집기 개요 뷰가 표시됩니다.

  4. 창 왼쪽 상단에 있는 디버그 탭을 클릭합니다.
  5. 디버그 창 오른쪽 상단에 있는 디버그 세션 시작을 클릭합니다. 그러면 디버그 세션 시작 대화상자가 표시됩니다.

    디버그 세션 시작 대화상자

    대화상자에서 다음을 수행합니다.

    1. 디버그 세션을 실행할 환경을 선택합니다.
    2. (선택사항) 필터 드롭다운 목록에서 만들려는 디버그 세션의 모든 트랜잭션에 적용할 필터를 선택합니다. 기본값은 None (All transactions)이며 디버그 데이터의 모든 트랜잭션을 포함합니다.

      필터 사용에 대한 자세한 내용은 디버그 세션에서 필터 사용을 참조하세요. 기본 제공 필터에 대한 자세한 내용은 사전 정의된 필터 사용을 참조하세요.

    3. 시작을 클릭합니다.

이제 Apigee UI에 디버그 세션 진행 중 뷰가 표시됩니다.

디버그 세션 진행 중

디버그 세션은 세션을 만든 후 10분 동안 요청을 기록합니다. 종료 시간에는 세션에 남은 시간이 표시됩니다.

디버그 세션을 위해 선택한 환경에서 디버깅 중인 프록시에 요청을 전송하기 전에는 디버그 창에 정보가 표시되지 않습니다.

요청을 보내면 왼쪽 창 하단에 표시됩니다.

디버그 세션 시작 대화상자

참고: 활성 디버그 세션 중에 Apigee UI에서 다른 세션을 시작할 수 있습니다. 이렇게 하려면 디버그 세션 시작을 다시 클릭하면 됩니다.

트랜잭션의 Gantt 차트 보기

디버그 뷰에서 트랜잭션 세부정보(요청 및 응답)를 보려면 위 이미지와 같이 트랜잭션 행을 클릭합니다.

그러면 오른쪽 창에 요청 및 응답의 단계를 보여주는 Gantt 차트가 표시됩니다.

오른쪽 창에 있는 트랜잭션 단계의 Gantt 차트

다이어그램의 가로축은 각 단계가 발생한 시간을 밀리초 단위로 나타냅니다. 각 단계는 단계의 시작 시간에서 종료 시간으로 확장되는 직사각형으로 표시됩니다.

디버그 창 오른쪽 하단의 뒤로다음 버튼을 사용하여 디버그 세션을 진행할 수 있습니다. 다음을 클릭합니다.

  • 뒤로를 클릭하여 선택한 행을 차트의 이전 단계로 이동합니다.
  • 다음을 클릭하여 선택한 행을 차트의 다음 단계로 이동합니다.

위에 표시된 예시에서 차트는 응답에서 실행되는 두 가지 정책을 표시합니다.

  • ResponsePayload
  • CORS 추가

이 단계 중 하나를 클릭하여 세부정보를 볼 수 있습니다. 예를 들어 CORS 추가 정책을 클릭하면 Gantt 차트 옆에 표시된 것과 같은 세부정보가 표시됩니다.

CORS 정책 추가 세부정보

그런 다음 정책 구성에서 항목을 변경하기로 결정한 경우 개발 뷰를 클릭하여 개발 뷰로 전환할 수 있으며, 개발 뷰에는 Response PostFlow에 똑같은 두 가지 정책이 표시됩니다.

디버그 세션과 관련된 개발 탭 보기

디버그 세션 공유

조직 액세스 권한 및 필요한 권한이 있는 다른 사용자와 디버그 세션을 공유할 수 있습니다. 공유하려면 디버그 세션을 볼 때 브라우저에 표시된 URL을 전송하면 됩니다. 이 링크는 디버그 세션이 생성된 후 24시간 동안만 유효합니다.

디버그 세션 다운로드

디버그 세션이 완료되면 나중에 오프라인 디버그 도구에서 분석할 수 있도록 다운로드할 수 있습니다. 이렇게 하려면 왼쪽 창에서 세션 다운로드를 클릭합니다.

디버그 세션 다운로드

참고로, 디버그 세션은 완료된 후 24시간 이내에 삭제되므로 해당 시간 이후에 디버그 세션을 보려면 미리 다운로드해야 합니다.

디버그 세션을 다운로드할 때 다운로드 파일 이름은 'debug-{session ID}.json' 형식입니다. 여기서 {session id}는 디버그 세션의 ID입니다. 그러나 원하는 경우 파일 이름을 변경할 수 있습니다.

기본 프록시 편집기

기본 프록시 편집기에서 디버그 세션을 만들려면 다음 안내를 따르세요.

  1. Apigee UI에 로그인합니다.
  2. 기본 뷰에서 API 프록시를 선택합니다.
  3. 디버그할 API 프록시를 선택합니다.

    개요 탭이 표시됩니다.

  4. 페이지 오른쪽 상단의 디버그 탭을 클릭합니다.

    탭

    디버그 뷰에 다음이 표시됩니다.

    디버그 세션 시작, 최근 디버그 세션, 요청 전송 창이 있는 디버그 뷰

  5. 디버그 세션 시작 패널에서 다음을 수행합니다.
    1. Env 드롭다운 목록에서 디버깅할 API 프록시의 환경 + 버전 번호를 선택합니다.
    2. 다음 예시는 디버그 세션 시작 패널을 보여줍니다.

      디버그 세션 창 시작

    3. (선택사항) 필터 드롭다운 목록에서 만들려는 디버그 세션의 모든 트랜잭션에 적용할 필터를 선택합니다. 기본값은 None이며 디버그 데이터의 모든 트랜잭션을 포함합니다.

      필터 사용에 대한 자세한 내용은 디버그 세션에서 필터 사용을 참조하세요. 기본 제공 필터에 대한 자세한 내용은 사전 정의된 필터 사용을 참조하세요.

    4. 디버그 세션 시작을 클릭합니다.

      Apigee UI는 이제 디버그 세부정보 패널에서 ID를 포함한 최신 디버그 세션에 대한 세부정보를 표시합니다.

      UI에서 디버그 세션을 생성했지만 수집할 데이터가 있기 전에 요청을 보내야 합니다.

      디버그 세부정보 패널에서 다음을 수행할 수 있습니다.

      아이콘 함수 설명
      다운로드 아이콘 다운로드 오프라인에서 확인할 수 있는 활성 세션의 디버그 데이터를 다운로드합니다.
      돌아가기 아이콘 반납 다른 디버그 세션을 시작할 수 있는 이전 패널로 돌아갑니다. 현재 디버그 세션은 제한 시간 또는 트랜잭션 수에 도달할 때까지 계속됩니다.
      아이콘 삭제 삭제 현재 선택한 디버그 세션의 데이터를 삭제합니다. 이렇게 하면 세션의 데이터가 삭제되지만 세션은 중지되지 않습니다.

      UI로 시작하는 디버그 세션은 API로 시작한 세션과 달리 기본 제한 시간 한도가 10분입니다.

      디버그 세션 시작을 클릭하는 즉시 시계 실행이 시작되므로 수집하는 데이터 양을 최소화하기 위해 디버그 세션 시작을 클릭하기 전 다음 단계 이후까지 기다리도록 선택할 수 있습니다.

  6. 요청 전송 패널에서 다음을 수행합니다.
    1. URL 필드에 요청을 보낼 엔드포인트를 입력합니다. 선택적으로 URL에 쿼리 문자열 매개변수를 추가합니다. GET 이외의 요청은 제출할 수 없습니다.
      엔드포인트 URL을 찾는 방법
      1. 관리 > 환경 > 그룹으로 이동합니다.
      2. URL은 디버그 세션을 실행할 각 환경의 호스트 이름입니다.
    2. 요청 전송 패널은 UI 기반 요청의 데이터만 보여줍니다. 하지만 이 디버그는 UI에서 시작되지 않은 요청에 대한 데이터도 기록합니다.

    3. 보내기를 클릭합니다.

      Apigee가 지정된 URL로 요청을 보냅니다. 보내기를 클릭할 때마다 Apigee UI가 디버그 세부정보 패널에 요청을 기록합니다.

      다음 예시에서는 여러 가지 성공 요청(200의 HTTP 상태 코드 생성)을 보여줍니다.

      캡처된 디버그 요청

      복사를 클릭하여 이후 참조 또는 쿼리를 위한 디버그 ID를 복사합니다.

      또한 UI는 요청 전송 패널의 트랜잭션 지도 및 단계 세부정보 섹션에 디버그 데이터를 표시하고, 다음 예시로 보여주는 것처럼 프록시 엔드포인트, 요청 헤더, 요청 콘텐츠, 속성 섹션을 채웁니다.

      캡처된 디버그 요청

      요청 전송 뷰의 단계, 트랜잭션 지도, 기타 섹션에 대한 자세한 내용은 디버그 읽기 방법을 참조하세요.

    이제 디버그 세션이 활성화되고 필터링되지 않는 한 모든 요청에 대한 데이터를 기록합니다. 세션은 제한 시간에 도달하거나 세션에 기록된 요청 수를 초과할 때까지 활성 상태로 유지됩니다.

  7. UI에서 개수에 관계없이 디버그 세션을 만들 수 있습니다. 자세한 내용은 다른 디버그 세션 시작을 참조하세요.

UI에서 다른 디버그 세션 시작

활성 디버그 세션 중에 Apigee UI에서 다른 세션을 시작할 수 있습니다. 이렇게 하려면 디버그 세부정보 패널에서 뒤로 화살표 아이콘()을 클릭합니다.

디버그 세션 시작 패널로 돌아가는 뒤로 화살표

UI가 새 디버그 세션을 시작할 수 있는 디버그 세션 시작 패널로 돌아갑니다.

디버그 세션은 언제 종료되나요?

활성 디버그 세션을 단순히 중지할 수는 없습니다. 하지만 디버그 세션 데이터 삭제에 설명된 대로 활성 세션의 데이터를 삭제할 수 있습니다.

디버그 세션을 만들 때 다음 두 가지 속성이 종료 시점을 결정합니다.

  • 제한 시간: 세션 중에 데이터를 수집하는 시간입니다. 기본 길이는 UI 또는 API를 통해 세션을 시작한 방법에 따라 다릅니다. 최댓값은 600초(또는 10분)입니다.
  • 수: 메시지 프로세서당 하나의 세션에 기록된 최대 요청 수입니다. 대부분의 클러스터에 있는 메시지 프로세서 수는 가변적이므로 수의 영향을 예측할 수 없습니다. Apigee에서는 이 설정을 맞춤설정하는 것을 권장하지 않습니다.

제한 시간 또는 수에 도달하면 해당 메시지 프로세서의 디버그 세션이 종료됩니다.

디버그 세션의 상태를 설명하는 데 사용되는 용어는 다음과 같습니다.

  • 활성 세션은 아직 제한 시간에 도달하지 않았거나 카운트를 초과한 디버그 세션입니다. 활성 세션에서는 필터링되지 않은 요청에 대한 요청 데이터를 계속 기록합니다.
  • 완료된 세션은 제한 시간에 도달하거나 디버그 수를 초과한 디버그 세션입니다. 완료된 세션에서는 더 이상 새 요청에 대한 데이터를 기록하지 않으며 해당 데이터는 세션이 종료된 후 24시간 내에 삭제됩니다.

디버그 읽기 방법

디버그 도구에는 트랜잭션 지도와 단계 세부정보라는 2가지 주요 부분이 있습니다.

  • 트랜잭션 지도는 아이콘을 사용하여 정책 실행, 조건부 단계, 전환을 포함하여 API 프록시 트랜잭션 중에 발생하는 각 주요 단계를 표시합니다. 아이콘 위로 마우스를 가져가면 요약 정보가 표시됩니다. 요청 흐름 단계는 트랜잭션 지도 상단에 표시되고 응답 흐름 단계는 하단에 표시됩니다.
  • 도구의 단계 세부정보 섹션에는 설정되거나 읽은 변수, 요청 및 응답 헤더 등 프록시의 내부 처리에 대한 정보가 표시됩니다. 아이콘을 클릭하면 해당 단계의 단계 세부정보가 표시됩니다.

다음은 주요 프록시 처리 세그먼트 라벨이 지정된 샘플 디버그 도구 지도입니다.

디버그 도구의 트랜잭션 지도

프록시 포스트 클라이언트 흐름을 시작하기 위한 프록시 응답을 시작하기 위한 대상 응답을 시작하기 위한 대상 응답을 시작하기 위한 프록시 요청 시작을 보여주는 디버그 다이어그램

트랜잭션 지도 범례

다음 표에서는 트랜잭션 지도에 표시되는 아이콘의 인텐트를 설명합니다. 이 아이콘은 프록시 흐름 전반에서 각각의 주요 처리 단계를 표시합니다.

트랜잭션 지도 아이콘

클라이언트 앱 아이콘 API 프록시의 ProxyEndpoint에 요청을 보내는 클라이언트 앱입니다.
전환 엔드포인트 아이콘 원은 프록시 흐름에서 전환 엔드포인트를 표시합니다. 즉, 클라이언트에서 요청이 수신될 때, 요청이 대상에 도착할 때, 응답이 대상에서 되돌아올 때, 응답이 클라이언트에 다시 반환될 때 이 요청에 포함됩니다.
흐름 세그먼트 아이콘

큰 막대는 API 프록시 흐름에서 흐름 세그먼트의 시작을 나타냅니다. 흐름 세그먼트는 ProxyEndpoint 요청, TargetEndpoint 요청, TargetEndpoint 응답, ProxyEndpoint 응답입니다. 세그먼트에는 PreFlow, 조건부 흐름, PostFlow가 포함됩니다.

자세한 내용은 흐름 구성을 참조하세요.

분석 아이콘

백그라운드에서 애널리틱스 작업이 발생했음을 나타냅니다.

true 조건 아이콘

true로 평가되는 조건부 흐름입니다. 조건부 흐름 소개는 흐름 구성을 참조하세요.

일부 조건은 Apigee에서 생성됩니다. 예를 들어 다음은 Apigee가 ProxyEndpoint에서 오류가 발생했는지 확인하는 데 사용하는 표현식입니다.

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))
false 조건 아이콘

false로 평가되는 조건부 흐름입니다. 조건부 흐름 소개는 흐름 구성을 참조하세요.

일부 조건은 Apigee에서 생성됩니다. 예를 들어 다음은 Apigee가 TargetEndpoint에서 오류가 발생했는지 확인하는 데 사용하는 표현식입니다.

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

xml-json 아이콘

할당량 아이콘

정책. 각 정책 유형에는 고유한 아이콘이 있습니다. 이는 AssignMessage 정책용입니다. 이 아이콘을 통해 정책이 올바른 순서로 실행되었는지 여부와 정책의 성공 여부를 확인할 수 있습니다. 정책 아이콘을 클릭하여 실행 결과 및 예상 결과를 확인할 수 있습니다. 예를 들어 메시지가 제대로 변환되었는지 또는 캐시되고 있는지 확인할 수 있습니다.

정책이 올바르게 실행되면 체크표시로 명확하게 표시됩니다. 오류가 발생하면 아이콘에 빨간색 느낌표가 표시됩니다.

서버 아이콘 API 프록시에서 호출하는 백엔드 대상입니다.
밀리초 아이콘 시간 행은 처리를 완료하는 데 걸리는 시간(밀리초)을 나타냅니다. 경과된 시간 세그먼트를 비교하면 API 호출 속도를 저하시키는, 가장 오래 걸리는 정책을 격리하는 데 도움이 됩니다.
epsilon 아이콘 Epsilon은 1밀리초보다 작은 시간 범위를 나타냅니다.
사용 중지 아이콘

중지되었습니다. 정책이 사용 중지되면 정책 아이콘에 표시됩니다. 정책은 공개 API로 사용 중지할 수 있습니다. API 프록시 구성 참조를 확인하세요.

오류 아이콘 오류입니다. 정책 단계 조건이 false로 평가될 때(흐름 변수 및 조건 참조) 정책 아이콘에 표시되거나 RaiseFault 정책이 실행될 때 RaiseFault 정책 아이콘에 표시됩니다.
건너뛰기 아이콘 건너뜀. 단계 조건이 false로 평가되어 정책이 실행되지 않은 경우 정책 아이콘에 표시됩니다. 자세한 내용은 흐름 변수 및 조건을 참조하세요.

단계 세부정보 이해하기

도구의 단계 세부정보 부분은 각 처리 단계에서 프록시 상태에 대해 많은 정보를 제공합니다. 단계 세부정보에서 제공하는 정보는 다음과 같습니다. 디버그 도구의 아이콘을 클릭하여 선택한 단계의 세부정보를 확인하거나, 다음/뒤로 버튼을 사용하여 한 단계에서 다른 단계로 이동합니다.

단계 세부정보 설명
프록시 엔드포인트 실행을 위해 선택된 ProxyEndpoint 흐름을 나타냅니다. API 프록시에는 여러 개의 명명된 프록시 엔드포인트가 있을 수 있습니다.
변수

정책에서 읽고 값이 할당된 흐름 변수를 나열합니다. 흐름 변수 사용도 참조하세요.

참고:

  • 등호(=)는 변수에 할당된 값을 나타냅니다.
  • 줄이 그어진 등호(≠)는 읽기 전용이거나 정책 실행에 오류가 발생해 변수에 값이 할당되지 않은 것을 나타냅니다.
  • 빈 필드는 변수 값을 읽었음을 나타냅니다.
요청 헤더 HTTP 요청 헤더를 나열합니다.
새로운 콘텐츠 요청하기 HTTP 요청 본문을 표시합니다.
속성 속성은 API 프록시의 내부 상태를 나타냅니다. 기본적으로 표시되지 않습니다.
대상 엔드포인트 실행을 위해 선택된 TargetEndpoint를 나타냅니다.
응답 헤더 HTTP 응답 헤더를 나열합니다.
응답 콘텐츠 HTTP 응답 본문을 표시합니다.
PostClientFlow 요청 클라이언트 앱에 요청이 반환된 후 실행되는 PostClientFlow에 대한 정보를 표시합니다. MessageLogging 정책만 PostClientFlow에 연결할 수 있습니다. PostClientFlow는 주로 현재 응답 메시지의 시작 및 종료 타임스탬프 사이의 시간 간격을 측정하는 데 사용됩니다.

Apigee API

API를 사용하여 디버그 세션을 만들려면 다음 리소스로 POST 요청을 발행합니다.

https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/debugsessions

선택적으로 다음 작업을 수행할 수 있습니다.

다음 예시에서는 API를 사용하여 디버그 세션을 만드는 방법을 보여줍니다.

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions" \
  -X POST \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

다음은 응답의 예시입니다.

{
  "name":"56382416-c4ed-4242-6381-591bbf2788cf",
  "validity":300,
  "count":10,
  "tracesize":5120,
  "timeout":"600"
}

세션 시간 또는 최대 요청 수에 도달할 때까지 API 프록시에 대한 후속 요청이 평가되어 디버그 세션 데이터에 저장될 수 있습니다.

자세한 내용은 디버그 세션 API 만들기를 참조하세요.

API를 사용하여 디버그 세션의 길이 설정하기

API를 사용하여 디버그 세션의 길이를 설정하려면 디버그 세션 만들기 요청에 다음을 페이로드로 포함합니다.

{
  "timeout":"debug_session_length_in_seconds"
}

다음 예시에서는 길이가 42초인 디버그 세션을 만듭니다.

curl https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions"
  -X "POST" \
  -H "Authorization: Bearer $TOKEN" \
  -d ' {
    "timeout":"42"
  } '

디버그 세션 만들기 요청에서만 세션의 timeout을 설정할 수 있습니다. 세션을 만든 후에는 세션 시간을 변경할 수 없습니다.

timeout의 기본값은 300(5분)입니다. 최댓값은 600초(10분)입니다.

디버그 도구로 디버깅

디버그를 사용하면 API 프록시에 대한 많은 내부 세부정보를 볼 수 있습니다. 예를 들면 다음과 같습니다.

  • 어떤 정책이 제대로 실행되고 있는지 또는 실패하고 있는지 여부를 한눈에 파악할 수 있습니다.
  • 애널리틱스 대시보드 중 하나를 통해 API 중 하나에서 비정상적인 성능 저하가 발생하는 것을 알게 되었다면, 이제 디버그를 사용하여 병목 현상이 발생하는 위치를 확인할 수 있습니다. 디버그는 각 처리 단계를 완료하는 데 걸리는 시간(밀리초)을 제공합니다. 한 단계가 너무 오래 걸리면 시정 조치를 취할 수 있습니다.
  • 백엔드로 전송되는 헤더를 확인하고, 정책에 의해 설정된 변수를 보는 등의 작업을 할 수 있습니다.
  • 기본 경로를 확인하면 정책이 올바른 서버로 메시지를 라우팅하는지 확인할 수 있습니다.

디버그 세션에서 데이터 필터링

디버그 세션을 만들 때 Apigee가 원하는 데이터만 반환하도록 해당 세션에 필터를 추가하면 됩니다. 필터는 Apigee가 요청 및 응답 메시지에 대해 평가하여 디버그 데이터가 디버그 세션에 포함되는지 확인하는 조건문입니다. 예를 들어 599 미만의 HTTP 응답 코드로 모든 요청을 필터링하거나 요청의 값을 커스텀 변수와 비교할 수 있습니다.

다음에 유의하세요.

  • 필터링되어 디버그 세션에 포함되지 않은 요청은 디버그 세션의 최대 트랜잭션 수에 포함되지 않습니다.
  • Apigee는 쿼리 문자열에 필터 추가를 지원하지 않습니다.
  • 세션이 시작되면 디버그 세션에 필터를 추가할 수 없습니다. 필터를 추가하려면 디버그 세션을 만들어야 합니다.

필터 사용

다음 섹션에 설명된 대로 Apigee UI 또는 API를 사용하여 디버그 세션을 만들 때 필터를 사용합니다.

Apigee UI

UI에서 디버그 세션을 만들 때, 필터 드롭다운 목록에서 사전 정의된 필터를 선택하여 디버그 세션 시작 패널에 적용하거나, 커스텀 필터를 선택하고 필터 구문을 사용하여 고유 필터를 빌드할 수 있습니다.

Apigee API

API를 사용하여 필터가 포함된 디버그 세션을 만들려면 디버그 세션 생성 요청에 다음을 페이로드로 포함합니다.

{
  "filter":"filter_body"
}

필터 구성에 대한 자세한 내용은 필터 구문을 참조하세요.

다음 예시에서는 A 헤더가 42와 일치하고 B 헤더가 43인 트랜잭션만 포함하는 디버그 세션을 만들거나, 오류 코드가 ExpectedEOF입니다.

curl -H "Authorization: Bearer $TOKEN" -X "POST"
  https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions
  -d ' {
    "filter":"(request.header.A == '42' && request.header.B == '43') || fault.code == 'jsonparser.ExpectedEOF'"
  } '

디버그 세션 생성 요청에서만 필터를 정의할 수 있습니다. 기존 디버그 세션에 필터를 추가할 수 없으며 활성 디버그 세션에서 필터를 삭제할 수 없습니다.

필터 구문

필터는 조건 참조에 설명된 대로 Apigee 조건에 사용되는 것과 동일한 구문을 지원합니다. 여기에는 다음이 포함됩니다.

또한 필터는 흐름 변수 참조에 설명된 모든 흐름 변수와 커스텀 변수에 액세스할 수 있습니다. 다음 예시에서는 필터에서 사용할 수 있는 일부 가능한 흐름 변수만 보여줍니다.

# Response codes:
  response.status.code <= 599
  response.status.code >=301 && response.status.code <=420

# Requests/responses:
  request.verb == "GET"
  request.header.A == 'B' || request.queryparam.X == 'Y'

# Query parameters:
  request.queryparam.myparam == 'fish'
  (request.queryparam.param1 == 'X' || request.queryparam.param2 == 'Y') && request.queryparam.param3 == 'Z'

# Faults:
  fault.code != 'messaging.runtime.RouteFailed'
  fault.name == 'IPDeniedAccess'

커스텀 변수 사용에 대한 자세한 내용은 Apigee 커뮤니티Apigee에서 커스텀 속성을 사용하는 방법을 참조하세요.

사전 정의된 UI 필터

Apigee UI는 자체 커스텀 필터를 작성할 필요가 없도록 공통 필터 세트를 제공합니다. 다음 표에는 사전 정의된 필터가 요약되어 있습니다.

필터 이름 설명
Response Time Greater Than

지연 시간 문제가 있는지 확인합니다.

  • target.duration는 대상에서 요청을 송수신하는 데 걸리는 밀리초 단위의 대상 지연 시간 또는 시간의 양입니다(target.received.end.timestamptarget.sent.start.timestamp 사이의 차이에 따라 계산됨)
  • client.duration는 클라이언트에서 요청을 송수신하는 데 걸리는 밀리초 단위의 클라이언트 지연 시간 또는 시간의 양입니다(client.received.end.timestampclient.sent.start.timestamp 사이의 차이에 따라 계산됨)

예를 들면 다음과 같습니다.


target.duration > 420 && client.duration > 1000

자세한 내용은 흐름 변수 참조에서 clienttarget을 참조하세요.

Response Code

HTTP 응답 코드가 지정된 값과 일치하는지 확인합니다. 예를 들면 다음과 같습니다.


response.status.code <= 599
Header

지정된 요청 헤더가 지정된 값과 동일한지 확인합니다. 예를 들면 다음과 같습니다.


request.header.cache-control.1 == "16544"
Path

요청이 지정된 경로와 일치하는지 확인합니다. 값에서 와일드 카드 일치를 사용할 수 있습니다. 예를 들면 다음과 같습니다.


request.path == /myproxy/customer/4*
Query Param

지정된 요청 쿼리 매개변수가 지정된 값과 동일한지 확인합니다. 예를 들면 다음과 같습니다.


request.queryparam.lang == "language:en-us"
Custom

자체 표현식을 삽입할 수 있습니다. 흐름 변수 참조의 모든 객체 및 조건 참조의 구문을 사용할 수 있습니다. 또한 커스텀 변수를 사용할 수도 있습니다.

커스텀 필터 만들기에 대한 자세한 내용은 필터 구문을 참조하세요.

 

디버그 세션 보기

Apigee는 디버그 세션 데이터를 24시간동안 저장합니다. 이 값을 구성할 수 없습니다. 24시간 후에는 데이터를 더 이상 사용할 수 없습니다. 그 전에는 디버그 세션을 볼 수 있습니다.

다음 섹션에 설명된 대로 Apigee UI 또는 API를 사용하여 최근 디버그 세션을 확인하세요.

새 프록시 편집기

새 프록시 편집기를 사용하여 디버그 세션을 보려면 다음 안내를 따르세요.

  1. Apigee UI에 로그인합니다.
  2. 기본 뷰에서 API 프록시를 선택합니다.
  3. 디버그할 프록시를 선택합니다.
  4. 디버그 탭을 클릭합니다.
  5. 최근 디버그 세션에는 사용 가능한 디버그 세션 목록이 표시됩니다.
  6. 보려는 세션의 링크를 클릭합니다.

기본 프록시 편집기

기본 프록시 편집기를 사용하여 디버그 세션을 보려면 다음 안내를 따르세요.

  1. Apigee UI에 로그인합니다.
  2. 기본 뷰에서 API 프록시를 선택합니다.
  3. 디버그할 프록시를 선택합니다.
  4. 배포 뷰 오른쪽 상단에 있는 디버그 탭을 클릭합니다.
  5. 최근 디버그 세션 패널에서 다음을 수행합니다.
    1. Env 드롭다운 목록에서 디버그 세션을 확인하려는 API 프록시 환경을 선택합니다.
    2. Rev 드롭다운 목록에서, 디버그 세션을 볼 API 프록시의 버전 번호를 선택합니다.

    Apigee UI에 사용 가능한 디버그 세션 목록이 표시됩니다.

  6. 보려는 세션의 링크를 클릭합니다.

    Apigee UI는 디버그 세션을 로드하고 요청 전송 패널을 디버그 데이터로 채웁니다.

UI에서 뷰 옵션 선택

Apigee UI에서 디버그 세션의 뷰 옵션을 선택할 수 있습니다.

뷰 옵션 목록

옵션 설명
사용 중지된 정책 표시 사용 중지된 정책을 표시합니다. 정책은 공개 API로 사용 중지할 수 있습니다. API 프록시 구성 참조를 확인하세요.
건너뛰기한 단계 표시 건너뛴 모든 단계를 표시합니다. 단계 조건이 false로 평가되어 정책이 실행되지 않은 경우 건너뛰는 단계가 발생합니다. 자세한 내용은 흐름 변수가 있는 조건을 참조하세요.
모든 FlowInfo 표시 흐름 세그먼트 내에서 전환을 나타냅니다.
선택한 단계 자동 비교 선택한 단계를 이전 단계와 비교합니다. 선택한 단계만 보려면 이 기능을 해제합니다.
변수 표시 읽거나 값이 할당된 변수를 표시하거나 숨깁니다.
속성 표시 속성은 API 프록시의 내부 상태를 나타냅니다. (기본적으로 숨겨져 있습니다.)

Apigee API

API로 다음과 같은 작업이 가능합니다.

API를 사용하여 모든 디버그 세션 보기

환경에서 API 프록시 버전에 대해 정의된 최근 디버그 세션을 모두 보려면 다음 리소스에 대해 GET 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions

선택적으로, 다음 쿼리 매개변수 중 하나를 지정하여 반환되는 데이터 양을 제어할 수 있습니다.

  • pageSize: 나열할 디버그 세션의 최대 개수입니다. 페이지 크기는 기본적으로 25로 설정됩니다.
  • pageToken: 이전 호출에서 반환된 페이지 토큰은 다음 페이지를 검색하는 데 사용할 수 있습니다.

다음 예시에서는 test 환경에서 helloworld API 프록시 버전 1의 디버그 세션을 보는 방법을 보여줍니다.

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

응답에는 다음 예시와 같이 현재 활성 디버그 세션 목록이 포함된 sessions 객체가 포함됩니다.

{
  "sessions": [
    {
      "id": "a423ac73-0902-4cfa-4242-87a353a84d87",
      "timestamp_ms": 1566330186000
    },
    {
      "id": "f1eccbbe-1fa6-2424-83e4-3d063b47728a",
      "timestamp_ms": 1566330286000
    }
  ]
}

트랜잭션이 최소한 한 개 이상 있는 디버그 세션만 응답에 포함됩니다. 트랜잭션이 하나도 없는 디버그 세션은 이 목록에 포함되지 않습니다.

자세한 내용은 디버그 세션 API 나열을 참조하세요.

API를 사용하는 디버그 세션에 대한 모든 트랜잭션 보기

디버그 세션의 트랜잭션 목록을 보려면 다음 리소스에 대한 GET 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

여기서 debugsession디버그 세션을 확인할 때 반환되는 디버그 세션의 ID입니다.

다음 예시에서는 test 환경에서 helloworld API 버전 1의 디버그 세션 트랜잭션을 확인하는 방법을 보여줍니다.

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

응답에는 다음 예시와 같이 트랜잭션 ID 배열이 포함됩니다.

[
  "myorg-test-ver-5qxdb-64",
  "myorg-test-ver-5qxdb-65",
  "myorg-test-ver-5qxdb-66",
  "myorg-test-ver-5qxdb-67",
  "myorg-test-ver-5qxdb-68",
  "myorg-test-ver-5qxdb-69",
  "myorg-test-ver-5qxdb-70",
  "myorg-test-ver-5qxdb-71",
  "myorg-test-ver-5qxdb-72"
]

자세한 내용은 디버그 세션 데이터 API 나열을 참조하세요.

API를 사용하는 디버그 세션에 대한 트랜잭션 데이터 보기

디버그 세션의 트랜잭션 데이터를 보려면 다음 리소스에 대한 GET 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/debugsessions/{debugsession}/data/{transactionId}

여기서 debugsession디버그 세션을 확인할 때 반환된 디버그 세션의 ID이며 transactionId디버그 세션에 대한 트랜잭션의 목록을 확인할 때 반환되는 트랜잭션 ID입니다.

디버그 세션 중에 저장된 트랜잭션 데이터는 JSON 형식으로 지정됩니다. 오프라인 디버그 도구에서 이 데이터를 로드할 수 있습니다.

다음 예시에서는 test 환경에서 helloworld API 버전 1의 디버그 세션에 대한 트랜잭션 데이터를 다운로드하는 방법을 보여줍니다.

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data/myorg-test-ver-5qxdb-64" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

응답은 데이터 구조 다운로드에 설명된 대로 지정된 트랜잭션의 데이터가 포함된 JSON 페이로드로 구성됩니다.

디버그 데이터에는 고유 JSON 형식의 각 흐름 일부에 대한 요청 및 응답의 모든 정보가 포함되어 있습니다. 이 데이터를 저장하고 오프라인 디버그 도구에서 나중에 사용할 수 있습니다.

세션이 종료되기 전에 세션에 추가된 요청이 없는 경우 응답은 다음과 같습니다.

[]

자세한 내용은 디버그 세션 데이터 API 가져오기를 참조하세요.

디버그 세션 데이터 다운로드하기

오프라인 보기용으로 원시 디버그 결과 파일을 다운로드할 수 있습니다. 다운로드한 파일에는 모든 헤더, 변수, 정책의 콘텐츠를 포함하여 디버그 세션의 전체 세부정보가 표시됩니다.

디버그 세션 데이터는 UI에서 24시간 동안만 다운로드하거나 볼 수 있습니다. 그 후 Apigee는 세션 데이터를 삭제합니다.

새 프록시 편집기

새 프록시 편집기에서 현재 디버그 세션을 다운로드하려면 디버그 뷰의 왼쪽 창에서 세션 다운로드를 클릭하세요.

디버그 세션 다운로드

참고로, 디버그 세션은 완료된 후 24시간 이내에 삭제되므로 해당 시간 이후에 디버그 세션을 보려면 미리 다운로드해야 합니다.

기본 프록시 편집기

기본 프록시 편집기를 사용하여 현재 디버그 세션의 데이터를 다운로드하려면 다음 안내를 따르세요.

  • 활성 세션: 디버그 세부정보 패널에서 다운로드 아이콘(다운로드 아이콘)을 클릭합니다.
  • 이전 세션: 디버그 세션 보기에 설명된 대로 최근 디버그 세션 패널에서 세션 이름을 클릭합니다. 그런 다음 디버그 세부정보 패널에서 다운로드 아이콘를 클릭합니다.

Apigee API

Apigee API를 사용하여 현재 디버그 세션의 모든 트랜잭션 ID를 보려면 다음 명령어를 입력합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data

여기서 SESSION_ID는 다운로드할 디버그 세션의 ID입니다.

디버그 세션의 트랜잭션 ID 나열을 참조하세요.

Apigee API를 사용하여 트랜잭션의 디버그 데이터를 가져오려면 다음 명령어를 입력합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/apis/PROXY/revisions/REV/debugsessions/SESSION_ID/data/TRANSACTION_ID

데이터 구조 다운로드

Apigee UI와 Apigee API에 대한 디버그 세션 데이터의 다운로드 구조는 다릅니다.

Apigee UI

Apigee UI를 사용하여 데이터를 다운로드하면 데이터 구조는 다음과 같습니다.

  • 전체 세션의 모든 트랜잭션 포함
  • 트랜잭션을 Messages 배열에 저장
  • 세션에 관한 메타데이터 포함(DebugSession 객체로)

Apigee API

Apigee API를 사용하여 한 번에 전체 세션의 데이터를 확인할 수는 없습니다. 디버그 세션 보기에 설명된 대로 API를 사용하여 개별 트랜잭션 데이터만 볼 수 있습니다.

예를 들면 다음과 같습니다.

{
  "completed": true,
  "point": [
    ...
  ...
}

데이터 예시 다운로드

다음 예시에서는 다운로드한 데이터의 DebugSession 메타데이터 객체를 강조표시합니다. 이 객체는 세션의 트랜잭션을 포함하는 Messages 배열 뒤에 따라옵니다.

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": [
    {
      "completed": true,
      "point": [
        {
          "id": "Paused"
        },
        {
          "id": "Resumed"
        },
        {
          "id": "StateChange",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "To",
                    "value": "REQ_HEADERS_PARSED"
                  },
                  {
                    "name": "From",
                    "value": "REQ_START"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            },
            {
              "ActionResult": "RequestMessage",
              "headers": [
                {
                  "name": "accept",
                  "value": "*/*"
                },
                {
                  "name": "accept-encoding",
                  "value": "gzip,gzip,deflate,br"
                },
                {
                  "name": "content-length",
                  "value": "0"
                },
                {
                  "name": "host",
                  "value": "myorg.example.domain.net"
                },
                {
                  "name": "user-agent",
                  "value": "Google-Apigee"
                },
                {
                  "name": "x-b3-sampled",
                  "value": "0"
                },
                {
                  "name": "x-b3-spanid",
                  "value": "d4ee579206759662"
                },
                {
                  "name": "x-b3-traceid",
                  "value": "adc1e171777c237dd4ee579206759662"
                },
                {
                  "name": "x-forwarded-for",
                  "value": "66.102.8.98"
                },
                {
                  "name": "x-forwarded-proto",
                  "value": "https"
                },
                {
                  "name": "x-request-id",
                  "value": "54e05cba-4242-4490-4242-60c45c156f90"
                }
              ],
              "uRI": "/myproxy",
              "verb": "GET"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "environment.name",
                    "value": "prod"
                  },
                  {
                    "name": "environment.qualifiedname",
                    "value": "myorg__prod"
                  },
                  {
                    "name": "environment.orgname",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "organization.name",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "apiproxy.qualifiedname",
                    "value": "myproxy__1"
                  },
                  {
                    "name": "apiproxy.basepath",
                    "value": "/"
                  },
                  {
                    "name": "apiproxy.revision",
                    "value": "1"
                  },
                  {
                    "name": "apiproxy.name",
                    "value": "myproxy"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        ...
      ...
    }
  ]
}

디버그 세션에 요청이 포함되지 않은 경우 다음 예시와 같이 Message 배열이 비어 있습니다.

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": []
}

디버그 세션의 데이터 삭제하기

다음 섹션에 설명된 대로 Apigee UI 또는 API를 사용하여 디버그 세션의 데이터를 삭제하세요.

새 프록시 편집기

새 프록시 편집기에서 디버그 세션을 삭제하려면 다음 안내를 따르세요.

  1. 삭제할 세션의 행을 선택합니다.
  2. 행 끝에 있는 점 3개로 된 메뉴를 클릭하고 삭제를 선택합니다.

기본 프록시 편집기

디버그 세션의 디버그 세부정보 패널에서 아이콘 삭제를 클릭합니다.

Apigee API

API를 사용하여 모든 디버그 세션 데이터를 삭제하려면 다음 리소스에 대한 DELETE 요청을 실행하세요.

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

여기서 debugsession디버그 세션을 확인할 때 반환되는 디버그 세션의 ID입니다.

다음 예시에서는 test 환경에서 helloworld API 버전 1의 디버그 세션 데이터를 삭제하는 방법을 보여줍니다.

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
  -X DELETE \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

성공한 경우 응답 본문은 비어 있습니다.

디버그 세션 데이터는 24시간 동안만 유지됩니다. 이 시간 전에 명시적으로 삭제하지 않으면 Apigee가 자동으로 삭제합니다.