-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[APM/Design] Code integration design proposal #110
Comments
Glorious! |
Oh man, this stuff is amazing. Should the user be able to deeplink to a file? The flyout is going to make that a little more difficult. Back & forth navigation using the URL history is bound to be hard as well, not sure if we can pull that off with a flyout. |
@dgieselaar I understand the concern of adding another param to the URL for sharing. Instead I imagine a simpler solution would be to add a "Share" option on that file preview which enables the user to copy a link to the file in Code UI, which I suppose is also a more preferred way to share source code files instead of inside the APM UI. |
Some early thoughts on how to embed code in APM:
I haven’t discussed these with @elastic/code. It’s just a preliminary proposal. |
@spacedragon I think that's a very good proposal - wondering how feasible this is within the short-term timeline, but something we can discuss in our upcoming kick off. Thanks for your input! |
FYI: The changes suggested in elastic/kibana#40375 (comment) might simplify the Code Search integration. |
That looks pretty good. We had internal team sync this week chatting about the design as well. Will send out a cross-team sync this week or early next week to sync on some progresses |
Design updateI've been updating the user experience flows for when a user wants to map a repository to a service from deep inside the context of a service and transactions. There was also a need for an overview page that would display all the mappings between services and repositories, which is now added to the Settings page within APM. The user is able to manage the mappings and set up new ones from one central view. Updated flyouts with new Code componentSince we landed on a redesign of the stack strace experience in APM, I've updated the designs in the Code integration to reflect the new design. Mapping a repository to a service within APM viewsInstead of adding an option to map for each stackframe (Codeblock) component, we opted to design a banner at the top of the content to entice users to add the mapping. They'll be able to dismiss the message, which is saved to local storage for each Kibana user separately. List of mappings within SettingsAs mentioned previously, we've designed a list page for all mappings within APM so the user can get a full overview and be able to manage mappings from one place. |
This looks great Casper! Can the user map multiple repositories for a service? |
Yes, although it's not exactly demoed in the above prototypes. One enhancement might be to be able to add multiple "new" repositories in that modal at a time. I'll give it some thought |
Summary
Continuing from #101, @daveyholler and I have put together a design proposal that is meant to give some context to how we imagine APM UI would integrate with Code in order to first and foremost be able to serve source code references to stack traces.
Why
While APM agents today have the option to send up stack traces for spans and exceptions, it's at a cost of the payload and at the end of the day more expensive for the customer. Now with the Code Kibana app launched, we're excited by the potential replacement solution. Being able to have a seamless link between the executed code on the client-side and the source code is invaluable information for debugging performance problems.
An added benefit is that we'll also be able to drive further adoption of Code by enabling our customers to integrate.
How
The initial integration is currently only related to the APM UI. We need to be able to look up source code references via the Code API and be able to map source code repositories to services. If a mapping doesn't exist, we'll enable the user to add the mapping manually either by mapping it to an existing Code repository or a new one, imported by URL.
TODO: We need to investigate the Code API for source code lookups, mapping or adding repositories.
Design proposal
Links
👉 Marvel prototype
Code integration in Span detail
👉 Direct link to screens
Code integration not setup in Span detail
👉 Direct link to screens
Manage source code repository for Service
👉 Direct link to screens
APM Setup instructions Code integration
👉 Direct link to screens
Open questions
@elastic/apm-ui @roncohen @tbragin @nehaduggal @chongzhe Thoughts on this proposal? I imagine we will want to have a sync between the APM and Code teams so we can figure out an ideal way to proceed.
It's possible that many of the setup interactions can be scoped to a later implementation, so ideally we'd investigate the embedded component first by creating a POC of the UI element and it querying the Code API for source code references.
The text was updated successfully, but these errors were encountered: