TykTechnologies / tyk

Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Other
9.73k stars 1.09k forks source link

Opentracing : traces without all middleware steps #3379

Open educroquet opened 4 years ago

educroquet commented 4 years ago

On contexts with many APIs and APIs calling other APIs in chains, having too many spans in the zipkin/jaeger dashboards may lead to a too complex usage of such dashboards and of not necessary big data volumes.

For Tyk's admin team, the steps representing the time spent in each Tyk middleware are much valuable.

But the upstream APIs teams just want to know the global time spent in Tyk internals and the time spent in the Authentication step when calling an Authentication server. The details of Tyk internals is not relevant for this population.

Solution : Find some way to be able to both keep the detailled spans of Tyk middlewares for Tyk's admin team when needing for its internal tracing dashboard, while allowing to get a trace with less spans for the tracing dashboard used by upstream API teams.

It may be the trigger of two distincts traces sent to two distincts trace repositories.

It may be a way to filter out some spans in the zipkin/jaeger dashboard.

Alternative : be able to configure the middlewares that we want to appear in the trace, globally for an organization, or per API Definition.

gernest commented 4 years ago

Thanks for opening this, we are tracking this internally. Will update this ticket if anything comes up.

I think global/per api option to enable/disable trace and also ability to choose which middlewares to record will be address this properly without adding extra complexity.

caroltyk commented 1 year ago

Hi @educroquet , we will be deprecating OpenTracing and implementing OpenTelemetry. Please see the FAQ on our community forum: https://community.tyk.io/t/faq-opentelemetry-distributed-tracing/5682

This request has been taken care of in OpenTelemetry traces where you can configure whether you want to enable detail tracing per API.