Skip to content
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

Add additional env variables for Jaeger exporter #1453

Closed

Conversation

srikanthccv
Copy link
Member

Changes

This change adds two additional env variables for Jaeger exporter OTEL_EXPORTER_JAEGER_CERTIFICATE for gRPC and OTEL_EXPORTER_JAEGER_PROTOCOL for specifying protocol to use.

@srikanthccv srikanthccv requested review from a team February 20, 2021 15:53
Addtionally, the following environment variables are reserved for future
usage in Jaeger Exporter configuration:

- `OTEL_EXPORTER_JAEGER_CERTIFICATE`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about OTEL_EXPORTER_JAEGER_CLIENT_CERT_FILE? It's almost self-explanatory.

But even that seems not sufficient. For example, in the Jaeger C# client there are 3 env vars for TLS: https://github.com/jaegertracing/jaeger-client-csharp#configuration-via-environment

Copy link
Contributor

@anuraaga anuraaga Feb 21, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reference I had tried a pr for the three variables but couldn't get it in for 1.0 so need to rework it in a backwards compatible way.

#1375

I would go with just CERTIFICATE here to match otlp.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I understand it the private key and certificate chain pair is optional and can be null even for the secure connection. What do you think about OTEL_EXPORTER_JAEGER_CERTIFICATE, OTEL_EXPORTER_JAEGER_CLIENT_KEY and OTEL_EXPORTER_JAEGER_CLIENT_CHAIN?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have any SDK that already implements this auth mode and supports various certs? I would model the names after the APIs used (although different languages may call them differently).

BTW, I would recommend OTEL_EXPORTER_JAEGER_TLS_ prefix for all three, it provides a clear scope.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like Java provides way to set the ChannelCreds but doesn't have the support for loading from env. Python implementation uses OTEL_EXPORTER_JAEGER_CERTIFICATE. I couldn't find any other language SDK supporting them yet.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yurishkuro I don't think we should deviate from what we have for otlp since the protocols are so similar. I tried to get the tls prefix in before 1.0 but it didn't happen - I would say at this point consistency would be simpler. All grpc transports follow the same pattern.


- `OTEL_EXPORTER_JAEGER_PROTOCOL`

Jaeger exporter has more than one transport protocol it can support, e.g. grpc, http/thrift, udp/thrift.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the exporters are vastly different, would it make more sense to have different values for exportet, e.g. jaeger, jaeger_http, jaeger_udp?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to follow along the similar lines of OTLP(grpc, http/protobuf, http/json), Zipkin for consistency. And also jaeger for Jaeger gRPC is misleading/not aligning with others.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see - it's a bit difficult because we have udp here, unlike the others. So any variables that relate to http specifically just can't apply, for example http headers (we have for otlp and still need to add for the others) and even tls I think. Would leaving udp to be separate make sense?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure If I understood you correctly but if headers are not applicable then they will not be set and I don't think tls applies to udp. What is the issue with udp not being separate?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah ignoring unsupported values is another approach too, it's mostly just to compare them. I don't think we currently have many variables that have a dependency on other ones, e.g. var2 is only read if var1 has a certain value. The separation could be clearer or it could be less clear, not too sure.

@github-actions
Copy link

github-actions bot commented Mar 2, 2021

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions
Copy link

github-actions bot commented Mar 9, 2021

Closed as inactive. Feel free to reopen if this PR is still being worked on.

@github-actions github-actions bot closed this Mar 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants