-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposed strategy for making the collector an observable application #7223
Comments
This is a discussion based on the ongoing discussions we had at the last SIG meeting. Right now, we can do this:
By default, I think if no exporter is specified, then the collector continues its legacy behavior and would export with debug level. If no level is set, then the default logging level should apply, which is info:
Now, going over your proposal:
I see a couple things I would like to see envisioned: Out of this, I see the following work items:
|
Part of this discussion feels related to #6629 |
@TylerHelmuth, thanks for linking that. Clearly a lot of discussion has been going on over there that is relevant here. I think it's made clear in that issue that running our own telemetry through the collector is controversial/problematic enough that this proposal goes too far in proposing the option to do so. My primary intention was to formalize the general principle of how the collector's telemetry should be gathered and emitted. I think @jpkrohling stated it well here:
Closing this since the discussion in #7106 seems to be headed towards this idea anyways. |
The OpenTelemetry collector is fundamentally an observability application. Naturally, we want it to also be an observable application. There has already been a lot of work towards this goal. However, I believe we still lack a clear strategy for gathering and emitting telemetry from the collector itself. To that end, this is a high-level proposal for a strategy that I believe would make the collector an examplar of how applications should be made observable, while simultaneously providing usability benefits that only the collector can offer.
I believe we should start with the same solution we would recommend to any other application: Use the appropriate OTel instrumentation library to gather and emit telemetry. Therefore, the collector should be instrumented with the otel-go library, and should emit its telemetry data via otel-go exporters.
The collector’s configuration can define which otel-go exporters may be used as well as which settings should be exposed. Naturally, otel-go’s otlp exporter should be an option, probably the default option.
At the same time, we should acknowledge the unique role of the collector in the OTel ecosystem. Most OTel-instrumented applications will emit data that eventually flows through a collector, so it is natural to look for ways to allow the collector’s own telemetry to flow through itself.
One option would require no additional work beyond the above suggestions. Users can just configure an otlp receiver on their collector which listens for the collector’s own telemetry, as emitted by otel-go’s otlp exporter.
A slightly more usable option, which still respects the role of the observability library, is to implement a custom exporter for otel-go that is simultaneous a collector receiver. This would allow users to directly receive the collector’s own telemetry onto a collector pipeline simply by configuring this receiver and using it as they would use any other receiver - put it in one or more pipelines, process and/or export the data as desired.
The text was updated successfully, but these errors were encountered: