Open ryansos opened 5 years ago
How would you suggest to programmatically allow this only if the storage is elasticsearch.
Storage implementation supporting all
/any
could return it from GetServices
but perhaps c* could also support such query by leaving out service_name
in queryByTag
.
afaik Zipkin supports this for Cassandra by iterating through all service names and executing queryByTag. It's expensive but doable, provided that the service graph is small enough (e.g. for Uber it would have to iterate through 3000 names, I would probably want to disable such functionality).
@pavolloffay I will investigate this option. I'll likely also need to have some type of front-end configuration option that will toggle this feature depending on storage type.
@yurishkuro I will explore this by potentially setting a configuration value to allow/disallow wildcard searching. If Cassandra does support this, as you say, this could alleviate my issue with developing this feature as storage-specific.
I had just implemented an open source storage backend for Jaeger that supports wild card search, https://github.com/chronowave/opentelemetry. The current implementation supports single node only though, does it help in your use cases?
Requirement - what kind of business use case are you trying to solve?
We have a need to collate traces across different services that share a specific tag value. The traces are initiated by separate HTTP requests and therefore appear as separate traces under separate services. We would like to search by a tag across all services with all matches displaying regardless of service name.
Problem - what in Jaeger blocks you from solving the requirement?
The jaeger-ui and the jaeger-query modules require service as a parameter.
Proposal - what do you suggest to solve the problem or improve the existing situation?
The jaeger-ui should include an 'All' or 'Any' option in the services dropdown.
The jaeger-query module should handle a request containing the value
service=all
orservice=any
by creating a new wildcard query. Theelastic.NewWildcardQuery
is supported by thebool.Must
query builder.Any open questions to address
I have a working example with tests but would like to discuss prior to opening a pull request.
I understand that Cassandra (the default storage) does not inherently support wildcard queries. How would you suggest to programmatically allow this only if the storage is elasticsearch? The query_parser module requires some changes that would potentially break Cassandra implementations.