Monitor su aplicación o microservicios New Relic for Go creando transacciones asociadas con actividades específicas del servidor de aplicaciones, como respuestas HTTP o tareas en segundo plano. Luego podrá ver el rendimiento de su aplicación en New Relic, incluida la página APM Transactions .
Identificar web y transacción no web
A diferencia de muchos otros lenguajes, la aplicación Go se ejecuta desde un archivo binario nativo compilado. Esto significa que configurar New Relic para su aplicación Golang requiere que agregue manualmente métodos New Relic a su código fuente.
En APM las transacciones se identifican como transacción web o transacción no web.
- Cuando instrumenta o envuelve una transacción que tiene una solicitud HTTP y un escritor de respuesta, New Relic la trata como una transacción web.
- Cuando instrumenta o envuelve una transacción que no tiene datos HTTP, New Relic la trata como una transacción no web.
Los segmentos son las funciones y llamadas que componen una transacción. También puedes usar New Relic for Go para agregar detalles a nivel de segmento a tu transacción.
Monitor una transacción
Importante
No utilice corchetes [suffix]
al final del nombre de su transacción. New Relic elimina automáticamente los corchetes del nombre. En su lugar, utilice paréntesis (suffix)
u otros símbolos si es necesario.
Para monitor una transacción: Coloque el siguiente código inmediatamente después del inicio de la función que desea monitor. Por ejemplo:
txn := app.StartTransaction("transaction_name")defer txn.End()
En este ejemplo de código:
app
se refiere a la variable asignada durante el proceso de configuración de New Relic. Para obtener más información, consulte los procedimientos de instalación del agente Go.- La instrucción
defer
pospone el final del segmento hasta que se cierra la función.
Para monitor una transacción web, llame a las API Transaction.SetWebRequest
y, opcionalmente, a la 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 una transacción con múltiples goroutines
Para monitor una transacción a través de múltiples goroutines, use Transaction.NewGoroutine()
. El método NewGoroutine
devuelve una nueva referencia a la transacción, que es requerida por cada rutina de creación de segmentos. No importa si llamas NewGoroutine
antes o después de que comience la otra rutina.
Todos los métodos Transaction
se pueden utilizar en cualquier referencia Transaction
. El Transaction
finalizará cuando se llame End()
en cualquier rutina.
Monitor una transacción envolviendo un controlador HTTP
Si está utilizando el paquete de biblioteca HTTP estándar, puede crear transacciones envolviendo solicitudes HTTP, como alternativa a instrumentar el código de una función.
A continuación se muestra un ejemplo del antes y el después de la envoltura de un controlador HTTP:
Before:
http.HandleFunc("/users", usersHandler)
After:
Esto inicia y finaliza automáticamente una transacción con el autor de la solicitud y la respuesta.
http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))
Para acceder a la transacción en su controlador, utilice la API newrelic.FromContext
. Tenga en cuenta que esto solo funcionará para las versiones 1.7 y posteriores de Go. Por ejemplo:
func myHandler(w http.ResponseWriter, r *http.Request) { txn := newrelic.FromContext(r.Context()) txn.NoticeError(errors.New("my error message"))}
Monitor errores
New Relic for Go captura errores de tres maneras diferentes:
Si quieres... | Utilizar esta |
---|---|
Realice un seguimiento de los errores e informe cualquier combinación de mensaje, clase y atributo | |
Realice un seguimiento del error esperado e informe cualquier combinación de mensaje, clase y atributo sin activar alertas ni afectar el error métrico. | |
Informar pánicos | La transacción finalizó con |
Informar códigos de respuesta de error | La transacción registra automáticamente los errores superiores a 400 y inferiores a 100. Consulte la documentación de New Relic for Go GitHub para obtener más información. |
Ver el registro de sus datos de infraestructura y APM
También puede reunir los datos de su registro y de la aplicación para que la resolución de problemas sea más fácil y rápida. Con el contexto de inicio de sesión, puede ver el mensaje de registro relacionado con sus errores y la traza directamente en UI de su aplicación.
Desde la página
Errors
, haga clic en una traza para ir a la página
En la página de detalles del error, haga clic en
See logs
.
Para ver detalles relacionados con un mensaje de registro individual, haga clic directamente en el mensaje.
También puede ver el inicio de sesión en el contexto de los datos de su infraestructura, como el clúster de Kubernetes. No es necesario cambiar a otra UI.
Métodos de transacción adicionales
El objeto Transaction
tiene varios métodos opcionales que se pueden utilizar para controlar el comportamiento de las transacciones, como NoticeError
, AddAttribute
y Ignore
. Para obtener una lista de métodos de transacción, consulte los métodos de transacción de New Relic for Go en Godoc.