GraphQL 로그 읽기
우리는 Kibana를 사용하여 GraphQL 쿼리 로그를 필터링합니다. @gitlab.com
이메일 주소로 Kibana에 로그인합니다.
Kibana에서는 두 가지 종류의 GraphQL 로그를 검사할 수 있습니다:
- 요청 내에서 실행된 각 GraphQL 쿼리의 로그.
- 쿼리 다중화로 인해 여러 쿼리를 실행했을 수 있는 전체 요청의 로그.
각 GraphQL 쿼리의 로그
multiplex 쿼리에서는 각 개별 쿼리가 별도로 기록됩니다. 서브컴포넌트 필터링을 사용하여 이러한 로그를 검사할 수 있습니다. 이 필터가 활성화된 Kibana 사용하기 또는 다음 단계에 따라 서브컴포넌트 필터를 설정하세요:
- 필터 추가:
- 필터:
json.subcomponent
- 연산자:
is
- 값:
graphql_json
- 필터:
- Refresh를 선택합니다.
사이드바의 Available fields 섹션에서 Kibana 필드를 선택하여 로그 테이블에 열을 추가하거나, 이미 선택된 Kibana 필드 세트를 가진 이 뷰를 방문하세요. 일부 관련 Kibana 필드는 다음과 같습니다:
Kibana field | 설명 |
---|---|
json.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 |
쿼리에 의해 선택된 deprecated GraphQL 필드 목록입니다. |
json.query_analysis.duration_s |
쿼리 실행의 지속 시간(초 단위)입니다. |
json.query_analysis.complexity |
쿼리의 복잡성 점수입니다. |
유용한 필터
서브컴포넌트 필터와 함께 다음 Kibana 필터를 조합하여 쿼리 로그를 더 철저히 조사할 수 있습니다.
특정 필드를 사용한 쿼리
특정 필드를 사용한 쿼리로 로그를 필터링합니다:
- 필터 추가:
- 필터:
json.query_analysis.used_fields
- 연산자:
is
- 값:
Type.myField
, 여기서Type.myField
는 우리 GraphQL API 리소스 문서에 나타나는 타입 이름 및 필드 이름입니다.
- 필터:
- Refresh를 선택합니다.
사용 중단된 필드를 사용한 쿼리
특정 사용 중단된 필드를 사용한 쿼리의 로그를 필터링하려면
위 단계를 따르십시오 그러나 대신 json.graphql.used_deprecated_fields
필터를 사용하세요.
전체 요청의 로그
전체 요청 로그는 요청의 모든 다중 쿼리에 대한 로그 데이터와 GraphQLController#execute
외부에서 소요된 시간 데이터를 포함합니다.
전체 요청 로그를 보려면, json.subcomponent
필터를 적용하지 말고 대신:
- 필터를 추가하세요:
- 필터:
json.meta.caller_id
- 연산자:
is
- 값:
GraphqlController#execute
- 필터:
- Refresh를 선택하세요.
위에서 설명한 쿼리 로그와의 몇 가지 차이점:
- 위에서 언급한 Kibana 필드 중 일부는 전체 요청 로그에서 사용할 수 없습니다.
- 필터의 이름이 다릅니다. 예를 들어,
json.query_analysis.used_fields
대신json.graphql.used_fields
를 선택합니다.