• 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

Guia para usar a API do agente Go

O agente Go de New Relic monitora seu aplicativo e microsserviços na linguagem Go para ajudá-lo a identificar e resolver problemas de desempenho. A API do agente Go é uma das várias API New Relic disponíveis.

Importante

Como o aplicativo Go é executado a partir de um arquivo binário nativo compilado, você precisa instrumentar manualmente seu código para monitor a transação do seu aplicativo Go, adicionando métodos New Relic a ele.

Monitor transação

Antes de instrumentar manualmente seu código para monitor a transação, certifique-se de atender à compatibilidade e aos requisitos e de estar usando a versão mais recente do agente Go.

Se você quiser...

Utilize este método...

Comece a cronometrar uma transação

StartTransaction()

Pare de cronometrar uma transação

txn.End()

Impedir que uma transação seja reportada à New Relic

Ignore()

Use o pacote de biblioteca HTTP padrão para monitor transações

Envolvimento de solicitação HTTP

Métodos específicos de tempo usando segmentos

Se uma transação já estiver visível no New Relic, mas você não tiver dados suficientes sobre um método específico que foi chamado durante essa transação, você poderá criar segmentos. Por exemplo, se você quiser cronometrar um método que possui lógica complexa, poderá criar um segmento para cada um dos métodos na transação.

Para instrumentar um método em uma transação existente, crie segmentos para o seguinte:

Se o trabalho estiver acontecendo em uma goroutine diferente de onde a transação foi iniciada, você deverá usar a API NewGoroutine() .

Aprimore os metadados de uma transação

Você pode gerenciar os metadados que a New Relic reporta para transação. Aqui estão alguns exemplos de quando você pode querer um nível diferente de detalhe para sua transação:

Se você quiser...

Usa isto...

Alterar o nome de uma transação

SetName()

Adicione metadados (como o nome da conta do seu cliente ou nível de assinatura) à sua transação

AddAttribute()

Instrumentar chamadas para serviços externos

Use estes métodos para coletar dados sobre as conexões do seu aplicativo com outros aplicativos ou banco de dados:

Se você quiser...

Usa isto...

Cronometrar uma chamada para um recurso externo (como um serviço externo, servidor de banco de dados ou fila de mensagens)

StartExternalSegment()

Conectar atividade a outro aplicativo instrumentado por um agente da New Relic

Rastreamento multiaplicativo

Importante

O rastreamento multiaplicativo foi descontinuado em favor do Distributed tracing e será removido em uma versão futura do agente.

Veja o caminho que uma solicitação percorre ao percorrer um sistema distribuído.

Distributed tracing

Colete ou erro ignorado

O agente detecta erros automaticamente. Se você quiser alterar a maneira como o agente Go relata erros ao New Relic, altere a configuração do coletor de erros.

Se você quiser...

Usa isto...

Relatar um erro que o agente não reporta automaticamente

NoticeError()

Relatar um erro esperado que o agente não reporta automaticamente e não aciona alertas

NoticeExpectedError()

Impedir que o agente relate um erro

ErrorCollector.IgnoreStatusCodes()

Erro impressão digital: aplica dinamicamente um grupo de erros a cada erro detectado

Uma função de retorno de chamada pode ser fornecida ao agente para aplicar dinamicamente um grupo de erros desejado a cada erro percebido. Use a opção de configuração do agente Go newrelic.ConfigSetErrorGroupCallbackFunction para fornecer um retorno de chamada ao agente.

Esta chamada de API usa um método de retorno de chamada (deve ser do tipo newrelic.ErrorGroupCallback) como único argumento. Aqui está um exemplo:

myCallbackFunc := CallbackFunc(errorInfo newrelic.ErrorInfo) string {
if errorInfo.Message == "example error message" {
return "example group 1"
}
if errorInfo.GetHttpResponseCode() == "403" && errorInfo.GetUserID() == "user 2" {
return "user 2 payment issue"
}
// use default error grouping behavior
return ""
}
app, err := newrelic.NewApplication(
newrelic.ConfigSetErrorGroupCallbackFunction(myCallbackFunc)
)

No exemplo mostrado, é criado um procedimento de retorno de chamada que aceitará um objeto do tipo newrelic.ErrorInfo e retornará uma string representando o grupo de erros. Observe que quando sua função ErrorGroupCallback retorna uma string não vazia, ela substituirá o comportamento de agrupamento padrão de um erro percebido e aplicará a lógica de agrupamento do lado do servidor.

Espera-se que a função de retorno de chamada receba exatamente um argumento de entrada, um objeto newrelic.ErrorInfo . O objeto contém o seguinte:

Key

Value

Error

O objeto de erro Go notado. Isso será nulo para erros HTTP e Panics.

TimeOccured

A time.Time em que o erro foi percebido pelo agente.

