El agente de New Relic Go monitorea su aplicación de lenguaje Go y sus microservicios para ayudarlo a identificar y resolver problemas de rendimiento. La API del agente Go es una de varias API de New Relic disponibles.
Importante
Debido a que la aplicación Go se ejecuta desde un archivo binario nativo compilado, necesita instrumentar manualmente su código para monitor las transacciones de su aplicación Go agregándole métodos New Relic.
Monitor transacciones
Antes de instrumentar manualmente su código para monitor transacciones, asegúrese de cumplir con la compatibilidad y los requisitos y de que esté utilizando la última versión del agente Go.
Si quieres... | Utilice este método... |
---|---|
Comience a cronometrar una transacción | |
Dejar de cronometrar una transacción | |
Evitar que una transacción se informe a New Relic | |
Utilice el paquete de biblioteca HTTP estándar para monitor transacciones |
Métodos específicos de tiempo que utilizan segmentos
Si una transacción ya es visible en New Relic, pero no tiene suficientes datos sobre un método en particular que se llamó durante esa transacción, puede crear segmentos. Por ejemplo, si desea cronometrar un método que tiene una lógica compleja, puede crear un segmento para cada uno de los métodos de la transacción.
Para instrumentar un método dentro de una transacción existente, cree segmentos para lo siguiente:
Si el trabajo se realiza en una rutina diferente a la que comenzó la transacción, debe utilizar la API NewGoroutine()
.
Mejorar los metadatos de una transacción
Puedes gestionar los metadatos que New Relic reporta para transacciones. A continuación se muestran algunos ejemplos de casos en los que es posible que desee un nivel diferente de detalle para su transacción:
- Si tiene un problema de agrupación métrica, cambie los nombres predeterminados de su transacción para hacerlos más identificables.
- Si desea crear un panel para su transacción, agregue un atributo personalizado.
Si quieres... | Utilizar esta... | |
---|---|---|
Cambiar el nombre de una transacción | ||
Agregue metadatos (como el nombre de la cuenta de sus clientes o el nivel de suscripción) a su transacción |
Instrumentar las llamadas a servicios externos
Utilice estos métodos para recopilar datos sobre las conexiones de su aplicación a otras aplicaciones o base de datos:
Si quieres... | Utilizar esta... |
---|---|
Cronometrar una llamada a un recurso externo (como un servicio externo, un servidor de base de datos o una cola de mensajes) | |
Conecte la actividad a otra aplicación instrumentada por un agente de New Relic | ImportanteEl rastreo de aplicaciones múltiples ha quedado obsoleto en favor de Distributed tracing y se eliminará en una versión futura de agente. |
Vea el camino que sigue una solicitud a medida que viaja a través de un sistema distribuido. |
Cobro o error omitido
El agente detecta errores automáticamente. Si desea cambiar la forma en que el agente Go informa errores a New Relic, cambie la configuración del selector de errores.
Si quieres... | Utilizar esta... |
---|---|
Informar un error que el agente no informa automáticamente | |
Informar un error esperado que el agente no informa automáticamente y no activa alertas | |
Evitar que el agente informe un error en absoluto |
Error huellas dactilares: aplica dinámicamente un grupo de errores a cada error detectado
Se puede proporcionar una función de devolución de llamada al agente para aplicar dinámicamente un grupo de errores deseado a cada error detectado. Utilice la opción de configuración Ir al agente newrelic.ConfigSetErrorGroupCallbackFunction
para proporcionarle al agente una devolución de llamada.
Esta llamada API toma un método de devolución de llamada (debe ser del tipo newrelic.ErrorGroupCallback
) como único argumento. He aquí un ejemplo:
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))
En el ejemplo que se muestra, se crea un proceso de devolución de llamada que aceptará un objeto de tipo newrelic.ErrorInfo
y devolverá una cadena que representa el grupo de error. Tenga en cuenta que cuando su función ErrorGroupCallback
devuelve una cadena que no está vacía, anulará el comportamiento de agrupación predeterminado de un error detectado y aplicará la lógica de agrupación del lado del servidor.
Se espera que la función de devolución de llamada reciba exactamente un argumento de entrada, un objeto newrelic.ErrorInfo
. El objeto contiene lo siguiente:
Key | Value |
---|---|
| El objeto de error Go detectado. Esto será nulo para errores HTTP y pánicos. |
| La time.Time en que el agente notó el error. |
| El mensaje de error. |
| La clase de error New Relic. Si un error implementa |
| Un bool que es |
| El nombre formateado de una transacción tal como aparecería en la UI de New Relic. |
| Un método que toma un nombre de atributo como entrada, luego busca y devuelve un atributo de usuario de transacción como |
| Un método que toma un nombre de atributo como entrada, luego busca y devuelve un atributo de usuario de error como |
| Un método que devuelve una porción de |
| Un método que devuelve el URI de la solicitud HTTP realizada durante la transacción principal del error actual. Si no se produjo ninguna solicitud web, se devolverá una cadena vacía. |
| Un método que devuelve el método HTTP de la solicitud web que ocurrió durante la transacción principal de este error. Si no se produjo ninguna solicitud web, se devolverá una cadena vacía. |
| Un método que devuelve el código de respuesta HTTP que se devolvió durante la solicitud web que se produjo durante la transacción principal de este error. Si no se produjo ninguna solicitud web, se devolverá una cadena vacía. |
| Un método que devuelve el |
Seguimiento de usuarios: asociar un ID de usuario a cada transacción y error
Las transacciones y los errores se pueden asociar con una identificación de usuario si el agente de New Relic Go la conoce. Utilice Go API del agente txn.SetUserID("example user ID")
para proporcionarle al agente un ID de usuario.
Esta llamada API requiere un único argumento de una cadena que represente un identificador único para un usuario final. Esta cadena puede ser un UUID, una identificación de base de datos o similar. La llamada API debe realizarse al menos una vez por transacción para informar al agente de New Relic Go con qué ID de usuario asociar la transacción. Luego, a su vez, cuando el agente detecta errores durante la vida útil de la transacción, los errores llevarán un atributo de agente enduser.id
que contiene el valor de ID de usuario.
Debido a que la API está diseñada para ser llamada cada vez que una nueva ID de usuario ingresa al alcance, idealmente se llamará a través de un middleware que tenga en cuenta la creación de la sesión del usuario. Una vez que el agente de New Relic Go conozca el ID de usuario, proporcionará el atributo de agente enduser.id
en la transacción actual, así como en cualquier error detectado durante la vida útil de la transacción actual.
Envía datos personalizados desde tu aplicación
Para registrar datos personalizados con el agente Go, puede utilizar cualquiera de los siguientes métodos:
Si quieres... | Utilizar esta... |
---|---|
Envía datos sobre un evento para que puedas analizarlo en New Relic | |
Etiqueta tu evento con metadatos para filtrarlos y facetarlos | |
Informar datos de rendimiento personalizados durante un período de tiempo específico |
Ver registro relacionado
Para ver el registro directamente dentro del contexto de los errores y la traza de su aplicación, use estas llamadas API para anotar su registro:
Para obtener más información sobre cómo correlacionar los datos log con otros telemetry data, consulte nuestra documentación logs en el contexto .
Monitor el rendimiento browser con monitoreo de browser
Para monitor el rendimiento del browser de su aplicación mediante y el agente Go, puede utilizar cualquiera de los siguientes métodos:
Si quieres... | Utilizar esta... |
---|---|
Instalar el agente del navegador | Utilice el método de copiar/pegar del browser |
Agregue el código JavaScript de monitoreo de browser directamente a las páginas HTML |
Cambiar los ajustes de configuración del agente Go
Para administrar algunos aspectos del monitoreo de New Relic, puede cambiar la configuración de su agente Go; Por ejemplo:
- Activar el modo de alta seguridad
- Agregar etiquetas personalizadas para filtrar y ordenar
- Gestionar la información que se reporta