Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Guía para usar la API del agente Go

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

StartTransaction()

Dejar de cronometrar una transacción

txn.End()

Evitar que una transacción se informe a New Relic

Ignore()

Utilice el paquete de biblioteca HTTP estándar para monitor transacciones

Envoltura de solicitudes HTTP

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 quieres...

Utilizar esta...

Cambiar el nombre de una transacción

SetName()

Agregue metadatos (como el nombre de la cuenta de sus clientes o el nivel de suscripción) a su transacción

AddAttribute()

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)

StartExternalSegment()

Conecte la actividad a otra aplicación instrumentada por un agente de New Relic

Rastreo multiaplicación

Importante

El 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.

rastreo 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

NoticeError()

Informar un error esperado que el agente no informa automáticamente y no activa alertas

NoticeExpectedError()

Evitar que el agente informe un error en absoluto

ErrorCollector.IgnoreStatusCodes()

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

Error

El objeto de error Go detectado. Esto será nulo para errores HTTP y pánicos.

TimeOccured

La time.Time en que el agente notó el error.

Message

El mensaje de error.

Class

La clase de error New Relic. Si un error implementa errorClasser, su valor se derivará de eso. En caso contrario, se derivará de la forma en que el error fue recogido por el agente. Para errores HTTP, este será el número de error. Los pánicos serán el valor constante público newrelic.PanicErrorClass. De lo contrario, la clase de error se extraerá del objeto de error raíz llamando a reflect.TypeOf(). La clase de error raíz más común es *errors.errorString.

Expected

Un bool que es true cuando se esperaba el error.

TransactionName

El nombre formateado de una transacción tal como aparecería en la UI de New Relic.

GetTransactionUserAttributes(attribute string)

Un método que toma un nombre de atributo como entrada, luego busca y devuelve un atributo de usuario de transacción como interface{} y un bool que es true si la clave se encontró en el mapa de atributos.

GetErrorAttribute(attribute string)

Un método que toma un nombre de atributo como entrada, luego busca y devuelve un atributo de usuario de error como interface{} y un bool que es true si la clave se encontró en el mapa de atributos de error.

GetStackTraceFrames()

Un método que devuelve una porción de StackTraceFrame objetos que contienen un máximo de 100 líneas de rastreo de la pila relevantes para un error. Tenga en cuenta que llamar a este método puede resultar costoso porque es necesario asignar y completar el segmento. Se recomienda llamar a este método solo cuando sea necesario para optimizar el rendimiento.

GetRequestURI()

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.

GetRequestMethod()

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.

GetHttpResponseCode()

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.

GetUserID()

Un método que devuelve el UserID que se aplicó a este error y transacción. Si no se definió ningún UserID , se devolverá una cadena vacía.

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

RecordCustomEvent()

Etiqueta tu evento con metadatos para filtrarlos y facetarlos

AddAttribute()

Informar datos de rendimiento personalizados durante un período de tiempo específico

RecordCustomMetric()

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

BrowserTimingHeader()

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