Resumen
Esta guía cubre los principales cambios entre las series 7.x y 8.x del agente Ruby, los problemas que pueden surgir durante la actualización y cómo migrar exitosamente a la versión 8.x.
Los principales cambios incluyen:
- Cambios en el método API
add_method_tracer
- Rastreo distribuido está habilitado por defecto
- El rastreo multiaplicación está en desuso
- Se eliminaron los métodos API obsoletos y la instrumentación legacy .
Consulte el hito de 8.0 para obtener más información.
Cambios en el método API add_method_tracer
El parámetro de nombre de métrica acepta Procs; cadenas ya no interpoladas
El segundo argumento de add_method_tracer
es el nombre de la métrica utilizada para registrar llamadas al método traza.
Anteriormente, esta cadena podía incluir interpolación estilo Ruby para permitir que el nombre de la métrica incluyera variables del receptor del método. Por ejemplo:
# old (<= 7.2)add_method_tracer :foo, 'metric_#{args[0]}'
A partir de la versión 8.0, esta cadena ya no se interpolará. Para preservar el comportamiento descrito anteriormente, pase un Proc en su lugar:
# new (8.0+)add_method_tracer :foo, -> (*args) { "metric_#{args[0]}" } # note the double-quotes
Tenga en cuenta que la aridad del Proc pasado a add_method_tracer
debe coincidir con la aridad del método traza original (o usar un símbolo compatible).
:code_header
y :code_footer
parámetro aceptan solo Procs
De manera similar a los nombres métricos, las opciones :code_header
y :code_footer
para add_method_tracer
se proporcionaban previamente como cadenas que se interpolarían en el contexto del receptor del método.
En Ruby agente 8.0, :code_header
y :code_footer
solo se invocarán si se proporcionan como Procs, como en el ejemplo anterior.
Llame a add_method_tracer
una vez por método
Llamar a add_method_tracer
varias veces en el mismo método sobrescribirá cualquier rastreador de método definido previamente para ese método. Debe haber solo una línea add_method_tracer
para cada método de traza.
Anteriormente, el agente permitía agregar varias métricas al mismo método invocando add_method_tracer
una vez para cada una de dichas métricas. Esto todavía se puede hacer, pero los nombres métricos deben pasarse como segundo argumento de add_method_tracer
como una matriz de cadenas o procs.
# oldadd_method_tracer :foo, 'metric1'add_method_tracer :foo, 'metric2', push_scope: falseadd_method_tracer :foo, 'metric3', push_scope: false
# newadd_method_tracer :foo, ['metric1', 'metric2', 'metric3']
Tenga en cuenta que el nombre de la primera métrica se creará como una métrica de ámbito a menos que se especifique push_scope: false
. La siguiente métrica nombrada no tendrá alcance. Cada método de traza solo puede tener una métrica de alcance.
Sugerencia
Las versiones anteriores de Mocha pueden causar problemas con el add_method_tracer
actualizado. La versión 1.2.0 de Mocha corrige este error, por lo que si después de actualizar las versiones del agente, se encuentra con errores en su conjunto de pruebas, como por ejemplo:
NoMethodError: super: no superclass method 'instance_method' for <ExampleClass>
y tiene instalada la versión de Mocha < 1.2.0
, intente aumentar la versión de Mocha a 1.2.0
o superior.
Solo hemos visto un error que aparece en un entorno de prueba que llama a los métodos de Mocha. Sin embargo, le recomendamos verificar la funcionalidad de su aplicación al momento de resolver problemas.
Rastreo distribuido está habilitado por defecto
La opción de configuración predeterminada para distributed_tracing.enabled
está establecida en verdadero para las versiones 8.0 o superiores. Para deshabilitar rastreo distribuido, establezca esta opción de configuración en falso en su newrelic.yml
.
distributed_tracing: enabled: false
El rastreo multiaplicación está en desuso
multiaplicación Tracing está obsoleto en 8.0 y se eliminará en una versión futura.
Sugerencia
El rastreo distribuido y el rastreo multiaplicación no se pueden utilizar simultáneamente. Si ambas opciones de configuración están habilitadas, entonces solo se utiliza rastreo distribuido.
Para continuar usando el rastreo de múltiples aplicaciones, la configuración tanto para rastreo distribuido como para el rastreo de múltiples aplicaciones debe actualizarse en su newrelic.yml.
cross_application_tracing: enabled: true
distributed_tracing: enabled: false
Se eliminaron los métodos API obsoletos y la instrumentación legacy .
Los siguientes métodos estaban previamente obsoletos y ahora se eliminaron.
Remoto | Reemplazo |
---|---|
|
|
|
|
|
|
Mongo < 2.1 instrumentación | Actualice a Mongo 2.1 o superior |
Excon < 0.19.0 instrumentación | Actualice a Excon 0.19.0 o superior |