Los procesadores de puerta de enlace operan sobre los datos de telemetría antes de que lleguen a New Relic, lo que significa que algunos atributos disponibles en NRDB aún no están disponibles en la puerta de enlace. Comprender estas diferencias es fundamental al escribir expresiones OTTL para los procesadores de filtrado, transformación y muestreo.
Por qué difieren los esquemas
Flujo de datos y enriquecimiento
Cuando los datos de telemetría fluyen a través de la plataforma de New Relic:
- Procesamiento de la puerta de enlace - Su puerta de enlace recibe telemetría sin procesar de agentes y otras fuentes
- Enriquecimiento - New Relic agrega atributos (como
entity.guid,appName) y renombra algunos atributos existentes - Procesamiento de reglas de la nube - Las reglas de la nube basadas en NRQL operan con datos enriquecidos
- Almacenamiento - Los datos se almacenan en NRDB con todos los enriquecimientos aplicados
Impacto en los procesadores de la puerta de enlace
Los procesadores de Gateway ven datos de pre-enriquecimiento, lo que significa:
- Algunos atributos aún no existen (como
entity.guid,appName,entityGuid) - Los nombres de los atributos pueden diferir de lo que ve en NRDB
- La lógica de filtrado y transformación debe tener en cuenta este conjunto reducido de atributos
Las reglas de nube ven datos posteriores al enriquecimiento, lo que significa:
- Todos los atributos enriquecidos están disponibles
- Las consultas NRQL pueden hacer referencia a atributos que no existen en el gateway
Fuentes de datos
El gateway recibe telemetría de:
- Agentes de New Relic APM (múltiples lenguajes soportados)
- Agente de New Relic Infrastructure
- Colectores de OpenTelemetry
- APIs de New Relic (API de eventos, API de logs, API de trazas, API de métricas)
- Otras fuentes compatibles con OTLP
Importante
Consulte la documentación de configuración del agente para verificar qué agentes y versiones son compatibles con la implementación del gateway.
Todos los datos llegan como JSON complejos y multianidados con numerosos atributos.
Escribir expresiones OTTL para procesadores de gateway
Disponibilidad de atributos
Al escribir condiciones de filtro o declaraciones de transformación OTTL:
Atributos disponibles:
- Atributos de telemetría principales enviados por agentes/recopiladores
- Atributos que su instrumentación agrega directamente
- Atributos estándar de OTLP (como
span_id,trace_id,severity.number)
Atributos no disponibles (agregados durante el enriquecimiento):
entity.guid,entityGuidappId,appNamehost(en la mayoría de los casos)realAgentId- Varios atributos de metadatos específicos de NR
Consulte la tabla de referencia de atributos a continuación para obtener detalles completos.
Mejores practicas
Pruebe con datos reales: Utilice los datos de monitoreo de su gateway para verificar qué atributos existen en su telemetría antes de escribir filtros complejos.
Utilice los atributos disponibles:
# ✓ Works - span_id exists in raw telemetryfilter/Spans: config: spans: - 'span_id.string == "abc123"'
# ✗ May not work - entity.guid added during enrichmentfilter/Spans: config: spans: - 'attributes["entity.guid"] == "xyz789"'Considera las reglas en la nube para atributos enriquecidos: Si tu lógica de filtrado requiere atributos enriquecidos (como appName o entity.guid), utiliza reglas en la nube en lugar de procesadores de gateway.
Consulte la tabla de referencia: Antes de usar un atributo en un filtro o transformación, verifique que no figure como "no disponible en el gateway" en la tabla a continuación.
Referencia de atributos por tipo de dato
La siguiente tabla muestra qué atributos no están disponibles a nivel de gateway para cada tipo de datos de telemetría. Si necesita filtrar o transformar basándose en estos atributos, considere usar reglas de nube en su lugar.
Tipo de datos | atributo no disponible en la puerta de enlace | Ejemplo de expresión de filtro (OTTL) |
|---|---|---|
Transacción (APM) |
,
,
,
,
,
,
,
,
|
|
Evento personalizado |
,
,
,
,
,
|
|
Rastreo de errores |
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
|
|
Error de transacción |
,
,
,
,
,
,
,
,
|
|
Log |
,
,
,
,
|
|
Métrica (intervalo de tiempo) |
,
,
,
,
,
,
,
,
,
| Utilice métricas dimensionales o reglas de nube |
Span (rastreo distribuido) |
,
,
,
,
,
,
,
,
,
,
,
|
|
Seguimiento de SQL |
,
,
,
,
,
,
,
,
,
,
,
,
,
,
|
|
Rastreo de transacciones |
,
,
,
,
,
,
,
,
,
,
,
| Utilice los atributos disponibles en los datos de traza sin procesar |
Métrica (medidor) |
(valor:
),
:
|
|
Métrica (resumen) |
(valor:
),
:
|
|
Métrica (conteo) |
(valor:
),
:
|
|
SystemSample (Infraestructura) | Ninguno |
|
StorageSample (Infraestructura) |
|
|
NetworkSample (Infraestructura) |
|
|
ProcessSample (Infraestructura) |
|
|
ContainerSample (Infraestructura) |
,
,
|
|
Escenarios comunes
Filtrado por entidad
Problema: Desea filtrar spans por entidad, pero entity.guid no existe en el gateway.
Solución: Use el nombre del servicio u otros atributos de identificación que existan en la telemetría sin procesar:
filter/Spans: config: spans: - 'attributes["service.name"] == "my-service"'Filtrado por nombre de la aplicación
Problema: Las transacciones de APM no tienen appName en el gateway.
Solución: Utilice los atributos que su agente establece directamente o aplique el filtrado después del enriquecimiento con reglas de la nube.
Agregar información de la entidad
Problema: Desea agregar contexto de entidad a la telemetría en el gateway.
Solución: No puede acceder a entity.guid en el gateway, pero puede agregar sus propios metadatos de identificación:
transform/Logs: config: log_statements: - set(attributes["deployment"], "production-us-east") - set(attributes["cluster"], "k8s-prod-01")Resolución de problemas
El filtro no coincide con los datos esperados
Si su procesador de filtros no coincide con los datos que espera:
- Comprobar la disponibilidad del atributo - Verifica que el atributo exista en el gateway (no solo en NRDB)
- Inspecciona la telemetría real - Usa el monitoreo del gateway para ver qué atributos están realmente presentes
- Probar el acceso al atributo - Pruebe un filtro simple en el atributo para ver si existe:filter/Test:config:logs:- 'attributes["entity.guid"] != ""' # Will match nothing if attribute doesn't exist
La transformación no establece los valores esperados
Si los atributos no se están agregando o modificando:
- Verificar nombres de atributos - Los nombres de atributos previos al enriquecimiento pueden diferir de NRDB
- Verifique el tipo de datos - Asegúrese de acceder a los atributos correctamente (p. ej.,
attributes["key"]vs. acceso directo a campos) - Revise el orden de los procesadores - Asegúrese de que las transformaciones se ejecuten antes que los filtros que dependen de ellas
Próximos pasos
- Referencia del procesador de filtros - Aprenda la sintaxis de filtros OTTL
- Referencia del procesador de transformación - Aprenda las sentencias de transformación OTTL
- Documentación de reglas de nube - Use NRQL en datos enriquecidos