kubewharf / kelemetry

Global control plane tracing for Kubernetes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Move linking to frontend

SOF3 opened this issue · comments

Description

Instead of finding the trace as the linker, the aggregator just emits a tag that indicates the CGRNN of the parent span. Children are emitted with a separate trace ID so that each object has its own trace.

To be precise, we can remove the "parent"/"child" relationship in general and emit a new pseudospan type called "link":

tag name tag value
zzz-traceSource "link"
linkedCluster linked object cluster
linkedGroup linked object group
linkedResource linked object resource
linkedNamespace linked object namespace
linkedName linked object name
linkedRole If "parent", the current span is displayed as a child of the linked span. If empty, the linked span is displayed as a child of the current span. Otherwise, the linked span is displayed under a display-only virtual span with the specified role

User story

Currently, frontend queries that use the exclusive mode have to search the entire trace, making queries unnecessarily slow. Since the user may only be interested in a particular object, we can speed up the query by limiting each trace to one object only.

This allows us to use more aggressive linkers, which may become more significant with #109. Furthermore, dynamic linking means that we can now have multi-object links, such as linking pods to their secrets/nodes (this was previously not possible because nodes can relate to multiple pods).