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

[req] Eliminate unknown-spring-boot fallback in jaeger.service-name #122

Open
dekimsey opened this issue Mar 5, 2021 · 4 comments
Open

Comments

@dekimsey
Copy link

dekimsey commented Mar 5, 2021

The current behavior In JaegerConfigurationProperties.java#L45 is to fallback to a dummy value if the name property is not set correctly.

Instead, I would like to see an error issued regarding the library being misconfigured instead. Or perhaps disabling any reporting spans. Or an assertion. Possibly anything other than a valid but dummy value that hides the application in tracing.
If opentracing.jaeger.enabled is enabled, we should require a valid value to be set for the application name

In our infrastructure, we end up seeing spans with these unknown-spring-boot entries that developers are unaware are misconfigured. There is a disconnect between the developer wiring their application, and the actual issue being recorded in tracing. There is no (obvious to me) indication that an application was misconfigured and is emitting these garbage application names to tracing. This makes follow-up with the owners very difficult and usually involves a lot of really frustrating chasing.

Thank you!

Possibly related issues:

@geoand
Copy link
Collaborator

geoand commented Mar 6, 2021 via email

@dekimsey
Copy link
Author

dekimsey commented Mar 6, 2021

Well, a configuration to disable the fallback leads us to the same issue. The out of the box defaults will produce bad traces. I believe the library should be more strict with it's default configuration. In essence, it should require a valid name be set if it's enabled.

Right now, I'm chasing down multiple applications that are generating unknown traces and it's not fun trying to find out where or who is generating them!

I could try to contribute it. But I'm not a Java developer. If the change is simple enough, I may be able to do it. And if not, I'll ask a favor of a coworker! But first, I think agreeing on a solution would be ideal.

@geoand
Copy link
Collaborator

geoand commented Mar 6, 2021

I don't really want to change the default behavior as it had been around since the inception of the library and folks haven't complained.

Opting in to being more strict sounds like the best way to go to me.
The change should be simple to make.

@dekimsey
Copy link
Author

The issue we've found with an opt-in behavior is that simply put, we haven't fixed anything. If the client is misconfigured (never declared a service name), how is adding another flag to require the name flags be set going to address the root cause?

I've got hundreds of deployed instances from many different teams at different revisions. Tracking down these "unknown-spring-boot" instances is an operational nightmare and worse, not something I can fix. I then have to track down the application owners and point them to the docs and convince them to fix it. It's frustrating to say the least since it introduces bad data to the tracing system and isn't an error that's obvious to the developer.

Is there a precedence for this behavior (a dummy service name default?). I checked other languages' jaeger libraries and none of them appear to insert dummy values for the service name (my search was not exhaustive).

The go library requires a service name be set.
The java library requires a service name be set.
The python library requires a service name be set.

This leads me to believe it's this library is setting a bad default, and the behavior should be removed in favor of an appropriate fatal error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants