-
Notifications
You must be signed in to change notification settings - Fork 835
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
Alternative to deprecated addSpanProcessor
#5299
Comments
I think the approach 2 would be quite straight forward. The utility function to get processors from the environment vars is located at
With that function being exported you could do new NodeSDK({
spanProcessors: [mySpanProcessor, ...getSpanProcessorsFromEnv()],
}); cc: @open-telemetry/javascript-maintainers |
@david-luna yes that was also my first thought when reading this - but it adds to the public API though which I'd like to avoid wherever possible. I'd like to gauge how many people would actually need this first before exporting this. We're overwhelmed with the amount of features we offer today and I think we might want to focus on features first that are likely used by a significant chunk of users. That being said, I don't want to block this feature for no reason, so if anyone reading this wants/needs this feature, please react with a "👍" emoji to the original issue above so that we can get a rough idea of how much interest there is to get this in. @satazor I'm curious, since the |
@pichlermarc after calling const proxyTracerProvider = trace.getTracerProvider() as ProxyTracerProvider;
const tracerProvider = proxyTracerProvider.getDelegate() as NodeTracerProvider;
spanProcessors.forEach(spanProcessor => tracerProvider.addSpanProcessor(spanProcessor)); Where |
Is your feature request related to a problem? Please describe
I'm using the OpenTelemetry Node SDK to initialize OpenTelemetry because it does most of the work of setting it up. Besides the default span processor, I want to add some more span processors. I was using
addSpanProcessor
but it was deprecated here: #5134At first,
spanProcessors
constructor option ofNodeSDK
seems designed for this use-case, but it has a shortcoming: you must specify the extra ones plus the defaultBatchSpanProcessor
. However, theBatchSpanProcessor
requires an instance of exporter, that it's created automatically for us via environment variables. Currently, it's not feasible to create an exporter based on environment variables without duplicating code, since the code that does it is hidden via private functions, e.g.:_buildExporterFromEnv
and_getSpanExporter
withinBasicTracerProvider
class.Describe the solution you'd like to see
I would like an easy way to add span processors without having to duplicate the initialization of
BatchSpanProcessor
and the initialization of the exporter based on environment variables.Approach 1:
Allow
spanProcessors
to be a function in order to append / prepend processors:The same logic could be applied to
logRecordProcessors
.Approach 2:
Export the necessary functionality to create stuff from env, such as exposing
_buildExporterFromEnv
,_buildPropagatorFromEnv
, etc.Describe alternatives you've considered
addSpanProcessor
for now.BatchSpanProcessor
The text was updated successfully, but these errors were encountered: