• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

문제 신고

파이썬과 GraphQL

업무

트랜잭션은 실행된 GraphQL 작업을 기반으로 명명된 웹 트랜잭션으로 캡처됩니다. 작업 유형, 작업 이름 및 가장 깊은 고유 경로와 같은 세부 정보는 고유한 쿼리 표현을 그룹화하는 데 사용됩니다.

트랜잭션의 원시 표현은 다음과 같습니다. {operation_type}/{operation_name}/{deepest_unique_path}

이 쿼리 예제를 사용하여:

query {
libraries {
books {
title
author {
name
}
}
}
}

UI의 트랜잭션은 궁극적으로 다음과 유사하게 표시됩니다. query/<anonymous>/libraries.books

세부

작업 유형

작업이 쿼리인지 돌연변이인지 나타냅니다.

작업 이름

제공되는 경우 작업 이름 또는 <anonymous> .

query { libraries } 이름이 제공되지 않았기 때문에 작업 이름이 비어 있습니다.

query GetLibraries { libraries } 과 같은 이름을 가진 쿼리는 작업 이름 'GetLibraries' 을 사용합니다.

가장 깊은 고유 경로

각 수준에서 하나의 필드만 선택된 쿼리의 선택 집합에 포함된 가장 깊은 경로입니다. 작업 이름을 재사용할 수 있으므로 지정된 작업의 고유성을 추가로 결정하는 데 도움이 됩니다.

우리는 이름을 지정할 때 임의의 결정을 내리는 것을 피하기 위해 가장 깊은 고유 경로(이전과 같은 가장 깊은 경로 대신)를 사용합니다. 이는 애플리케이션 속도를 저하시킬 수 있는 세부 사항을 암시하거나 숨길 수 있습니다.

쿼리의 경우:

query {
libraries {
branch
booksInStock {
isbn
title
author
}
magazinesInStock {
issue
title
}
}
}

그 지점을 넘어 여러 필드를 선택하므로 '라이브러리'의 가장 깊고 고유한 경로를 선택합니다. 해당 지점 이후에 실행된 모든 확인자는 트랜잭션의 성능 특성에 기여할 수 있습니다.

쿼리가 해석기당 하나의 필드만 선택하는 것이라면 각 선택 집합이 고유하므로 전체 경로를 선택합니다.

쿼리:

query {
libraries {
booksInStock {
title
}
}
}

가장 깊은 고유 경로가 생성됩니다. 'libraries.booksInStock.title' .

id__typename 필드는 이름 지정 결정에서 자동으로 제외됩니다.

예를 들어, 하위 그래프 쿼리는 다음과 같습니다.

query {
libraries {
branch
__typename
id
}
}

결과는 libraries.branch 의 가장 깊은 고유 경로입니다.

유니온 유형 및 인라인 프래그먼트

인라인 프래그먼트를 활용하는 Union 유형의 경우 트랜잭션 이름은 < ... > 대괄호를 사용하여 쿼리에 하나의 결과만 지정된 경우 Union 쿼리에 대해 기본적으로 선택된 필드를 나타냅니다.

다음 스키마의 경우:

union SearchResult = Book | Author
type Book {
title: String!
}
type Author {
name: String!
}
type Query {
search(contains: String): [SearchResult!]
}

그리고 다음 쿼리:

query example {
search(contains: "author") {
__typename
... on Author {
name
}
}
}

다음과 같은 트랜잭션 이름이 생성됩니다.

query/example/search<Author>.name

그러나 쿼리가 책과 저자를 모두 반환하는 경우:

query example {
search(contains: "author") {
__typename
... on Author {
name
}
... on Book {
title
}
}
}

결과 트랜잭션 이름은 query/example/search

오류 시 이름 지정

GraphQL 요청을 확인하거나 구문 분석하는 동안 오류가 발생하면 트랜잭션 이름 지정에 영향을 줄 수 있습니다.

예외

미들웨어나 해석기에서 오류가 발생하면 트랜잭션 이름은 단순히 오류가 발생한 미들웨어 또는 해석기의 이름이 됩니다.

검증 오류

요청한 작업이 구문 분석할 수 있었지만 유효성을 검사할 수 없는 경우 트랜잭션 이름으로 다음이 생성됩니다.

GraphQL2: graphql.validation.validation:validate GraphQL3: graphql.validation.validate.validate

구문 분석 오류

요청한 작업을 구문 분석할 수 없는 경우 트랜잭션 이름으로 다음이 생성됩니다.

graphql.language.parser:parse

메트릭

Python 에이전트는 GraphQL 필드 해석기 및 작업 메트릭을 보고하여 장기적인 추세를 이해하고 분석할 수 있도록 합니다.

작업 메트릭

작업 메트릭은 다음 형식을 사용하여 보고됩니다.

GraphQL/operation/GraphQL/{operation_type}/{operation_name}/{deepest_unique_path}

작업 유형: 실행할 작업의 유형을 지정합니다. 작업 유형을 결정할 수 없는 경우 query , mutation 또는 <unknown> 가 됩니다.

작업 이름: 작업 이름(제공된 경우) 또는 <anonymous> .

가장 깊은 고유 경로 : 각 수준에서 하나의 필드만 선택되는 쿼리의 선택 집합에 포함된 가장 깊은 경로입니다. 이것은 작업 이름을 재사용할 수 있으므로 주어진 작업의 고유성을 추가로 결정하는 데 도움이 됩니다.

필드 리졸버 측정항목

Field resolver 메트릭은 다음 형식을 사용하여 보고됩니다.

GraphQL/resolve/GraphQL/{field_name}

해석기 메트릭은 요청된 GraphQL 데이터의 특정 부분을 해결하는 데 소요된 시간을 캡처합니다. 이들은 들어오는 쿼리 속도를 늦추는 데 기여할 수 있는 특정 확인자를 찾는 데 사용할 수 있습니다.

스팬 및 속성

범위는 GraphQL 작업, 필드 확인 및 데이터베이스에 대한 쿼리 작성과 같은 필드 확인의 일부로 발생하는 추가 작업에 대해 캡처됩니다.

작업 범위에는 작업 유형, 작업 이름 및 가장 깊은 고유 경로가 포함됩니다. 이는 트랜잭션 또는 추적 내에서 특정 호출의 개별 기간 및 속성을 나타냅니다.

GraphQL/operation/GraphQL/{operation_type}/{operation_name}/{deepest_unique_path}

작업 범위 속성

이름

설명

graphql.operation.type

쿼리 또는 돌연변이

graphql.operation.name

작업에 지정된 이름 또는 < anonymous >

graphql.operation.query

쿼리에 지정된 이름 또는 < anonymous >

필드 해석기 범위

확인자 범위는 개별 필드의 확인 경로를 활용하여 주어진 추적 또는 트랜잭션 내에서 가장 잘 구별됩니다. 예를 들어, 책 대신 libraries.books 을 사용할 수 있습니다. 이는 GraphQL 작업의 일부로 확인되는 특정 필드의 개별 기간 및 속성을 나타냅니다.

GraphQL/resolve/GraphQL/{path}

해석기 범위 속성

이름

설명

graphql.field.name

해결된 필드의 이름

graphql.field.returnType

확인된 필드의 반환 유형(예: Book! , [String] )

graphql.field.parentType

이 필드의 상위 유형(예: [Book] )

graphql.field.path

필드의 전체 해석기 경로(예: libraries.books )

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.