Skip to content

Add Jaeger links to the Linkerd dashboard#4177

Merged
alpeb merged 15 commits intolinkerd:masterfrom
Pothulapati:trace-board
May 7, 2020
Merged

Add Jaeger links to the Linkerd dashboard#4177
alpeb merged 15 commits intolinkerd:masterfrom
Pothulapati:trace-board

Conversation

@Pothulapati
Copy link
Contributor

This PR

  • Adds support for reverse proxying jaeger through linkerd-web, allowing users to access jaeger UI at <linkerd-web>/jaeger

Signed-off-by: Tarun Pothulapati [email protected]

Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
@Pothulapati
Copy link
Contributor Author

jaeger links will be available in the dashboard as seen in the below image
Screenshot_2020-04-04 Linkerd

Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
@Pothulapati Pothulapati marked this pull request as ready for review April 29, 2020 09:21
Signed-off-by: Tarun Pothulapati <[email protected]>
@Pothulapati
Copy link
Contributor Author

To try this PR out:

  • Let config.yaml be
tracing:
  enabled: true
  • Install Linkerd by running
    linkerd install --control-plane-tracing --addon-config config.yaml | k apply -f -

  • Open linkerd-web dashboard and checkout the jaeger links in the MetricsTable of any component.

@admc admc requested a review from grampelberg May 6, 2020 16:12
@grampelberg
Copy link
Contributor

@Pothulapati do we have the addons documented anywhere on the website?

Copy link
Contributor

@grampelberg grampelberg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It works, and is awesome. I left some suggestions but nothing breaking, mostly minor nits.

@Pothulapati
Copy link
Contributor Author

@grampelberg I have some documentation here linkerd/website#686 specific to tracing add-on! WDYT?

@grampelberg
Copy link
Contributor

@Pothulapati yup, that's what I was looking for. Thanks!

Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
Signed-off-by: Tarun Pothulapati <[email protected]>
metrics: PropTypes.arrayOf(processedMetricsPropType),
resource: PropTypes.string.isRequired,
selectedNamespace: PropTypes.string.isRequired,
jaeger: PropTypes.string,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a bit of confusion here as grafana is marked as isRequired while jaeger is not. As both of these values are passed as empty strings when the arg is empty, This should not cause any problems!

The change would be to remove isRequired for grafana and update the tests as they expect grafana field to be there always.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

raised #4349 to track

Copy link
Contributor

@grampelberg grampelberg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Copy link
Member

@adleong adleong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very cool! There are some confusing bits to it that we'll need to make sure we adequately document, either directly in the UI as a follow-up, or on the website. Specifically:

  • Enabling control plane tracing causes the jaeger icon to show up for all namespaces, even those without tracing, which can be confusing. Especially since some people have the notion that a service mesh can add tracing "for free" this could encourage that misunderstanding. It would be super cool if we could query jaeger and then only show the jaeger icon if any traces exist for that namespace.
  • Our tracing tutorial has users set up a separate jaeger from the linkerd-jaeger. This means that if you follow the tracing tutorial and also enable control plane tracing then you'll have emojivoto traces, but they won't be in linkerd's jaeger, and they'll be missing from this dashboard. We need to explain this and/or update the tutorial to use linkerd-jaeger.
  • The above two points taken together means that you can enable tracing in emojivoto according to the tutorial AND get a jaeger icon for the emojivoto namespace but not see any traces there which is certainly going to be confusing and frustrating for users.

@grampelberg
Copy link
Contributor

@Pothulapati would you mind getting an issue to track the docs updates? @adleong has some great points!

@Pothulapati
Copy link
Contributor Author

@grampelberg @adleong

Created linkerd/website#720 & #4351 to track them :)

Copy link
Member

@alpeb alpeb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Pothulapati , looks good! 👍
One nit though: the jaeger icon svg is huge! 180k vs for example Grafana's which is just 5.4k

@grampelberg
Copy link
Contributor

@zaharidichev mind giving this a review? It appears that you're a unique code owner snowflake for files that I'm not 100% sure of =)

Copy link
Member

@alpeb alpeb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok LGTM. @Pothulapati please address the icon issue as a separate PR 😉

@alpeb alpeb merged commit 2be43a5 into linkerd:master May 7, 2020
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.

4 participants