• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Criar um problema

Rastreamento do OpenTelemetry: práticas recomendadas

Familiarize-se com estes tópicos trace do OpenTelemetry para garantir que seu rastreamento e extensões apareçam no New Relic.

Os campos obrigatórios

Os campos startTimeUnixNano e endTimeUnixNano em intervalos são obrigatórios de acordo com o protocolo OpenTelemetry para dados de rastreamento. Quando startTimeUnixNano não está presente, o intervalo é eliminado e um NrIntegrationError é criado. Quando endTimeUnixNano não está presente, a duração do seu intervalo é grande e negativa.

O campo timeUnixNano no evento span é obrigatório. Quando timeUnixNano não está presente, o evento span é eliminado e um NrIntegrationError é criado.

Os campos traceId e spanId em intervalos são obrigatórios de acordo com o protocolo OpenTelemetry para dados de rastreamento. Quando traceId ou spanId não estão presentes, o intervalo é eliminado e um NrIntegrationError é criado.

Campos obsoletos e removidos

Os códigos de status de span foram descontinuados no OTLP v0.6.0 e foram removidos a partir da v0.12.0. Os clientes que configurarem e enviarem essas mensagens e campos verão o valor definido como UNRECOGNIZED. Entre em contato com o suporte, pois isso causa problemas.

Amostragem

Dados trace são o tipo de dados OpenTelemetry mais maduro. Por causa disso, a experiência do usuário OpenTelemetry da New Relic é amplamente baseada em dados trace e, portanto, influenciada pela sua estratégia de amostragem.

Você pode configurar a amostragem em vários locais:

  • Service:

    Use o OpenTelemetry SDK para seu idioma.

  • Collector:

    Se você estiver executando sua própria instância do coletor OpenTelemetry, poderá configurá-lo para fazer formas mais sofisticadas de amostragem, como amostras baseadas na cauda (veja abaixo).

Confira esta documentação sobre como configurar diferentes tipos de amostragem:

Atributo de recursos e bytes armazenados

Os atributos de recurso OpenTelemetry são definidos como uma representação imutável da entidade que produz telemetria e armazenados como attributes. É importante entender como esses atributos são aplicados ao rastreamento de dados no New Relic e como eles podem impactar os bytes armazenados. Podemos observar o impacto do atributo de recurso usando um exemplo de carga útil OTLP e inspecionando a saída da consulta NRQL resultante.

Exemplo de carga útil trace OTLP

{
"resourceSpans": [
{
"resource": {
"attributes": [
{
"key": "service.name",
"value": {
"stringValue": "newrelic-otlp-service"
}
},
{
"key": "process.command_line",
"value": {
"stringValue": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar"
}
}
]
},
"scopeSpans": [
{
"scope": {
"name": "newrelic-instrumentation-library",
"version": "1.0.0"
},
"spans": [
{
"attributes": [
{
"key": "message_id",
"value": {
"stringValue": "000000-aaaaaa-111111-bbbbbb"
}
}
],
"startTimeUnixNano": "1677182057000000000",
"endTimeUnixNano": "1677182059000000000",
"kind": "SPAN_KIND_INTERNAL",
"name": "example-span",
"spanId": "c469d81892057f5f",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}
]
}
]
}
]
}

Representação de consulta NRQL

{
"duration.ms": 2000.0,
"entity.guid": "OBFUSCATED",
"entity.name": "newrelic-otlp-service",
"entity.type": "SERVICE",
"entityGuid": "OBFUSCATED",
"guid": "c469d81892057f5f",
"id": "c469d81892057f5f",
"instrumentation.provider": "opentelemetry",
"message_id": "000000-aaaaaa-111111-bbbbbb",
"name": "example-span",
"newRelic.ingestPoint": "api.traces",
"newrelic.source": "api.traces.otlp",
"nr.isPrimaryEntityData": true,
"otel.library.name": "newrelic-instrumentation-library",
"otel.library.version": "1.0.0",
"process.command_line": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar",
"service.name": "newrelic-otlp-service",
"span.kind": "internal",
"timestamp": 1677182057000,
"trace.id": "aa04993b9acefbedea802f8d96e4bc58",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}

Dica

Este exemplo é uma comparação simplificada destinada a ilustrar os conceitos subjacentes. As versões do mundo real parecerão um pouco diferentes porque têm mais complexidade.

A coisa mais importante a se notar com a atribuição de recursos é a diferença potencial no tamanho da carga enviada em comparação com o que está armazenado no NRDB. Todos os valores de atributo de recurso serão aplicados a cada período na carga útil do OTLP. O exemplo acima mostra apenas um único período sendo enviado, mas se a carga contivesse 100 períodos, cada um deles teria process.command_line e service.name aplicados a eles.

Para alguns aplicativos baseados em Java, o atributo process.command_line padrão pode ter milhares de caracteres, o que pode resultar em um aumento significativo e inesperado em bytes faturáveis. Se esses atributos de recursos não fornecerem valor, eles poderão ser desativados seguindo o OpenTelemetry e os comprimentos dos atributos: práticas recomendadas

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.