Message

A mensagem de erro.

Class

A classe de erro New Relic. Se um erro implementar errorClasser, seu valor será derivado disso. Caso contrário, será derivado da forma como o erro foi coletado pelo agente. Para erros HTTP, este será o número do erro. O pânico será o valor da constante pública newrelic.PanicErrorClass. Caso contrário, a classe de erro será extraída do objeto de erro raiz chamando reflect.TypeOf(). A classe de erro raiz mais comum é *errors.errorString.

Expected

Um bool que é true quando o erro era esperado.

TransactionName

O nome formatado de uma transação conforme apareceria na interface do New Relic.

GetTransactionUserAttributes(attribute string)

Um método que recebe um nome de atributo como imput, procura e retorna uma transação do usuário atributo como interface{} e um bool que é true se a chave foi encontrada no mapa de atributo.

GetErrorAttribute(attribute string)

Um método que recebe um nome de atributo como entrada, procura e retorna um atributo de usuário de erro como interface{} e um bool que é true se a chave foi encontrada no mapa de atributos de erro.

GetStackTraceFrames()

Um método que retorna uma fatia de StackTraceFrame objetos contendo no máximo 100 linhas stack trace relevantes para um erro. Observe que chamar esse método pode ser caro porque a fatia precisa ser alocada e preenchida. É recomendado que este método seja chamado apenas quando necessário para otimizar o desempenho.

GetRequestURI()

Um método que retorna o URI da solicitação HTTP feita durante a transação pai do erro atual. Se nenhuma solicitação web ocorrer, uma string vazia será retornada.

GetRequestMethod()

Um método que retorna o método HTTP da solicitação da web que ocorreu durante a transação pai desse erro. Se nenhuma solicitação web ocorrer, uma string vazia será retornada.

GetHttpResponseCode()

Um método que retorna o código de resposta HTTP retornado durante a solicitação da Web que ocorreu durante a transação pai desse erro. Se nenhuma solicitação web ocorrer, uma string vazia será retornada.

GetUserID()

Um método que retorna o UserID que foi aplicado a este erro e transação. Se nenhum UserID foi definido, uma string vazia será retornada.

Rastreamento de usuário: associando um ID de usuário a cada transação e erro

Transações e erros podem ser associados a um ID de usuário se este for conhecido pelo agente Go New Relic. Use a API do agente Go txn.SetUserID("example user ID") para fornecer ao agente um ID de usuário.

Esta chamada de API requer um único argumento de uma string que representa um identificador exclusivo para um usuário final. Essa string pode ser um UUID, um ID de banco de dados ou similar. A chamada de API deve ser feita pelo menos uma vez por transação para informar ao agente Go do New Relic a qual ID de usuário associar a transação. Então, por sua vez, quando o agente perceber erros durante a vida útil da transação, os erros terão um atributo de agente enduser.id que contém o valor do ID do usuário.

Como a API deve ser chamada sempre que um novo ID de usuário entrar no escopo, o ideal é que ela seja chamada por meio de um middleware que esteja ciente da criação da sessão do usuário. Assim que o agente New Relic Go tiver conhecimento do ID do usuário, ele fornecerá o atributo de agente enduser.id na transação atual, bem como em quaisquer erros observados durante a vida útil da transação atual.

Envie dados personalizados do seu aplicativo

Para registrar dados personalizados com o agente Go, você pode usar qualquer um dos seguintes métodos:

Se você quiser...

Usa isto...

Envie dados sobre um evento para que você possa analisá-lo no New Relic

RecordCustomEvent()

Tag seu evento com metadados para filtrá-los e facetá-los

AddAttribute()

Relatar dados de desempenho personalizados por um período especificado

RecordCustomMetric()

Veja o registro relacionado

Para ver o log diretamente no contexto dos erros e rastreamento do seu aplicativo, use esta chamada de API para anotar seu log:

Para obter mais informações sobre como correlacionar dados log com outros dados de telemetria, consulte nossa documentação de logs contextualizados .

Monitor o desempenho do browser com monitoramento de browser

Para monitor o desempenho do browser do seu aplicativo usando e o agente Go, você pode usar qualquer um dos seguintes métodos:

Se você quiser...

Usa isto...

Instale o agente do browser

Use o método de copiar/colar do browser

Adicione o código JavaScript de monitoramento do browser diretamente nas páginas HTML

BrowserTimingHeader()

Alterar as definições de configuração do agente Go

Para gerenciar alguns aspectos do monitoramento do New Relic, você pode alterar as configurações de configuração do agente Go; por exemplo:

  • Ativando o modo de alta segurança
  • Adicionando rótulos personalizados para filtragem e classificação
  • Gerenciando quais informações são relatadas
Copyright © 2024 New Relic Inc.

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