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 | |
Pare de cronometrar uma transação | |
Impedir que uma transação seja reportada à New Relic | |
Use o pacote de biblioteca HTTP padrão para monitor transações |
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ê estiver enfrentando um problema de agrupamento métrico, altere os nomes padrão da sua transação para torná-los mais identificáveis.
- Se você deseja criar um dashboard para sua transação, adicione atributo personalizado.
Se você quiser... | Usa isto... | |
---|---|---|
Alterar o nome de uma transação | ||
Adicione metadados (como o nome da conta do seu cliente ou nível de assinatura) à sua transação |
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) | |
Conectar atividade a outro aplicativo instrumentado por um agente da New Relic | ImportanteO 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. |
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 | |
Relatar um erro esperado que o agente não reporta automaticamente e não aciona alertas | |
Impedir que o agente relate um erro |
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 |
---|---|
| O objeto de erro Go notado. Isso será nulo para erros HTTP e Panics. |
| A time.Time em que o erro foi percebido pelo agente. |
| A mensagem de erro. |
| A classe de erro New Relic. Se um erro implementar |
| Um bool que é |
| O nome formatado de uma transação conforme apareceria na interface do New Relic. |
| Um método que recebe um nome de atributo como imput, procura e retorna uma transação do usuário atributo como |
| Um método que recebe um nome de atributo como entrada, procura e retorna um atributo de usuário de erro como |
| Um método que retorna uma fatia de |
| 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. |
| 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. |
| 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. |
| Um método que retorna o |
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 | |
Tag seu evento com metadados para filtrá-los e facetá-los | |
Relatar dados de desempenho personalizados por um período especificado |
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 | |
Adicione o código JavaScript de monitoramento do browser diretamente nas páginas HTML |
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