Opened to follow-up to action item in this PR #376
Problem Statement
ETW - Event Tracing for Windows - allows to express an event as structured key-value pairs. Field / property names for event - could be anything. The idea is to align ETW field names with OpenTelemetry protocol spec / OTLP spec as close as possible. However, some other non-OTLP collector flows may require different standard schema / field names.
Proposed Solution
ETW exporter may handle this as follows:
- extension point (pluggable method, extension, additional class) that allows to remap from OpenTelemetry fields, attributes, resource names to custom protocol
- compile-time header that defines the mapping, that defines -
customer event field X has to be assigned to ETW event field Y, that may be implemented either as a set of C const char* constants, or as std::map, that header with definitions can be added to the build system via macro define - to override some default set of fields.
- ability for vendor to implement custom flavor of ETW exporter by inheriting from the default ETW exporter implementation. Different ETW listener
agents may expect their own unique standard schemas, so some extensibility is nice-to-have. Unfortunately since C++ SDK does not provide runtime loadable extension points for SDK, this would have to manifest as yet another additional exporter, exporter-schemaA or exporter-schemaB added into vendor-compiled SDK.
Due to limited time given to @mishal23 (his community bridge internship ends end of December 2020) / extent of changes / scope of this "flexible fields naming" proposal, tracking this issue separately from his PR, to implement the feature in a separate PR.
Opened to follow-up to action item in this PR #376
Problem Statement
ETW - Event Tracing for Windows - allows to express an event as structured key-value pairs. Field / property names for event - could be anything. The idea is to align ETW field names with OpenTelemetry protocol spec / OTLP spec as close as possible. However, some other non-OTLP collector flows may require different standard schema / field names.
Proposed Solution
ETW exporter may handle this as follows:
customer event field Xhas to be assigned toETW event field Y, that may be implemented either as a set of C const char* constants, or asstd::map, that header with definitions can be added to the build system via macro define - to override some default set of fields.agentsmay expect their own unique standard schemas, so some extensibility is nice-to-have. Unfortunately since C++ SDK does not provide runtime loadable extension points for SDK, this would have to manifest as yet another additional exporter,exporter-schemaAorexporter-schemaBadded into vendor-compiled SDK.Due to limited time given to @mishal23 (his community bridge internship ends end of December 2020) / extent of changes / scope of this "flexible fields naming" proposal, tracking this issue separately from his PR, to implement the feature in a separate PR.