GraphQL 로그 읽기

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

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

  • 요청 내에서 실행된 각 GraphQL 쿼리의 로그.
  • 쿼리 멀티플렉싱으로 인해 여러 쿼리가 실행된 전체 요청의 로그.

각 GraphQL 쿼리 로그

multiplex 쿼리에서 각 개별 쿼리는 별도로 로그가 기록됩니다. 이러한 로그를 검사하기 위해 subcomponent 필터링을 사용할 수 있습니다. 이 필터가 활성화된 Kibana로 이동하거나 다음 단계를 따라 subcomponent 필터를 설정하세요:

  1. 필터 추가:
    1. 필터: json.subcomponent
    2. 연산자: is
    3. 값: graphql_json
  2. 새로 고침(Refresh)을 선택하세요.

사이드바의 사용 가능한 필드 섹션에서 Kibana 필드를 선택하여 로그 테이블에 열을 추가하거나 이 보기를 방문하여 이미 선택된 Kibana 필드 세트가 있는지 확인하세요. 일부 관련 Kibana 필드는 다음과 같습니다:

Kibana 필드 설명
json.operation_name 클라이언트가 사용하는 operation name.
json.operation_fingerprint 쿼리의 지문, 시간이 지남에 따라 반복되는 쿼리를 인식하는 데 사용됨.
json.meta.caller_id GitLab 프론트엔드에서 온 쿼리의 경우 graphql:<operation_name>으로 표시되며, 그렇지 않은 경우 graphql:unknown으로 표시됨. 내부 대 외부 쿼리를 식별하는 데 사용할 수 있음.
json.query_string 쿼리 문자열 그 자체.
json.is_mutation 뮤테이션인 경우 true, 그렇지 않으면 false.
json.query_analysis.used_fields 쿼리에서 선택된 GraphQL 필드 디렉터리.
json.query_analysis.used_deprecated_fields 쿼리에서 선택된 폐기된 GraphQL 필드 디렉터리.
json.query_analysis.duration_s 쿼리 실행 시간(초).
json.query_analysis.complexity 쿼리의 복잡성 점수.

유용한 필터

각 GraphQL 쿼리 로그와 다음 Kibana 필터를 결합하여 쿼리 로그를 더 자세히 조사하세요.

특정 필드를 사용한 쿼리

특정 필드를 사용한 쿼리로 로그를 필터링하세요:

  1. 필터 추가:
    1. 필터: json.query_analysis.used_fields
    2. 연산자: is
    3. 값: Type.myField, 여기서 Type.myField우리의 GraphQL API 리소스 문서에 나타난 유형 이름 및 필드 이름입니다.
  2. 새로 고침(Refresh)을 선택하세요.

폐기된 필드를 사용한 쿼리

특정 폐기된 필드를 사용한 쿼리 로그를 위의 단계를 따라 진행하지만 대신 json.graphql.used_fields 필터를 사용하세요.

전체 요청 로그

전체 요청 로그에는 요청 내의 모든 멀티플렉스된 쿼리에 대한 로그 데이터뿐만 아니라 GraphQLController#execute 외부에서 소요된 시간에 대한 데이터도 포함됩니다.

전체 요청 로그를 보려면 쿼리 로그와 달리 json.subcomponent 필터를 적용하지 마시고 다음을 수행하세요:

  1. 필터 추가:
    1. 필터: json.meta.caller_id
    2. 연산자: is
    3. 값: GraphqlController#execute
  2. 새로 고침(Refresh)을 선택하세요.

위의 쿼리 로그와 다른 몇 가지 차이점:

  • 위에서 언급한 Kibana 필드 중 일부는 전체 요청 로그에서 사용할 수 없습니다.
  • 필터 이름이 다릅니다. 예를 들어 json.query_analysis.used_fields 대신 json.graphql.used_fields를 선택합니다.