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

support for istio distributed tracing #977

Open
salanfe opened this issue Apr 26, 2020 · 4 comments
Open

support for istio distributed tracing #977

salanfe opened this issue Apr 26, 2020 · 4 comments

Comments

@salanfe
Copy link

salanfe commented Apr 26, 2020

Hi guys,

I've been using go-kit for some times now (high five for the amazing work !) and have been developing micro-services on Kubernetes and istio where istio tracing is leveraged. If interested in supporting istio tracing through simple header propagation (istio doc), I have working code that I would be happy to push through a pull request.

Basically the code implements the function func ServerBefore(before ...RequestFunc) ServerOption for HTTP and gRPC

defined here

so that header values can be saved in the context, and then inject to every downstream requests.

Is it something you see being pushed to your code base ? Let me know.
Cheers

@basvanbeek
Copy link
Member

Specifically tailored to Istio I think it does not provide a whole lot of value. I do see where one could have a generic "baggage" like header propagation middleware for clients and servers with the ability to specifically whitelist or blacklist which headers to allow or deny for propagation.

By the way if you want to have Go kit interop in distributed tracing you can already do so. Go kit supports Zipkin, OpenTracing and OpenCensus instrumentation thus you can use these to already propagate traces (and even augment traces with local in process spans).

@salanfe
Copy link
Author

salanfe commented Apr 26, 2020

Hi, thanks for your reply. I understand, makes sense. Today, the trend is to offload middlewares to the service mesh as much as possible : middlewares like

  • JWT verification
  • request tracing
  • circuit breakers
  • fault injections
  • etc (see istio features)

however tracing or accessing custom claims in JWT (for example) still require to propagate requests' headers to downstream services. This is two areas where header propagation has been implemented in our backends. So your suggestion of a generic "baggage" middleware for header propagation makes sense to me.

@lewsmith
Copy link

@salanfe, it's been a while, but do you have an example repo showing your usage of ServerBefore/ServerOption for istio header propagation?

@intel352
Copy link

@peterbourgon you noted this as help wanted, what's the expected direction here?

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

No branches or pull requests

5 participants