InfoGrab DocsInfoGrab Docs

GraphQL 로그 읽기

요약

Kibana를 사용하여 GraphQL 쿼리 로그를 필터링합니다. Kibana에서 두 가지 종류의 GraphQL 로그를 검사할 수 있습니다: 요청 내에서 실행된 각 GraphQL 쿼리의 로그. 쿼리 멀티플렉싱으로 인해 여러 쿼리가 실행될 수 있는 전체 요청의 로그.

Kibana를 사용하여 GraphQL 쿼리 로그를 필터링합니다. @gitlab.com 이메일 주소로 Kibana에 로그인하세요.

Kibana에서 두 가지 종류의 GraphQL 로그를 검사할 수 있습니다:

  • 요청 내에서 실행된 각 GraphQL 쿼리의 로그.

  • 쿼리 멀티플렉싱으로 인해 여러 쿼리가 실행될 수 있는 전체 요청의 로그.

각 GraphQL 쿼리의 로그#

멀티플렉스 쿼리에서는 각 개별 쿼리가 별도로 기록됩니다. 서브컴포넌트 필터링을 사용하여 이러한 로그를 검사할 수 있습니다. 이 필터가 활성화된 Kibana를 방문하거나 다음 단계를 통해 서브컴포넌트 필터를 설정하세요:

  • 필터 추가:

Filter: json.subcomponent

  • Operator: is

  • Value: graphql_json

  • Refresh를 선택하세요.

사이드바의 Available fields 섹션에서 Kibana 필드를 선택하여 로그 테이블에 칼럼을 추가하거나, 이미 Kibana 필드 세트가 선택된 이 뷰를 방문할 수 있습니다.

관련 Kibana 필드 일부는 다음과 같습니다:

Kibana 필드 설명
json.operation_name 클라이언트가 사용한 작업 이름.
json.operation_fingerprint 시간에 따라 반복되는 쿼리를 인식하는 데 사용되는 쿼리의 핑거프린트.
json.meta.caller_id GitLab 프론트엔드에서 온 쿼리의 경우 graphql:<operation_name>으로 표시되고, 그 외의 경우 graphql:unknown으로 표시됩니다. 내부 쿼리와 외부 쿼리를 구별하는 데 사용할 수 있습니다.
json.graphql_errors.message 응답에서 반환된 최상위 오류 메시지.
json.graphql_errors.extensions.fieldName 최상위 오류를 일으킨 필드 이름.
json.graphql_errors.extensions.argumentName 최상위 오류를 일으킨 인수 이름.
json.query_string 쿼리 문자열 자체.
json.is_mutation 뮤테이션인 경우 true, 아닌 경우 false.
json.query_analysis.used_fields 쿼리에서 선택한 GraphQL 필드 목록.
json.query_analysis.used_deprecated_fields 쿼리에서 선택한 더 이상 사용되지 않는 GraphQL 필드 목록.
json.query_analysis.used_deprecated_arguments 쿼리에서 선택한 더 이상 사용되지 않는 GraphQL 인수 목록.
json.query_analysis.duration_s 쿼리 실행 시간(초).
json.query_analysis.complexity 쿼리의 복잡도 점수.

유용한 필터#

아래는 일반적인 Kibana 필터의 몇 가지 예시입니다.

필드 사용 현황 보기#

필터 예시 보기.

Filter: json.query_analysis.used_fields

  • Operator: is

  • Value: Type.myField. 여기서 Type.myFieldGraphQL API 리소스 문서에 표시된 타입 이름과 필드 이름입니다.

  • Refresh를 선택하세요.

더 이상 사용되지 않는 필드 사용 현황 보기#

필터 예시 보기.

Filter: json.query_analysis.used_deprecated_fields

  • Operator: is

  • Value: Type.myField. 여기서 Type.myFieldGraphQL API 리소스 문서에 표시된 타입 이름과 필드 이름입니다.

  • Refresh를 선택하세요.

프론트엔드에서 실행되지 않은 쿼리 보기#

필터 예시 보기.

위에서 언급한 대로, json.meta.caller_id는 GitLab 프론트엔드에서 온 쿼리의 경우 graphql:<operation_name>으로, 그 외의 경우 graphql:unknown으로 표시됩니다. 이 필터를 사용하여 내부 쿼리와 외부 쿼리를 구별할 수 있습니다.

Filter: json.meta.caller_id

  • Operator: is

  • Value: graphql:unknown

  • Refresh를 선택하세요.

뮤테이션 또는 쿼리의 오류 응답 보기#

필터 예시 보기.

뮤테이션과 쿼리에서 반환된 최상위 오류 로그를 볼 수 있습니다.

Filter: json.graphql_errors.message

  • Operator: exists

  • Refresh를 선택하세요.

전체 요청의 로그#

전체 요청 로그는 요청 내 모든 멀티플렉스 쿼리의 로그 데이터와 GraphQLController#execute 외부에서 소요된 시간의 데이터를 포함합니다.

전체 요청 로그를 보려면 json.subcomponent 필터를 적용하지 말고, 대신 다음을 수행하세요:

  • 필터 추가:

Filter: json.meta.caller_id

  • Operator: is

  • Value: GraphqlController#execute

  • Refresh를 선택하세요.

위에서 설명한 쿼리 로그와의 차이점:

  • 위에서 언급된 Kibana 필드 일부는 전체 요청 로그에서 사용할 수 없습니다.

  • 필터 이름이 다릅니다. 예를 들어, json.query_analysis.used_fields 대신 json.graphql.used_fields를 선택합니다.

