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:
app
refere-se à variável atribuída durante o processo de configuração do New Relic. Para obter mais informações, consulte os procedimentos de instalação do agente Go.- A instrução
defer
adia o término do segmento até que a função seja fechada.
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 transactiontxn.SetWebRequestHTTP(req)
// writer is a http.ResponseWriter, use the returned writer in place of the originalwriter = 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 Transaction
terminará 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:
Antes:
http.HandleFunc("/users", usersHandler)
Depois:
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 | |
Rastreie erros esperados e reporte qualquer combinação de mensagem, classe e atributo sem disparar alertas ou afetar métricas de erro | |
Denunciar pânico | Transação terminou com |
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.
- Na página Errors, clique em um trace para ir para a páginaError details .
- Na página de detalhes do erro, clique em See logs.
- 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.