[SDK] Support non-exporting pipeline log record processors (needed for EventToSpanEventBridgeProcessor)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- cpp
- Ambito
- observability
Direzione di ricerca
Inizia leggendo il design esistente di LogRecordProcessor e MultiLogRecordProcessor, quindi esamina LoggerContext e il commento FIXME-SDK in sdk_builder.cc. Definisci i componenti richiesti ReadWriteLogRecord e di pipeline componibili, il processore radice e l’integrazione con LoggerContext prima di implementare EventToSpanEventBridgeProcessor. Il lavoro è completato quando l’architettura funziona senza trasferire la proprietà del record e la bridge può essere reintrodotta nella configurazione dichiarativa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- C++
- Stelle
- 1.4k
- Fork
- 647
- Merge medio
- 1g 10h
- PR unite (30g)
- 74
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di open-telemetry/opentelemetry-cpp
-
[CI] Add Ubuntu 26.04 runners to the CI workflowForse già presa @deodattap l’ha presa 8 giorni fa. Apertatriage/accepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
open-telemetry/opentelemetry-cpp#4596 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] Resource::Create() throws bad_variant_access if process.executable.name isn't a stringForse già presa @ryux1 l’ha presa 30 giorni fa. Apertabug help wanted triage/accepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
open-telemetry/opentelemetry-cpp#4535 · 1 commento · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] OnResponse() can call std::terminate() when the response body fails to parse as JSON/protobufForse già presa @YuEfSaEDU l’ha presa 21 giorni fa. Apertabug help wanted triage/accepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
open-telemetry/opentelemetry-cpp#4534 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] ETW Properties::to_vector doubles the result and reads past a string_viewForse già presa @Tyagiquamar l’ha presa 6 giorni fa. Apertaneeds-triage Stale
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
open-telemetry/opentelemetry-cpp#4347 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug Stale triage/accepted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
open-telemetry/opentelemetry-cpp#3109 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di open-telemetry/opentelemetry-cpp
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
EsotericSoftware/spine-runtimes#3186 ·
-
An empty line splits a signature where an ordinary comment is right above an argument's HaddockAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
mrkkrp/tilia#213 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Round video messages start gray and blocky with libx264: encoder is configured for 1,000,000 fpsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
telegramdesktop/tdesktop#31422 ·
I maintainer di solito rispondono entro 9 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 5 giorni