jaegertracing/jaeger

Find Traces Matching Multiple Services

Open

#423 opened on Sep 24, 2017

View on GitHub
 (8 comments) (17 reactions) (0 assignees)Go (2,326 forks)batch import
help wantedui

Repository metrics

Stars
 (18,974 stars)
PR merge metrics
 (Avg merge 4d 11h) (85 merged PRs in 30d)

Description

Counterpart to UI ticket https://github.com/jaegertracing/jaeger-ui/issues/180

Currently, you can only search spans belonging to a one service. It would be nice if you could find traces belonging to multiple services. Then, you could search tags where error:true on all tags or search for traces which include multiple services.

Implementation plan:

  • define a new Storage Capability property indicating if multi-service search is supported (default: not supported)
  • change the UI to receive this flag via existing capabilities mechanism and allow / disallow not specifying service name in the search panel
  • implement multi-service search in memory store (should be trivial)
  • implement multi-service search in Elasticsearch / Opensearch (probably the easiest across real backends)
  • try to implement it in Badger (difficulty: unknown)
  • for Cassandra, introduce another flag to allow / disallow multi-service searches. The motivation is that with the current indexing scheme the only way to support multi-service search is by reading all service names and iterating across all of them (which I think what Zipkin implementation did). This might work for small deployments, but would be useless for large companies like Uber, so they would likely opt to disable it.
    • Another possibility is to use secondary index in Cassandra. The current schema is not designed for that, so difficulty: unknown.

Contributor guide