Os agentes do New Relic APM agora suportam APIs do OpenTelemetry (OTel), permitindo que você instrumente suas aplicações usando APIs do OpenTelemetry independentes de fornecedor, enquanto mantém acesso total aos poderosos recursos de APM da New Relic. Essa capacidade oferece a você a flexibilidade de escrever código de instrumentação portátil sem sacrificar a profundidade dos insights e recursos que a New Relic fornece.
Benefícios
Usar o suporte à API OpenTelemetry com os agentes New Relic oferece várias vantagens:
Instrumentação independente de fornecedor: Escreva instrumentação personalizada usando APIs padrão do OpenTelemetry que funcionam em diversas plataformas de observabilidade
Nenhuma migração necessária: Ative o suporte à API OTel no seu agente New Relic existente sem substituir sua instrumentação atual
Adoção gradual: Use as APIs do OpenTelemetry para nova instrumentação personalizada enquanto a instrumentação existente da New Relic continua funcionando
Compatibilidade de modo misto: Rastreie requisições de forma transparente entre serviços instrumentados com agentes New Relic, APIs OpenTelemetry ou agentes OTel puros
Instrumentação da comunidade: Aproveite a instrumentação nativa do OpenTelemetry para frameworks e bibliotecas
O que este recurso oferece
Quando você ativa o suporte à API do OpenTelemetry em um agente New Relic, o agente pode:
Capture spans, traces, métricas e logs criados usando APIs do OpenTelemetry
Integre a telemetria gerada pelo OTel perfeitamente aos traces do New Relic APM
Suporte a instrumentação nativa do OpenTelemetry que não entra em conflito com a instrumentação integrada do New Relic
Mantenha o contexto de rastreamento em serviços instrumentados mistos com New Relic e OpenTelemetry
Importante
Este recurso está desativado por padrão. Você deve habilitá-lo explicitamente por meio da configuração do agente.
Linguagens e recursos suportados
O suporte à API do OpenTelemetry está disponível para os seguintes agentes do New Relic APM:
Linguagem
Versão mínima
API de Traces
APImétrica
API de Logs
Links de extensão
Eventos em spans
Java
[9.1.0]
Node.js
[13.13.0]
.NET
[10.49.0]
Veja a nota abaixo
Python
[11.5.0]
Veja a nota abaixo
Ruby
[10.2.0]
Dica
Logs de .NET e Python: O agente .NET já utiliza a biblioteca de logging que se tornou a API do OpenTelemetry para dados de log. O agente Python já suporta o módulo logging. Para compatibilidade com versões anteriores, ativar o suporte à API do OpenTelemetry não altera a forma como esses agentes instrumentam logs.
Amostragem em ambientes mistos
Todos os agentes agora suportam amostragem de trace por taxa, alinhando-se aos padrões do OpenTelemetry e garantindo uma lógica de amostragem consistente em ambientes mistos.
Principais benefícios:
Decisões de amostragem consistentes entre o New Relic e serviços instrumentados com OTel
Preservação de decisões de rastreamento upstream dos SDKs do OTel
Para detalhes sobre como a amostragem adaptativa funciona, metas de amostragem por agente e opções de configuração, consulte Amostragem de rastreamento distribuído.
Tipos de instrumentação suportados
Instrumentação nativa (automática)
A instrumentação nativa do OpenTelemetry é suportada por padrão. Essas instrumentações são incorporadas diretamente à biblioteca ou framework por seu mantenedor e funcionam automaticamente quando você habilita o suporte à API do OpenTelemetry.
As instrumentações nativas específicas disponíveis variam de acordo com o agente de linguagem. Consulte a seção de configuração para obter detalhes sobre quais instrumentações são suportadas para cada linguagem.
Importante
Limitação conhecida: Algumas instrumentações nativas podem produzir nomes de span ou nomes de métrica ligeiramente diferentes em comparação com a instrumentação integrada da New Relic devido a diferenças nas convenções semânticas do OpenTelemetry (por exemplo, Elasticsearch, RabbitMQ).
Instrumentação personalizada com APIs do OpenTelemetry
Você pode escrever instrumentação personalizada usando as APIs padrão do OpenTelemetry:
Traces: Crie spans personalizados e adicione atributos usando a API de Tracing do OpenTelemetry
Métricas: Registre métricas personalizadas usando a API de Métricas do OpenTelemetry (onde suportado)
Logs: Escreva logs usando a API de Logs do OpenTelemetry (onde suportado)
1. Habilite a autoconfiguração do SDK do OpenTelemetry
Use um dos seguintes métodos:
Propriedade do sistema:
bash
$
-Dotel.java.global-autoconfigure.enabled=true
Variável de ambiente:
bash
$
exportOTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true
2. Ativar o suporte ao New Relic OpenTelemetry
Propriedade do sistema:
bash
$
-Dnewrelic.config.opentelemetry.enabled=true
Variável de ambiente:
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Configuração YAML (newrelic.yml):
opentelemetry:
enabled:true
Importante
O agente Java instrumenta as APIs de trace, métricas e logs do OpenTelemetry para capturar sinais emitidos pela sua aplicação. Ele não inclui ou habilita automaticamente nenhuma instrumentação do OpenTelemetry. A autoinstrumentação do OpenTelemetry não é suportada.
Tipos de instrumentação suportados
Instrumentação manual
A instrumentação personalizada usando as APIs de rastreamento, métricas ou logs do OpenTelemetry será capturada automaticamente pelo agente.
Biblioteca e instrumentação nativa
As instrumentações de biblioteca independentes do OpenTelemetry e a instrumentação nativa incorporada diretamente nas bibliotecas funcionarão com o agente New Relic. No entanto, a autoinstrumentação baseada em bytecode do OpenTelemetry não será detectada pelo agente New Relic.
Habilitar suporte à API OpenTelemetry
Habilite o suporte à API do OpenTelemetry no seu arquivo de configuração newrelic.js:
exports.config={
// ... other config
opentelemetry:{
enabled:true,
traces:{
enabled:true
}
}
// ... other config
}
Importante
O agente Node.js não habilita automaticamente nenhuma instrumentação do OpenTelemetry. Ele instrumenta apenas as APIs OpenTelemetry para capturar a telemetria emitida pela sua aplicação.
APIs do OpenTelemetry suportadas
Quando o suporte ao OpenTelemetry está ativado, o agente Node.js suporta totalmente:
A API de Métricas é o recurso mais útil para clientes Node.js. Isso expande a capacidade de coleta de métricas para incluir métricas dimensionais, um recurso frequentemente solicitado.
A API de Logs do OpenTelemetry para JavaScript ainda está em desenvolvimento, mas o agente Node.js oferece suporte a ela. Você pode usar a API para emitir logs que serão enviados para o New Relic.
Clientes que instrumentam suas aplicações com a API do OpenTelemetry verão que o agente processa e envia esses dados corretamente.
Instrumentação nativa e de biblioteca (limitada)
A lista de instrumentações do OpenTelemetry tem uma sobreposição significativa com os módulos suportados pelo agente Node.js. Instrumentações que ainda não são cobertas pelo agente New Relic podem:
Conflito com componentes internos do agente
Não ter demanda suficiente do cliente
Cuidado
Não testamos instrumentações OpenTelemetry fora da lista oficial do OpenTelemetry e não podemos recomendar nenhuma específica neste momento.
Limitações conhecidas
Sem instrumentações automáticas: O agente não habilita automaticamente as instrumentações do OpenTelemetry. Os clientes devem instrumentar manualmente seu código usando as APIs do OpenTelemetry.
Habilitar suporte à API OpenTelemetry
Habilite o suporte à API do OpenTelemetry usando variáveis de ambiente ou o arquivo de configuração XML newrelic.config.
Usando variáveis de ambiente:
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Usando newrelic.config:
<configuration>
<openTelemetryenabled="true"/>
</configuration>
Dica
Traces e Métricas são habilitados por padrão quando o suporte ao OpenTelemetry está ativado.
Instrumentações nativas suportadas
Ao ativar o suporte à API do OpenTelemetry, o agente .NET pode capturar telemetria de bibliotecas instrumentadas com OpenTelemetry.
Instrumentações de traces
O agente suporta bibliotecas com instrumentação nativa de tracing do OpenTelemetry. A instrumentação personalizada escrita usando a API de rastreamento do OpenTelemetry também é suportada.
Instrumentações de métricas
Quando as métricas estão habilitadas, o agente suporta instrumentações de métricas do OpenTelemetry de bibliotecas e frameworks. A instrumentação personalizada escrita usando a API de métricas do OpenTelemetry também é suportada.
Instrumentações de logs
O agente .NET já instrumenta a biblioteca de logging que se tornou a API OpenTelemetry para dados de log. Não são necessárias alterações para logs ao habilitar o suporte à API do OpenTelemetry. Para compatibilidade com versões anteriores, a instrumentação de log continua funcionando como antes.
Habilitar suporte à API OpenTelemetry
Habilite o suporte à API do OpenTelemetry no seu arquivo de configuração newrelic.ini ou usando variáveis de ambiente:
Usando newrelic.ini:
[newrelic]
opentelemetry.enabled=true
Usando variável de ambiente:
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Importante
Quando o suporte ao OpenTelemetry estiver habilitado, o agente detectará automaticamente se opentelemetry-api está instalado e passará a usar a instrumentação do OpenTelemetry para bibliotecas suportadas.
Como funciona
Quando o suporte ao OpenTelemetry estiver habilitado e o agente detectar que o opentelemetry-api está instalado:
Instrumentação nativa: Para bibliotecas com instrumentação nativa do OpenTelemetry integrada, o agente desativa automaticamente os hooks da New Relic e utiliza a instrumentação nativa do OpenTelemetry.
Instrumentação de biblioteca: Se uma biblioteca de instrumentação do OpenTelemetry for detectada, o agente usa automaticamente a instrumentação do OpenTelemetry em vez dos hooks de instrumentação da New Relic.
Algumas instrumentações (como bibliotecas AWS e gRPC) continuarão a usar a instrumentação da New Relic. Bibliotecas de IA com instrumentação nativa estão explicitamente desabilitadas por enquanto e serão suportadas em uma versão futura.
Instrumentação manual
Qualquer instrumentação personalizada escrita usando a API de rastreamento do OpenTelemetry será capturada pelo agente.
Exemplo:
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("my-custom-span")as span:
span.set_attribute("custom.attribute","value")
# Your code here
Recurso suportado
API de Traces
✅ Totalmente suportado: Crie spans personalizados e adicione atributos usando a API de Tracing do OpenTelemetry
APImétrica
❌ Ainda não suportado: A OpenTelemetry Metrics API não está habilitada no agente Python
API de Logs
✅ Já funciona: O agente já suporta o módulo logging. Não há API do OpenTelemetry para logging em Python (existe apenas um SDK). O que o OpenTelemetry configura para logging é se ele está habilitado e para quais endpoints enviar dados.
Como funciona
Quando o suporte ao OpenTelemetry estiver habilitado:
O Agente pesquisa o sistema para determinar se as bibliotecas de instrumentação OpenTelemetry estão instaladas
Alternância automática: Se encontrada, o agente usa a instrumentação da biblioteca OpenTelemetry em vez dos hooks da New Relic
Integração perfeita: os spans do OpenTelemetry são integrados aos traces do New Relic
Limitações conhecidas
Métricas não suportadas: A API de métricas do OpenTelemetry ainda não está habilitada
Algumas bibliotecas da AWS e gRPC excluídas: Continuarão usando a instrumentação da New Relic
Bibliotecas de IA desativadas: A instrumentação nativa do OpenTelemetry para bibliotecas de IA está desativada por enquanto
Configurações de inclusão/exclusão: Opções de ajuste fino estão planejadas para versões futuras, mas apenas ativar/desativar está funcional no momento
Habilitar suporte à API OpenTelemetry
Para habilitar o suporte à API do OpenTelemetry no agente Ruby, adicione o seguinte ao seu arquivo de configuração newrelic.yml:
opentelemetry:
enabled:true
Ou defina a variável de ambiente:
bash
$
NEW_RELIC_OPENTELEMETRY_ENABLED=true
Importante
Quando o suporte ao OpenTelemetry estiver habilitado, o agente detectará automaticamente se opentelemetry-api está instalado e passará a usar a instrumentação do OpenTelemetry para bibliotecas suportadas.
Instrumentação manual
Qualquer instrumentação personalizada escrita usando a API de rastreamento do OpenTelemetry será capturada pelo agente.
✅ Suportado: Criar spans personalizados e adicionar atributos usando a API de Tracing do OpenTelemetry
APImétrica
❌ Não suportado: API de Métricas do OpenTelemetry
API de Logs
❌ Não suportado: OpenTelemetry Logs API
Links de Span
❌ Não suportado: Span Links
Eventos em Spans
❌ Não suportado: Eventos em Spans
Como funciona
Quando o suporte ao OpenTelemetry está habilitado, o agente Ruby da New Relic:
Escuta chamadas feitas para as APIs de rastreamento do OpenTelemetry
Traduz essas chamadas em modelos de dados do New Relic
Incorpora spans do OpenTelemetry aos traces do New Relic
callout.information
Por padrão, a instrumentação do OpenTelemetry é excluída para bibliotecas que o agente Ruby da New Relic também instrumenta. Isso inclui bibliotecas instrumentadas nativamente e bibliotecas com pacotes de instrumentação no opentelemetry-ruby-contrib.
Limitações conhecidas
Suporte limitado à API: Apenas a API de Traces é suportada nesta versão
Métricas e Logs: Não disponível
Links de Span e Eventos: Não suportado atualmente
Verifique se está funcionando
Após habilitar o suporte à API do OpenTelemetry, verifique se está funcionando:
Implante sua aplicação com a configuração do agente atualizada.
Se estiver usando instrumentação personalizada, certifique-se de que seu código esteja criando spans/métricas usando as APIs do OpenTelemetry.
Visualize traces distribuídos para ver spans criados pelas APIs do OpenTelemetry integrados aos seus traces
Limitações e problemas conhecidos
Limitações da instrumentação
Limitação
Descrição
Instrumentação de biblioteca não suportada
Instrumentações de bibliotecas OpenTelemetry que requerem instalação de pacote separada não são suportadas nesta versão. Apenas instrumentações nativas criadas diretamente na biblioteca pelo seu mantenedor funcionam automaticamente.
Instrumentação de bytecode Java não detectada
A autoinstrumentação Java OpenTelemetry que usa manipulação de bytecode não será detectada pelo agente Java da New Relic.
Diferenças de convenções semânticas
Algumas instrumentações do OpenTelemetry usam convenções de nomenclatura diferentes para spans e métricas em comparação com a instrumentação nativa do New Relic:
Elasticsearch: Nomes de span e nomes de operação podem diferir em maiúsculas e minúsculas e comprimento
RabbitMQ: O rastreamento distribuído funciona de forma diferente (links de span vs. relacionamentos pai/filho)
Dica
Essas diferenças podem afetar dashboards e condições de alerta existentes que dependem de nomes específicos de spans ou métricas. Revise e atualize suas consultas se você mudar da instrumentação do New Relic para a instrumentação do OpenTelemetry para estes serviços.
Limitações específicas do agente
Python: Apenas a API de Traces é suportada; as APIs de Métricas e Logs não estão disponíveis
Ruby: Apenas a API de Traces é suportada; as APIs de Métricas e Logs não estão disponíveis
.NET: Habilitar métricas do OpenTelemetry pode aumentar os custos de ingestão de métricas dimensionais
Resolução de problemas
Spans do OpenTelemetry não aparecem nos rastreamentos
Se você habilitou o suporte à API do OpenTelemetry, mas não vê spans gerados pelo OTel em seus traces:
Verifique a configuração do seu agente para confirmar se o suporte ao OpenTelemetry está ativado:
Revise as variáveis de ambiente ou os arquivos de configuração
Verifique os logs do agente para confirmar se o suporte ao OpenTelemetry está ativo
Certifique-se de ter reiniciado sua aplicação após alterar a configuração
Confirme se você está executando a versão mínima necessária do agente que suporta as APIs do OpenTelemetry. Consulte a tabela de linguagens suportadas acima.
Precisa de ajuda?
Se você estiver enfrentando problemas com o suporte à API OpenTelemetry, entre em contato com o Suporte da New Relic para obter assistência.