GraphQL 로그 읽기

GitLab v19.1
원문 보기
요약

Kibana를 사용하여 GraphQL 쿼리 로그를 필터링합니다. Kibana에서 두 가지 종류의 GraphQL 로그를 검사할 수 있습니다: 요청 내에서 실행된 각 GraphQL 쿼리의 로그. 쿼리 멀티플렉싱으로 인해 여러 쿼리가 실행될 수 있는 전체 요청의 로그.

Kibana를 사용하여 GraphQL 쿼리 로그를 필터링합니다. @gitlab.com 이메일 주소로 Kibana에 로그인하세요.

Kibana에서 두 가지 종류의 GraphQL 로그를 검사할 수 있습니다:

  • 요청 내에서 실행된 각 GraphQL 쿼리의 로그.

  • 쿼리 멀티플렉싱으로 인해 여러 쿼리가 실행될 수 있는 전체 요청의 로그.

각 GraphQL 쿼리의 로그#

멀티플렉스 쿼리에서는 각 개별 쿼리가 별도로 기록됩니다. 서브컴포넌트 필터링을 사용하여 이러한 로그를 검사할 수 있습니다. 이 필터가 활성화된 Kibana를 방문하거나 다음 단계를 통해 서브컴포넌트 필터를 설정하세요:

  • 필터 추가:

Filter: json.subcomponent

  • Operator: is

  • Value: graphql_json

  • Refresh를 선택하세요.

사이드바의 Available fields 섹션에서 Kibana 필드를 선택하여 로그 테이블에 칼럼을 추가하거나, 이미 Kibana 필드 세트가 선택된 이 뷰를 방문할 수 있습니다.

관련 Kibana 필드 일부는 다음과 같습니다:

Kibana 필드 설명
json.operation_name 클라이언트가 사용한 작업 이름.
json.operation_fingerprint 시간에 따라 반복되는 쿼리를 인식하는 데 사용되는 쿼리의 핑거프린트.
json.meta.caller_id GitLab 프론트엔드에서 온 쿼리의 경우 graphql:<operation_name>으로 표시되고, 그 외의 경우 graphql:unknown으로 표시됩니다. 내부 쿼리와 외부 쿼리를 구별하는 데 사용할 수 있습니다.
json.graphql_errors.message 응답에서 반환된 최상위 오류 메시지.
json.graphql_errors.extensions.fieldName 최상위 오류를 일으킨 필드 이름.
json.graphql_errors.extensions.argumentName 최상위 오류를 일으킨 인수 이름.
json.query_string 쿼리 문자열 자체.
json.is_mutation 뮤테이션인 경우 true, 아닌 경우 false.
json.query_analysis.used_fields 쿼리에서 선택한 GraphQL 필드 목록.
json.query_analysis.used_deprecated_fields 쿼리에서 선택한 더 이상 사용되지 않는 GraphQL 필드 목록.
json.query_analysis.used_deprecated_arguments 쿼리에서 선택한 더 이상 사용되지 않는 GraphQL 인수 목록.
json.query_analysis.duration_s 쿼리 실행 시간(초).
json.query_analysis.complexity 쿼리의 복잡도 점수.

유용한 필터#

아래는 일반적인 Kibana 필터의 몇 가지 예시입니다.

필드 사용 현황 보기#

필터 예시 보기.

Filter: json.query_analysis.used_fields

  • Operator: is

  • Value: Type.myField. 여기서 Type.myFieldGraphQL API 리소스 문서에 표시된 타입 이름과 필드 이름입니다.

  • Refresh를 선택하세요.

더 이상 사용되지 않는 필드 사용 현황 보기#

필터 예시 보기.

Filter: json.query_analysis.used_deprecated_fields

  • Operator: is

  • Value: Type.myField. 여기서 Type.myFieldGraphQL API 리소스 문서에 표시된 타입 이름과 필드 이름입니다.

  • Refresh를 선택하세요.

프론트엔드에서 실행되지 않은 쿼리 보기#

필터 예시 보기.

위에서 언급한 대로, json.meta.caller_id는 GitLab 프론트엔드에서 온 쿼리의 경우 graphql:<operation_name>으로, 그 외의 경우 graphql:unknown으로 표시됩니다. 이 필터를 사용하여 내부 쿼리와 외부 쿼리를 구별할 수 있습니다.

Filter: json.meta.caller_id

  • Operator: is

  • Value: graphql:unknown

  • Refresh를 선택하세요.

뮤테이션 또는 쿼리의 오류 응답 보기#

필터 예시 보기.

뮤테이션과 쿼리에서 반환된 최상위 오류 로그를 볼 수 있습니다.

Filter: json.graphql_errors.message

  • Operator: exists

  • Refresh를 선택하세요.

전체 요청의 로그#

전체 요청 로그는 요청 내 모든 멀티플렉스 쿼리의 로그 데이터와 GraphQLController#execute 외부에서 소요된 시간의 데이터를 포함합니다.

전체 요청 로그를 보려면 json.subcomponent 필터를 적용하지 말고, 대신 다음을 수행하세요:

  • 필터 추가:

Filter: json.meta.caller_id

  • Operator: is

  • Value: GraphqlController#execute

  • Refresh를 선택하세요.

위에서 설명한 쿼리 로그와의 차이점:

  • 위에서 언급된 Kibana 필드 일부는 전체 요청 로그에서 사용할 수 없습니다.

  • 필터 이름이 다릅니다. 예를 들어, json.query_analysis.used_fields 대신 json.graphql.used_fields를 선택합니다.