• 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

Instrumento de transação Go

Monitor seu aplicativo ou microsserviços New Relic for Go criando transações associadas a atividades específicas do servidor de aplicativos, como respostas HTTP ou tarefas em segundo plano. Você poderá então visualizar o desempenho do seu aplicativo no New Relic, incluindo a página APM Transactions .

Identificar web e transações fora da web

Ao contrário de muitas outras linguagens, o aplicativo Go é executado a partir de um arquivo binário nativo compilado. Isso significa que a configuração do New Relic para seu aplicativo Golang requer que você adicione manualmente os métodos do New Relic ao seu código-fonte.

No APM, transação é identificada como transação da web ou transação fora da web.

  • Quando você instrumenta ou encapsula uma transação que possui um gravador de solicitação e resposta HTTP, a New Relic a trata como uma transação da web.
  • Quando você instrumenta ou envolve uma transação que não possui dados HTTP, a New Relic trata isso como uma transação fora da web.

Segmentos são as funções e chamadas que constituem uma transação. Você também pode usar o New Relic for Go para adicionar detalhes em nível de segmento à sua transação.

Monitor uma transação

Importante

Não use colchetes [suffix] no final do nome da sua transação. O New Relic remove automaticamente os colchetes do nome. Em vez disso, use parênteses (suffix) ou outros símbolos, se necessário.

Para monitor uma transação: Coloque o seguinte código imediatamente após o início da função que deseja monitor. Por exemplo:

txn := app.StartTransaction("transaction_name")
defer txn.End()

Neste exemplo de código:

Para monitor uma transação da web, chame a API Transaction.SetWebRequest e opcionalmente a Transaction.SetWebResponse:

txn := app.StartTransaction("transaction_name")
defer txn.End()
// req is a *http.Request, this marks the transaction as a web transaction
txn.SetWebRequestHTTP(req)
// writer is a http.ResponseWriter, use the returned writer in place of the original
writer = txn.SetWebResponse(writer)
writer.WriteHeader(500)

Monitor uma transação com vários goroutines

Para monitor uma transação em várias goroutines, use Transaction.NewGoroutine(). O método NewGoroutine retorna uma nova referência à transação, que é exigida por cada goroutine criadora de segmento. Não importa se você chama NewGoroutine antes ou depois do início da outra goroutine.

Todos os métodos Transaction podem ser usados em qualquer referência Transaction . O Transactionterminará quando End() for chamado em qualquer goroutine.

Monitor uma transação agrupando um manipulador HTTP

Se você estiver usando o pacote de biblioteca HTTP padrão, poderá criar transações agrupando solicitações HTTP, como alternativa ao código de uma função instrumentado.

Aqui está um exemplo de antes e depois de um manipulador HTTP sendo empacotado:

Before:

http.HandleFunc("/users", usersHandler)

After:

Isso inicia e encerra automaticamente uma transação com o gravador de solicitação e resposta.

http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))

Para acessar a transação no seu gerenciador, use a API newrelic.FromContext . Observe que isso funcionará apenas para as versões 1.7 e mais recentes do Go. Por exemplo:

func myHandler(w http.ResponseWriter, r *http.Request) {
txn := newrelic.FromContext(r.Context())
txn.NoticeError(errors.New("my error message"))
}

Monitor erros

O New Relic for Go captura erros de três maneiras diferentes:

Se você quiser...

Usa isto

Rastreie erros e relate qualquer combinação de mensagem, classe e atributo

Transaction.NoticeError()

Rastreie erros esperados e reporte qualquer combinação de mensagem, classe e atributo sem disparar alertas ou afetar métricas de erro

Transaction.NoticeExpectedError()

Denunciar pânico

Transação terminou com defer registra automaticamente pânicos. Consulte a documentação do GitHub do New Relic for Go para obter mais informações. A partir da versão 3.0.0, esse recurso deve ser ativado especificamente definindo a configuração Config.ErrorCollector.RecordPanics como true.

Relatar códigos de resposta de erro

Transação registra automaticamente erros acima de 400 e abaixo de 100. Consulte a documentação do GitHub do New Relic for Go para obter mais informações.

Visualize o log do seu APM e dados de infraestrutura

Você também pode reunir os dados do seu log e da aplicação para tornar a resolução de problemas mais fácil e rápida. Com os logs contextualizados, você pode ver a mensagem do log relacionada aos seus erros e rastrear diretamente na interface do seu aplicativo.

  1. Na página

    Errors

    , clique em um trace para ir para a página

    Error details

    .

  2. Na página de detalhes do erro, clique em

    See logs

    .

  3. Para visualizar detalhes relacionados a uma mensagem do log individual, clique diretamente na mensagem.

Você também pode ver o logs contextualizados dos dados da sua infraestrutura, como cluster do Kubernetes. Não há necessidade de mudar para outra interface.

Métodos de transação adicionais

O objeto Transaction possui vários métodos opcionais que podem ser usados para controlar o comportamento da transação, como NoticeError, AddAttribute e Ignore. Para obter uma lista de métodos de transação, consulte os métodos de transação New Relic for Go no Godoc.

Copyright © 2024 New Relic Inc.

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