Resumo
Este guia aborda as principais mudanças entre as séries 7.xe 8.x do agente Ruby, problemas que podem ser encontrados durante a atualização e como migrar com sucesso para a versão 8.x.
As principais mudanças incluem:
- Mudanças no método da API
add_method_tracer
- Distributed tracing está ativado por padrão
- O rastreamento multiaplicativo está obsoleto
- Métodos de API obsoletos e instrumentação herdada foram removidos
Consulte o marco da versão 8.0 para obter mais informações.
Mudanças no método da API add_method_tracer
O parâmetro de nome da métrica aceita Procs; strings não são mais interpoladas
O segundo argumento para add_method_tracer
é o nome da métrica usada para registrar chamadas para o método de rastreamento.
Anteriormente, essa string poderia incluir interpolação no estilo Ruby para permitir que o nome da métrica incluísse variáveis do receptor do método. Por exemplo:
# old (<= 7.2)add_method_tracer :foo, 'metric_#{args[0]}'
A partir da versão 8.0, esta string não será mais interpolada. Para preservar o comportamento descrito acima, passe um Proc:
# new (8.0+)add_method_tracer :foo, -> (*args) { "metric_#{args[0]}" } # note the double-quotes
Observe que a aridade do Proc passado para add_method_tracer
deve corresponder à aridade do método de rastreamento original (ou usar um splat compatível).
:code_header
e :code_footer
parâmetro aceita apenas Procs
Semelhante aos nomes de métricas, as opções :code_header
e :code_footer
para add_method_tracer
eram anteriormente fornecidas como strings que seriam interpoladas no contexto do receptor do método.
No agente Ruby 8.0, :code_header
e :code_footer
só serão invocados se forem fornecidos como Procs, como no exemplo acima.
Chame add_method_tracer
uma vez por método
Chamar add_method_tracer
diversas vezes no mesmo método substituirá qualquer rastreador de método definido anteriormente para esse método. Deve haver apenas uma linha add_method_tracer
para cada método de rastreamento.
Anteriormente, o agente permitia adicionar múltiplas métricas ao mesmo método invocando add_method_tracer
uma vez para cada métrica. Isto ainda pode ser feito, mas os nomes das métricas precisam ser passados como segundo argumento de add_method_tracer
como um array de strings ou 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']
Observe que o primeiro nome da métrica será criado como uma métrica com escopo, a menos que push_scope: false
seja especificado. A métrica nomeada a seguir não terá escopo. Cada método de rastreamento pode ter apenas uma métrica com escopo definido.
Dica
Versões mais antigas do Mocha podem causar problemas com o add_method_tracer
atualizado. A versão 1.2.0 do Mocha corrige esse bug, portanto, se após atualizar as versões do agente, você encontrar erros em seu conjunto de testes, como:
NoMethodError: super: no superclass method 'instance_method' for <ExampleClass>
e tiver a versão do Mocha < 1.2.0
instalada, tente aumentar a versão do Mocha para 1.2.0
ou superior.
Vimos apenas um erro surgir em um ambiente de teste chamando métodos Mocha. No entanto, recomendamos que você verifique a funcionalidade do seu aplicativo quando houver resolução de problemas.
Distributed tracing está ativado por padrão
A opção de configuração padrão para distributed_tracing.enabled
é definida como verdadeira para versões 8.0 ou superiores. Para desativar distributed tracing, defina esta opção de configuração como falsa em seu newrelic.yml
.
distributed_tracing: enabled: false
O rastreamento multiaplicativo está obsoleto
multiaplicativo Tracing está obsoleto na versão 8.0 e será removido em uma versão futura.
Dica
Distributed tracing e o rastreamento multiaplicativo não podem ser usados simultaneamente. Se ambas as opções de configuração estiverem habilitadas, somente distributed tracing será usado.
Para continuar usando o rastreamento multiaplicativo, as configurações do distributed tracing e do rastreamento multiaplicativo precisam ser atualizadas em seu newrelic.yml.
cross_application_tracing: enabled: true
distributed_tracing: enabled: false
Métodos de API obsoletos e instrumentação herdada foram removidos
Os métodos a seguir foram obsoletos anteriormente e agora foram removidos.
Removido | Substituição |
---|---|
|
|
|
|
|
|
Mongo <2.1 instrumentação | Atualize para o Mongo 2.1 ou superior |
Excon <0.19.0 instrumentação | Atualize para Excon 0.19.0 ou superior |