Novo recurso
Adicionada a filtragem de atributo de agente por meio de regras de inclusão e exclusão.
Os atributos do agente agora podem ser controlados usando regras refinadas de inclusão e exclusão. Essas regras, descritas abaixo, substituem
capture_paramseignored_params. Quaisquer atributos listados emignored_paramsserão migrados paraattributes.excludeinternamente, a menos queattributes.excludeseja definido explicitamente.Três novas propriedades de configuração foram adicionadas à configuração raiz e a cada destino (mais sobre destinos adiante). Essas novas configurações são:
attributes.enabled- Permite a coleta de atributos para o destino.attributes.include- Uma lista de atributos ou regras de curinga para incluir.attributes.exclude- Uma lista de atributos ou regras de curinga para excluir.
As regras de inclusão e exclusão podem ser regras exatas (por exemplo,
request.headers.contentLength) ou regras curinga que correspondem apenas ao início das chaves de atributo (por exemplo,request.headers.*corresponderia a qualquer cabeçalho de requisição).Essas regras podem ser especificadas globalmente na raiz da configuração, ou para destinos específicos. Esses destinos são:
transaction_tracer- Controla os atributos de trace da transação.transaction_events- Controla atributos de evento de transação.error_collector- Controla os atributos de evento de erro.browser_monitoring- Controla atributos de transação de navegador/RUM.
addCustomParameterrenomeado paraaddCustomAttribute.O método
addCustomParameteragora está descontinuado e será removido em uma versão futura do agente. O métodoaddCustomAttributeé um substituto direto para ele.Adicionado cache à filtragem de atributo do agente.
Para minimizar a sobrecarga de aplicação de regras de atributo, o agente armazena em cache os resultados da filtragem de chaves de atributo e destinos específicos. O cache é limitado a 1.000 pares de destino-chave por padrão, mas pode ser configurado com
attributes.filter_cache_limit. Esse cache oferece uma melhoria de 10x na aplicação de regras de filtro para ocorrências no cache.Adicionado
allow_all_headersàs opções de configuração e atualizada a instrumentação dehttp.Quando definido como
true, o agente coletará todos os cabeçalhos de solicitação. Essa coleta respeita as regras de inclusão e exclusão de atributo do agente. Um conjunto padrão de regras de exclusão é fornecido emnewrelic.js. Essas regras excluem todos os cookies e cabeçalhos de autenticação.Os segmentos agora podem ser sinalizados como opacos, fazendo com que os segmentos internos sejam omitidos do trace da transação.
Melhorias
Foram adicionados limites para atributos de agente para manter a sobrecarga de monitoramento baixa.
As chaves e os valores de atributo são limitados a 255 bytes cada. Chaves que são maiores que 255 bytes são descartadas, e uma mensagem de aviso é registrada. Valores maiores que 255 bytes são truncados para 255 bytes, respeitando a codificação UTF-8 multibyte. Atributos personalizados estão limitados a 64 por transação. Atributos além do 64º são ignorados silenciosamente.
Erro adicionado à mensagem do log de falha de conexão do coletor.
Atributo
request_urirenomeado pararequest.uri.Isso alinha o nome do atributo com todos os outros atributos de solicitação.
Dependência
https-proxy-agentatualizada de^0.3.5para^0.3.6.Testes versionados atualizados, quando aplicável, para garantir que a maioria das versões menores dos módulos instrumentados funcione conforme o esperado.
Corrigido o teste travado para a linha v1 do driver do Mongo.
Adicionados testes para verificar se as transações 404 do Hapi resultam em métricas nomeadas corretamente.
A instrumentação do Hapi estava fazendo o correto, mas não havia testes para este caso específico.
Correções de bugs
O agente não travará mais quando
crypto.DEFAULT_ENCODINGfor alterado.Anteriormente, o agente assumia que o resultado de
hash.digest()era uma instância de um Buffer. Secrypto.DEFAULT_ENCODINGfor alterado,hash.digest()retornará uma string e o agente travaria. O agente agora garante que o valor seja uma instância de Buffer antes de prosseguir.Corrigido erro se
process.config.variables.node_prefixestiver ausente.Se
process.config.variables.node_prefixfor falso (o que pode acontecer ao usar o electron, levando a este problema https://support.newrelic.com/s/hubtopic/aAX8W0000008ZMO/new-relic-on-electron-nodejs) a funçãogetGlobalPackagesemlib/environment.jsdará um erro quando não deveria.Agradecemos a Jarred Filmer (@BrighTide) pela correção!