Para enviar datos de error que está manejando en su propio código a New Relic, use la llamada Ruby API del agente NewRelic::Agent.notice_error
dentro de su controlador de errores.
Notificar al agente de New Relic Ruby sobre un error
Esta llamada API toma la excepción y un hash de opciones opcional. Utilice este formato:
NewRelic::Agent.notice_error(exception, options = { }) ⇒ Object
Esta función registra el error dado y lo pasa por el proceso normal de filtrado de errores, incluida la ignorancia de errores basada en la configuración y el método global #ignore_error_filter
, si está definido.
El exception
es la excepción que se registrará o un mensaje de error. Si es necesario, también puede incluir options = { }
. El siguiente parámetro recibirá un tratamiento especial y cualquier otro parámetro que proporcione se tratará como parámetro personalizado.
options = { } | Comments |
---|---|
| Sólo registra el error de traza. Esto no afecta la tasa de errores ni el estado de Apdex. Para obtener información sobre el error esperado en la UI, consulte Ver error esperado. Reemplaza la opción |
| Parámetro personalizado. |
| La ruta de la solicitud, menos cualquier parámetro de solicitud o cadena de consulta. Generalmente no es necesario. Incluya esto solo si llama |
| El nombre de la métrica asociada con la transacción. Generalmente no es necesario. Incluya esto solo si llama |
| Las versiones anteriores del agente Ruby permitían pasar una opción |
Error huellas dactilares: aplica dinámicamente un grupo de errores a cada error detectado
¿Están mal agrupadas sus ocurrencias de errores? Configure su propia huella digital de error mediante una función de devolución de llamada.
Se puede proporcionar una devolución de llamada basada en Proc
al agente para aplicar dinámicamente un grupo de errores deseado a cada error detectado. Utilice la API del agente Ruby NewRelic::Agent.set_error_group_callback
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 Proc
) como único argumento. El argumento es necesario. La llamada API solo debe realizarse una vez por lanzamiento del agente New Relic Ruby, por lo que la llamada se puede realizar en un inicializador Rails o similar. Si se realizan llamadas posteriores a la API, el método de devolución de llamada se actualizará al más nuevo proporcionado. A continuación se muestra un ejemplo de una devolución de llamada definida y pasada al método API NewRelic::Agent.set_error_group_callback
:
proc = proc { |hash| "Access" if hash[:'http.statusCode'] == 401 }NewRelic::Agent.set_error_group_callback(proc)
En el ejemplo mostrado, se crea un proceso de devolución de llamada que aceptará un hash como único argumento y luego devolverá la cadena "Acceso" para el nombre del grupo de errores deseado si el hash contiene una clave de código de estado HTTP con un valor de 401.
Se espera que el proceso de devolución de llamada reciba exactamente un argumento de entrada, un hash. El hash contiene lo siguiente:
Key | Value |
---|---|
| La instancia de clase de error de Ruby. Ofertas |
| Cualquier atributo personalizado para la transacción actual |
| El URI de solicitud actual, si está disponible |
| El código de estado HTTP (200, 404, etc.) si está disponible |
| El método HTTP (GET, PUT, etc.) si está disponible |
| Si (verdadero) o no (falso) se esperaba el error |
| El hash de opciones pasó a |
Se espera que el proceso de devolución de llamada devuelva una cadena que represente el nombre del grupo de errores deseado, si se puede determinar. Si el proceso devuelve un nil
o una cadena vacía (''
), entonces el error recibirá la lógica de agrupación del lado del servidor.
Seguimiento de usuarios: asociar un ID de usuario a cada transacción y error
Ahora puede ver la cantidad de usuarios afectados por un grupo de error.
Las transacciones y los errores se pueden asociar con una identificación de usuario si el agente de New Relic Ruby la conoce. Utilice la API del agente Ruby NewRelic::Agent.set_user_id
para proporcionar 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 Ruby 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 Ruby tenga conocimiento del 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.