O OpenTelemetry Protocol (OTLP) é um protocolo de entrega de dados de telemetria de uso geral projetado para o projeto OpenTelemetry. Cada SDK de linguagem OpenTelemetry fornece exportadores OTLP, e o coletor OpenTelemetry tem receptores e exportadores OTLP. Além disso, várias ferramentas fora do projeto OpenTelemetry adicionaram suporte para exportação OTLP.
A New Relic oferece suporte à ingestão OTLP nativa e a recomenda como o método preferencial para enviar dados OpenTelemetry para a plataforma New Relic. Esta página aborda o suporte OTLP da New Relic, incluindo configuração, requisitos e recomendações.
Antes de você começar
Se ainda não o fez, inscreva-se para obter uma conta gratuita da New Relic.
Obtenha seu para a conta New Relic para a qual você deseja reportar dados. Esta chave de licença será usada ao configurar o cabeçalho
api-key
.
Configuração: endpoint, porta e protocolo OTLP
Nível de exigência: Required
Para configurar o envio de dados OTLP para New Relic, você deve configurar seu exportador OTLP para usar o endpoint e a porta relevantes da tabela abaixo com base em seu ambiente.
O mecanismo para configurar o endpoint varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_ENDPOINT=<INSERT_ENDPOINT>
(consulte a documentação do OpenTelemetry para obter mais informações).
Além disso, você deve configurar seu exportador OTLP para usar a versão binária protobuf OTLP/HTTP do protocolo, se disponível. Embora o New Relic suporte todas as versões do OTLP, o protobuf binário OTLP/HTTP provou ser mais robusto que o gRPC sem qualquer redução aparente no desempenho.
O mecanismo para configurar o endpoint varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
(consulte a documentação do OpenTelemetry para obter mais informações).
Se você estiver usando um coletor, recomendamos usar o otlphttpexporter.
Ambiente | gRPC | HTTP | Endpoint | Portas suportadas |
---|---|---|---|---|
OTLP dos EUA | ✅ | ✅ |
|
|
OTLP da UE | ✅ | ✅ |
|
|
OTLP FedRAMP dos EUA | ✅ | ✅ |
|
|
Rastreamento infinito | ✅ | ✅ |
|
|
Configuração: criptografia TLS
Nível de exigência: Required
Para enviar dados OTLP para New Relic, você deve configurar seu exportador OTLP para usar TLS 1.2 (consulte Criptografia TLS para obter mais informações). Geralmente, os exportadores de SDK e coletor atendem a esse requisito por padrão.
Embora muitos exportadores OTLP infiram configurações de TLS do esquema de endpoint https
, alguns exportadores gRPC podem exigir que você ative explicitamente o TLS. O mecanismo para configurar o gRPC TLS varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_INSECURE=false
(consulte a documentação do OpenTelemetry para obter mais informações).
Configuração: Configurando a chave da API
Nível de exigência: Required
Para enviar dados OTLP para o New Relic, você deve configurar seu exportador OTLP para incluir um cabeçalho chamado api-key
com o valor definido para sua chave de licença. Não fazer isso resultará em erros de autenticação.
O mecanismo para configurar cabeçalhos varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_HEADERS=api-key=<INSERT_LICENSE_KEY>
(consulte a documentação do OpenTelemetry para obter mais informações).
Configuração: limites de atributo
Nível de exigência: Required
Para enviar dados OTLP para New Relic, você deve configurar sua fonte de telemetria para estar em conformidade com os limites de atributo New Relic . Não fazer isso pode resultar em evento NrIntegrationError
durante a validação de dados assíncrono.
Os limites de atributo são os seguintes:
- Comprimento máximo do nome do atributo: 255 caracteres
- Comprimento máximo do valor do atributo: 4.095 caracteres
- Tamanho máximo do valor da matriz atributo: 64 entradas
Consulte limites de atributo métrico e limites de atributo de evento para outros limites.
O mecanismo para configurar limites de atributo varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração das variáveis de ambiente OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT=4095
e OTEL_ATTRIBUTE_COUNT_LIMIT=64
(consulte a documentaçãoOpenTelemetry para obter mais informações).
Ao usar o coletor, você pode configurar o processador de transformação para truncar o atributo para os limites New Relic .
Notas:
- Os atributos de recursos estão sujeitos a limites de atributos, mas não há variáveis de ambiente padrão para limitá-los. Se um atributo de recurso estiver acima do limite permitido, considere truncar usando o processador de transformação de coletor ou substituir o atributo de recurso por outro valor.
- Não há um mecanismo padrão para limitar nomes de atributos. Entretanto, a instrumentação geralmente não produz nomes de atributos que excedam os limites New Relic . Se você encontrar limites de comprimento de nome, remova o atributo usando o coletor.
Configuração: lote de carga útil, tempo limite, compactação e limites de taxa
Nível de exigência: Required
Para enviar dados OTLP para o New Relic, sua carga deve ser menor que o tamanho máximo de carga de 1 MB (10 ^ 6 bytes). Cargas maiores serão rejeitadas com um código de status de erro. Cargas maiores também podem falhar na exportação com um tempo limite antes que um código de status de erro seja retornado.
Além disso, a New Relic impõe limites de taxas. Quando o limite de taxa for excedido, as solicitações serão rejeitadas com um código de status de erro.
Para evitar limites de tamanho de carga útil e limites de taxa, você deve configurar seu exportador OTLP para usar um tamanho de lote apropriado que faça com que os dados sejam exportados em um intervalo apropriado.
O mecanismo para configurar o lote irá variar. Os SDKs do OpenTelemetry geralmente suportam a configuração das seguintes variáveis de ambiente (consulte a documentação do OpenTelemetry para obter mais informações):
OTEL_BSP_*
para vãosOTEL_METRIC_EXPORT_*
para métricaOTEL_BLRP_*
para logs
Se usar o coletor, o processador de lote controla o tamanho do lote.
Além disso, você deve prestar atenção às configurações de tempo limite do exportador. Geralmente, as solicitações de exportação demoram mais quando a carga é maior e quando as redes são mais lentas (maior latência, menor largura de banda). Se o seu aplicativo produzir grande carga porque o volume de telemetria é alto ou o intervalo de exportação é alto, pode ser necessário aumentar as configurações de tempo limite padrão para evitar erros de exportação.
O mecanismo para configurar o tempo limite varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_TIMEOUT
(consulte a documentação do OpenTelemetry para obter mais informações).
Além disso, você deve ativar a compactação para reduzir o tamanho da carga útil e limitar a probabilidade de encontrar limites de tamanho da carga útil. New Relic oferece suporte à compactação gzip
e zstd
. A compactação zstd
tem desempenho superior e é recomendada se o seu exportador oferecer suporte. Consulte a comparação de compactação para obter mais detalhes sobre informações de benchmark.
O mecanismo para configurar o endpoint varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_COMPRESSION=gzip
(consulte a documentação do OpenTelemetry para obter mais informações).
Se estiver usando o coletor, gzip
é a compactação padrão, mas você pode configurar opcionalmente zstd
.
Configuração: tentar novamente
Nível de exigência: Recommended
Para enviar dados OTLP para o New Relic, você deve configurar seu exportador OTLP para tentar novamente quando ocorrerem erros transitórios. A Internet não é confiável e não tentar novamente aumenta a probabilidade de perda de dados.
O mecanismo para configurar a nova tentativa irá variar. Alguns SDKs OpenTelemetry podem ter variáveis de ambiente específicas de linguagem (por exemplo, java suporta a configuração OTEL_EXPERIMENTAL_EXPORTER_OTLP_RETRY_ENABLED=true
), mas não há nenhum mecanismo geral. A configuração programática pode ser necessária.
Se estiver usando o coletor, otlphttpexporter
e otlpexporter
tentarão novamente por padrão. Veja exporterhelper
para mais detalhes.
Configuração: temporalidade de agregação métrica
Nível de exigência: Recommended
Para enviar dados métricos OTLP para New Relic, você deve configurar seu exportador métrico OTLP para preferir a temporalidade de agregação delta. Embora New Relic suporte a temporalidade de agregação cumulativa, o New Relic métrica arquitetura é geralmente um sistema delta métrico. Usar a configuração cumulativa padrão geralmente incorrerá em mais uso de memória dos SDKs e resultará em uma alta ingestão de dados.
O mecanismo para configurar o endpoint varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta
(consulte a documentação do OpenTelemetry para obter mais informações). Se definir manualmente a temporalidade, configure por tipo de instrumento da seguinte forma:
- Counter, Asynchronous Counter, Histogram: Delta
- UpDownCounter, Asynchronous UpDownCounter, Gauge, Asynchronous Gauge: Cumulative
A temporalidade cumulativa é usada para instrumentos que mapeiam os tipos de medidoresNew Relic e que geralmente são analisados usando o valor cumulativo.
Configuração: agregação de mistogram métrica
Nível de exigência: Recommended
Para enviar dados métricos OTLP para New Relic, você deve configurar seu exportador métrico OTLP para agregar medidas do histograma instrumento ao histograma exponencial. Em contraste com os intervalos estáticos usados com o histograma de intervalo explícito padrão, o histograma exponencial ajusta automaticamente seus intervalos para refletir o intervalo de medições registradas. Além disso, eles usam uma representação altamente compactada para enviar pela rede. O histograma exponencial fornece dados de distribuição mais úteis na plataforma New Relic .
O mecanismo para configurar o endpoint varia, mas os SDKs da linguagem OpenTelemetry geralmente suportam a configuração da variável de ambiente OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=base2_exponential_bucket_histogram
(consulte a documentação do OpenTelemetry para obter mais informações).
Versão do protocolo OTLP
New Relic usa versão OTLP v0.18.0. Versões posteriores são suportadas, mas novos recursos ainda não foram implementados. Recursos experimentais que não estão mais disponíveis na versão 0.18.0 não são suportados.
Tipos de atributos OTLP
Atributo é um conceito recorrente no OpenTelemetry e OTLP. OpenTelemetry tem uma definição de atributo padrão , afirmando que os valores de atributo são primitivos (string, booleano, ponto flutuante duplo, inteiro de 64 bits) ou matriz homogênea de primitivos. Entretanto, no nível do protocolo OTLP, os atributos são representados usando uma definição AnyValue
mais abrangente. Por isso, é possível que clientes OTLP enviem atributos que não estejam em conformidade com a definição padrão OpenTelemetry .
New Relic O OTLP endpoint suporta a definição de atributo padrão. Tipos complexos como mapas de mapas, matriz de objetos e matriz heterogênea não são suportados. Os SDKs do OpenTelemetry devem produzir apenas dados que estejam em conformidade com a definição de atributo padrão.
Importante
Embora a definição de atributo padrão seja geralmente usada, os atributos de registro log são excepcionais e suportam valores complexos (por exemplo, o tipo de atributo de registro log é map<string, any>
). Apesar disso, New Relic atualmente suporta apenas atributos de registro log que estejam em conformidade com a definição de atributo padrão.
Carga de resposta OTLP
Observe os seguintes detalhes sobre New Relic a endpoint carga de resposta OTLP da :
- As respostas bem-sucedidas do New Relic não têm corpo de resposta, em vez de uma resposta codificada em Protobuf com base no tipo de dados.
- A New Relic responde após a validação da autenticação, tamanho da carga útil e limitação de taxa. A validação do conteúdo da carga ocorre de forma assíncrona. Portanto, New Relic pode retornar códigos de status de sucesso apesar da ingestão de dados falhar e resultar no evento
NrIntegrationError
. - As respostas de falha do New Relic não incluem
Status.message
ouStatus.details
.