Open maxgolov opened 3 years ago
UPDATE:
opentelemetry-cpp
repository.opentelemetry-cpp
repository, to build main+contrib
in one shot.I'm working on all three pieces in those two branches, which contain the working draft implementation: https://github.com/open-telemetry/opentelemetry-cpp/tree/maxgolov/fluentd_exporter https://github.com/open-telemetry/opentelemetry-cpp-contrib/tree/maxgolov/fluentd_exporter
Somewhat related PR in the main: https://github.com/open-telemetry/opentelemetry-cpp/pull/722 - for the sockets library changes. https://github.com/open-telemetry/opentelemetry-cpp/pull/714 - for building main + contrib repo in one build.
I would like to implement
fluentd
forward exporter for OpenTelemetry C++ SDK for the following modes:Output for the following transports -
fluentd
inputs :in_forward - The
in_forward
Input plugin listens to a TCP socket to receive the event stream. It also listens to a UDP socket to receive heartbeat messages. See also the protocol section for implementation details.in_unix - The
in_unix
Input plugin enables Fluentd to retrieve records from the Unix Domain Socket. The wire protocol is the same as in_forward, but the transport layer is different.I started initial work on it. The idea is we can build it as an optional community contribution for OpenTelemetry C++ SDK.
Features
One aspect of exporter that I'd like to cover is
semantic convention
of the fields. By default the field names for spans, events, attributes, etc. - would follow semantics agreed for the other JSON-alike exporters in OpenTelemetry. But it would be great to add some extensibility. Such as a concept of decorator or transformer that allows to customize the destination attributes. This way the exporter can be used for other vendor destinations, that may need custom field names, positions, and custom tree structure of the actual events carried within the forward protocol.