Skip to content

[FEATURE] ExemplarMetadataTooltip: display the links of the exemplar (perses#3445) - #442

Draft
austinlparker wants to merge 3 commits into
perses:mainfrom
austinlparker:ap/exemplar-trace-links
Draft

austinlparker wants to merge 3 commits into
perses:mainfrom
austinlparker:ap/exemplar-trace-links

Conversation

@austinlparker

@austinlparker austinlparker commented Nov 11, 2026 •

Copy link
Copy Markdown

Description

Part of perses/perses#3445, step 2 ("Embed links") of the exemplars roadmap.

Exemplars can carry links since perses/spec#118, for example to open their trace in a tracing UI. This lists them in a "Links" section of ExemplarMetadataTooltip:

  • The section sits above the labels, so the links stay in view when the label sets are long.
  • Links open in a new tab, so the dashboard and the pinned tooltip are kept.
  • A link without a name shows its URL.
  • The URLs are built by query plugins from exemplar labels, so a link with an unsafe scheme (e.g. javascript:) is not rendered, using the existing sanitizeUrl.
  • Nothing changes for exemplars without links.

Since the tooltip follows the mouse until it is pinned, the links can only be clicked once the tooltip is pinned.

Depends on #429. The links field only exists from @perses-dev/spec 0.4.0-beta.0, so this branch carries the two commits of #429 rebased on main; only the last commit belongs to this PR. The type-check failure in plugin-system/src/components/LinksEditor/LinksEditor.tsx comes from that bump and is also present on #429. I will rebase once #429 is merged.

The links are produced by the Prometheus plugin in perses/plugins#927.

Tested with unit tests (links rendered with their attributes, URL fallback, unsafe URL dropped, no section without links) and in a Perses build from main using this branch, with TimeSeriesChart and HeatMapChart panels on a Prometheus fed by the OpenTelemetry Collector spanmetrics connector: the link of a pinned exemplar opens its trace in Jaeger.

Screenshots

Tooltip with a named link and a link without a name (the URL is shown):

Exemplar tooltip with a named link and an unnamed link

In a dashboard, with the links produced by perses/plugins#927:

TimeSeriesChart exemplar tooltip with a Jaeger link

Checklist

  • Pull request has a descriptive title and context useful to a reviewer.
  • Pull request title follows the [<catalog_entry>] <commit message> naming convention using one of the
    following catalog_entry values: FEATURE, ENHANCEMENT, BUGFIX, BREAKINGCHANGE, DOC,IGNORE.
  • All commits have DCO signoffs.

UI Changes

  • Changes that impact the UI include screenshots and/or screencasts of the relevant changes.
  • Code follows the UI guidelines.

🤖 Generated with Claude Code

Nexucis and others added 3 commits November 11, 2026 10:44
Signed-off-by: Augustin Husson <augustin.husson@amadeus.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Augustin Husson <augustin.husson@amadeus.com>
…(perses#3445)

Exemplars can carry links since perses/spec#118, e.g. to open their trace
in a tracing UI. List them in the exemplar tooltip, above the labels so
they stay in view with long label sets.

The links open in a new tab. Their URLs are built by query plugins from
exemplar labels, so links with an unsafe scheme are not rendered.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: Austin Parker <austin@ap2.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants