[SDK] Support non-exporting pipeline log record processors (needed for EventToSpanEventBridgeProcessor)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- cpp
- Área
- observability
Línea de trabajo
Comienza leyendo el diseño existente de LogRecordProcessor y MultiLogRecordProcessor, y luego inspecciona LoggerContext y el comentario FIXME-SDK en sdk_builder.cc. Define los componentes necesarios ReadWriteLogRecord y de pipeline componibles, el procesador raíz y la integración con LoggerContext antes de implementar EventToSpanEventBridgeProcessor. Se considera terminado cuando la arquitectura funciona sin transferir la propiedad del record y la bridge puede volver a incorporarse a la configuración declarativa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
EventToSpanEventBridgeProcessor (proposed in #4309) bridges log-record events onto the live Span referenced by the log record's resolved context. It needs a LogRecordProcessor that can:
- read the resolved context (
Context/liveSpan) atOnEmit()time - read the log record's own data (body, attributes) without taking exclusive ownership away from downstream processors/exporters
The current LogRecordProcessor interface doesn't support this shape of "non-exporting", read/mutate pipeline processor, so the bridge processor can't be implemented correctly without new SDK architecture.
Background
From review on #4309:
Processors like the bridge processor will require some new architectural components and changes to existing components to be spec compliant and maintain reasonable performance. This is in addition to the Logger API level
EmitLogRecordWithContextchange, which is needed.The architecture components / changes that seem to be required include:
- Standardize the SDK built-in exporters (OTLP, ostream) on a recordable with a read-write interface. Pipeline processors need to read data from the record and not duplicate it.
- Create a new processor interface for composable pipeline processors that can read and mutate data but do not own the recordable life-cycle.
- Create a new root level processor that supports pipeline processors
- Update the
LoggerContextto support setting a new root processor.
The concrete problem: with today's LogRecordProcessor interface, a configuration like
logger_provider:
processors:
my_logs_filter:
my_log_record_sanitizer:
event_to_span_bridge:
batch:
exporter:
otlp_http:
fans out via MultiLogRecordProcessor instead of forming a pipeline: each processor gets an independent copy of the record via OnEmit(), which transfers ownership. That means N copies of the record (N times the recording cost) and the exporter at the end receives the raw, unfiltered/unsanitized record rather than the output of the upstream stages, since mutations made by an earlier stage are made on a copy that is then discarded.
See the full discussion: https://github.com/open-telemetry/opentelemetry-cpp/pull/4309#pullrequestreview-4953987049 and https://github.com/open-telemetry/opentelemetry-cpp/pull/4309#discussion_r3798294882
Scope
- Standardize SDK built-in exporters (OTLP, ostream) on a
ReadWriteLogRecord-style recordable. - New processor interface for composable pipeline processors that mutate data in place without owning the recordable lifecycle.
- New root-level processor implementing a pipeline of these composable processors.
LoggerContextsupport for installing this new root processor.- Once the above lands, implement
EventToSpanEventBridgeProcessoragainst the new interface and reintroduce it into declarative configuration (currently the config model/parser accepts theevent_to_span_bridgeprocessor block, butSdkBuilderonly logs a warning that it is not yet supported; see theFIXME-SDKcomment insdk_builder.cc).
Status
Pending design and implementation of the components above. #4309 was scoped down to just the configuration model and YAML parser per this discussion, with the actual processor implementation deferred until this issue is resolved.
- Lenguaje dominante
- C++
- Estrellas
- 1.4k
- Forks
- 647
- Merge medio
- 1 d 11 h
- PR fusionados (30 d)
- 73
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de open-telemetry/opentelemetry-cpp
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
open-telemetry/opentelemetry-cpp#4684 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
[CI] Add Ubuntu 26.04 runners to the CI workflowPosiblemente ocupada @deodattap la tomó hace 10 días. Abiertotriage/accepted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
open-telemetry/opentelemetry-cpp#4596 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
[BUG] Resource::Create() throws bad_variant_access if process.executable.name isn't a stringPosiblemente ocupada @ryux1 la tomó hace 31 días. Abiertobug help wanted triage/accepted
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
open-telemetry/opentelemetry-cpp#4535 · 1 comentario · 2 reacciones ·
Los mantenedores suelen responder en 1 día
-
[BUG] OnResponse() can call std::terminate() when the response body fails to parse as JSON/protobufPosiblemente ocupada @YuEfSaEDU la tomó hace 23 días. Abiertobug help wanted triage/accepted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
open-telemetry/opentelemetry-cpp#4534 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
[BUG] ETW Properties::to_vector doubles the result and reads past a string_viewPosiblemente ocupada @Tyagiquamar la tomó hace 8 días. Abiertoneeds-triage Stale
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
open-telemetry/opentelemetry-cpp#4347 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de open-telemetry/opentelemetry-cpp
Issues similares
-
Component: Python API
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Vector35/binaryninja-api#8649 ·
Los mantenedores suelen responder en 3 días
-
ai_p2 comp-parquet-reader-v3
Dificultad 2/5 Medio día Aptitud para principiantes 66/100
ClickHouse/ClickHouse#124986 ·
Los mantenedores suelen responder en 1 día
-
bug product: very_good_flutter_plugin
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
VeryGoodOpenSource/very_good_templates#654 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AcademySoftwareFoundation/OpenImageIO#5550 ·
Los mantenedores suelen responder en 2 días