• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

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.

Crea una propuesta

OpenTelemetry traza: Mejores prácticas

Familiarícese con estos temas de traza de OpenTelemetry para garantizar que su traza y sus tramos aparezcan en New Relic.

Campos requeridos

Los campos startTimeUnixNano y endTimeUnixNano en los tramos son obligatorios según el protocolo OpenTelemetry para datos de traza. Cuando startTimeUnixNano no está presente, el intervalo se elimina y se crea un NrIntegrationError . Cuando endTimeUnixNano no está presente, la duración del lapso es grande y negativa.

El campo timeUnixNano en el evento span es obligatorio. Cuando timeUnixNano no está presente, el evento de intervalo se descarta y se crea un NrIntegrationError .

Los campos traceId y spanId en los tramos son obligatorios según el protocolo OpenTelemetry para datos de traza. Cuando traceId o spanId no están presentes, el intervalo se elimina y se crea un NrIntegrationError .

Campos obsoletos y eliminados

Los códigos de estado de intervalo quedaron obsoletos en OTLP v0.6.0 y se eliminaron a partir de v0.12.0. Los clientes que configuren y envíen estos mensajes y campos verán el valor establecido en UNRECOGNIZED. Comuníquese con el soporte técnico si esto causa problemas.

Muestreo

Traza data es el tipo de datos OpenTelemetry más maduro. Debido a esto, la experiencia del usuario OpenTelemetry de New Relic se basa en gran medida en datos de traza y, por lo tanto, está influenciada por su estrategia de muestreo.

Puede configurar el muestreo en varios lugares:

  • Service:

    Utilice el SDK de OpenTelemetry para su idioma.

  • Collector:

    Si está ejecutando su propia instancia del recolector OpenTelemetry, puede configurarlo para realizar formas de muestreo más sofisticadas, como muestreo tail-based (ver más abajo).

Consulte esta documentación sobre cómo configurar diferentes tipos de muestreo:

Atributo de recurso y bytes almacenados

El atributo de recurso OpenTelemetry se define como una representación inmutable de la entidad que produce la telemetría y se almacena como attributes. Es importante comprender cómo se aplican estos atributos al rastreo de datos dentro de New Relic y cómo pueden afectar los bytes almacenados. Podemos observar el impacto del atributo de recurso utilizando una carga útil OTLP de ejemplo e inspeccionando el resultado de la consulta NRQL resultante.

Ejemplo de carga útil de traza 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"
}
]
}
]
}
]
}

Representación de consulta de 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"
}

Sugerencia

Este ejemplo es una comparación simplificada destinada a ilustrar los conceptos subyacentes. Las versiones del mundo real se verán un poco diferentes porque tienen más complejidad.

Lo más importante a notar con el atributo de recurso es la diferencia potencial en el tamaño de la carga útil que se envía en comparación con lo que se almacena en NRDB. Todos los valores de atributos de recursos se aplicarán a cada tramo de la carga útil de OTLP. El ejemplo anterior solo muestra el envío de un único intervalo, pero si la carga útil contuviera 100 intervalos, a cada uno de ellos se les aplicarían process.command_line y service.name .

Para algunas aplicaciones basadas en Java, el atributo process.command_line predeterminado puede tener miles de caracteres, lo que puede resultar en un aumento significativo e inesperado de bytes facturables. Si estos atributos de recursos no proporcionan valor, se pueden desactivar siguiendo OpenTelemetry y longitudes de atributos: mejores prácticas

Copyright © 2024 New Relic Inc.

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