• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

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.

Criar um problema

Python e GraphQL

Transação

Transações são capturadas como transações da web que são nomeadas com base nas operações GraphQL executadas. Os detalhes a seguir são usados para agrupar representações de consulta exclusivas: tipo de operação, nome da operação e o caminho exclusivo mais profundo.

A representação bruta de uma transação é semelhante a esta: {operation_type}/{operation_name}/{deepest_unique_path}

Usando este exemplo de consulta:

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

A transação ativada na interface será exibida de forma semelhante a esta: query/<anonymous>/libraries.books

Detalhes

Tipo de operação

Indica se a operação foi uma consulta ou uma mutação.

Nome da Operação

O nome da operação quando fornecido ou <anonymous>.

query { libraries } teria um nome de operação em branco porque um nome não foi fornecido.

Uma consulta com um nome como query GetLibraries { libraries } usaria o nome da operação 'GetLibraries'.

Caminho único mais profundo

O caminho mais profundo incluído no conjunto de seleção de uma consulta onde apenas um campo foi selecionado em cada nível. Como os nomes das operações podem ser reutilizados, isso ajuda a determinar ainda mais a exclusividade de uma determinada operação.

Usamos o caminho único mais profundo (em vez do caminho mais profundo como antes) para evitar tomar decisões arbitrárias na nomenclatura, o que pode implicar ou ocultar detalhes do que poderia causar lentidão em um aplicativo.

Para a consulta:

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

Selecionaremos um caminho único e mais profundo da 'biblioteca' à medida que selecionamos vários campos além desse ponto. Qualquer resolução executada além desse ponto pode contribuir para as características de desempenho da transação.

Se a consulta selecionasse apenas um campo por resolvedor, selecionamos o caminho completo, pois cada conjunto de seleção é único.

A consulta:

query {
libraries {
booksInStock {
title
}
}
}

Resultará no caminho exclusivo mais profundo: 'libraries.booksInStock.title'.

id e os campos __typename são automaticamente excluídos da decisão de nomenclatura.

Por exemplo, uma consulta de subgráfico:

query {
libraries {
branch
__typename
id
}
}

Resultaria no caminho exclusivo mais profundo de: libraries.branch.

Tipos de união e fragmentos embutidos

Para tipos de união que utilizam fragmentos embutidos, o nome da transação usará colchetes < ... > para indicar o campo selecionado subjacente para a consulta de união se apenas um resultado for especificado na consulta.

Para o seguinte esquema:

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

e a seguinte consulta:

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

Resultaria no seguinte nome de transação:

query/example/search<Author>.name

No entanto, se a consulta retornar Livro e Autor:

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

O nome da transação resultante seria query/example/search

Nomeação em caso de erro

Erros na validação ou análise de uma solicitação GraphQL podem afetar a nomenclatura da transação.

Exceções

Se for encontrado um erro no middleware ou no resolvedor, o nome da transação será simplesmente o nome do middleware ou do resolvedor no qual ocorreu a falha.

Erros de validação

Se uma operação solicitada puder ser analisada, mas não validada, o seguinte será gerado como o nome da transação:

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

Erros de análise

Se uma operação solicitada não puder ser analisada, o seguinte será gerado como nome da transação:

graphql.language.parser:parse

Métrica

O agente Python relata o resolvedor de campo GraphQL e a métrica de operação para permitir que você entenda e analise tendências de longo prazo.

Operação métrica

As métricas da operação são reportadas no seguinte formato:

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

Tipo de operação: especifica o tipo de operação a ser executada. Será query, mutation ou <unknown> se o tipo de operação não puder ser determinado.

Nome da Operação: O nome da operação, se fornecido, ou <anonymous>.

Caminho Único Mais Profundo: O caminho mais profundo incluído no conjunto de seleção de uma consulta onde apenas um campo é selecionado em cada nível. Isso ajuda a determinar ainda mais a exclusividade de uma determinada operação, uma vez que os nomes das operações podem ser reutilizados.

Métrica do resolvedor de campo

As métricas do resolvedor de campo são reportadas usando o seguinte formato:

GraphQL/resolve/GraphQL/{field_name}

As métricas do resolvedor capturam o tempo gasto na resolução de um dado específico do GraphQL solicitado. Eles podem ser usados para encontrar resolvedores específicos que podem contribuir para retardar as consultas recebidas.

Vãos e atributo

Os spans são capturados para operações GraphQL, resoluções de campo e trabalho adicional que ocorre como parte de uma resolução de campo, como fazer uma consulta a um banco de dados.

Os intervalos de operação incluem o tipo de operação, o nome da operação e o caminho exclusivo mais profundo. Eles representam a duração individual e o atributo de uma invocação específica dentro de uma transação ou trace.

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

Operation span attributes

Name

Description

graphql.operation.type

Consulta ou mutação

graphql.operation.name

Nome dado à operação ou < anonymous >

graphql.operation.query

Nome dado à consulta ou < anonymous >

Extensão do resolvedor de campo

Os intervalos do resolvedor aproveitam o caminho de resolução do campo individual para melhor diferenciar dentro de um determinado trace ou transação. Por exemplo, libraries.books pode ser usado em vez de apenas livros. Eles representam a duração individual e o atributo de um campo específico sendo resolvido como parte da operação GraphQL.

GraphQL/resolve/GraphQL/{path}

Resolver span attributes

Name

Description

graphql.field.name

Nome do campo resolvido

graphql.field.returnType

Tipo de retorno do campo resolvido (por exemplo, Book!, [String])

graphql.field.parentType

Tipo do pai deste campo (por exemplo, [Book])

graphql.field.path

Caminho completo do resolvedor do campo (por exemplo, libraries.books)

Copyright © 2024 New Relic Inc.

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