Skip to content
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

[8.16] [ObsUX] [APM] [OTel] Runtime metrics show dashboards with different ingest path (#211822) #213545

Open
wants to merge 2 commits into
base: 8.16
Choose a base branch
from

Conversation

jennypavlova
Copy link
Member

@jennypavlova jennypavlova commented Mar 7, 2025

Backport

This will backport the following commits from main to 8.16:

Questions ?

Please refer to the Backport tool documentation

@jennypavlova jennypavlova enabled auto-merge (squash) March 7, 2025 11:33
@botelastic botelastic bot added ci:project-deploy-observability Create an Observability project Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team labels Mar 7, 2025
@elasticmachine
Copy link
Contributor

Pinging @elastic/obs-ux-infra_services-team (Team:obs-ux-infra_services)

Copy link
Contributor

github-actions bot commented Mar 7, 2025

🤖 GitHub comments

Expand to view the GitHub comments

Just comment with:

  • /oblt-deploy : Deploy a Kibana instance using the Observability test environments.
  • run docs-build : Re-trigger the docs validation. (use unformatted text in the comment!)

…ngest path (elastic#211822)

Closes elastic#211783
Part of elastic#195857

## Summary

This PR expands the logic to get the dashboard files based on the agent.
We have many different ways to ingest data so we want to add more
metrics dashboards to the APM metrics tab. The different ingest paths we
have:
Classic APM Agent   --> APM Server       --> ES
Vanilla OTel SDKs     --> APM Server       --> ES
EDOT OTel SDKs      --> APM Server       --> ES
Classic APM Agent   --> EDOT Collector --> ES
Vanilla OTel SDKs.    --> EDOT Collector --> ES
EDOT OTel SDKs      --> EDOT Collector --> ES
We agreed on having a dashboard filename pattern to make showing the
correct dashboard easier described
[here](elastic#195857 (comment))

First, we determine if the ingest path is through APM Server or EDOT
Collector by checking the `telemtry.sdk` fields.

## TODOs / Reviewer notes
- [ ] Currently, we have a fallback to metrics charts which is valid
only if we have APM agent so this PR adds an empty state message:
"Runtime metrics are not available for this Agent / SDK type." in case
there is no dashboard for the service language. To be improved in
elastic#211774 and will be updated in
this PR when ready - I will still open it for review as the other logic
can be reviewed
- The dashboards are to be updated (by the agent team so not part of the
changes here)

## Testing:
- Using e2e PoC
- The available dashboard cases can be found in
[loadDashboardFile](https://github.com/jennypavlova/kibana/blob/91f169e19a3fa3f83ca60eb078159c026f9617af/x-pack/solutions/observability/plugins/apm/public/components/app/metrics/static_dashboard/dashboards/dashboard_catalog.ts#L40)
- Cases to be checked:
- OTel native with Vanilla OTel SDKs with available dashboard (example
case file: `otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)

<img width="1903" alt="image"
src="https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb"
/>

- APM server with Vanilla OTel SDKs service with available dashboard
(example case file: `classic_apm-otel_other-nodejs`, `...-java`,
`...-dotnet`)

![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)

- APM server with Classic APM Agent (example case file:
`classic_apm-apm-nodejs`, `...-java`)

<img width="962" alt="image"
src="https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e"
/>

- OTel native with Vanilla OTel SDKs without available dashboard (empty
state case example: python service)

![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)

- APM server with Vanilla OTel SDKs service without available dashboard
(empty state)

<img width="1910" alt="image"
src="https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281"
/>

- APM server with Classic APM Agent without available dashboard (Current
metrics fallback)

<img width="1914" alt="image"
src="https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75"
/>

- ⚠️ OTel native Dashboards are still not available (at the time of
adding the description)

---------

Co-authored-by: Sergi Romeu <[email protected]>
Co-authored-by: Cauê Marcondes <[email protected]>
Co-authored-by: kibanamachine <[email protected]>
(cherry picked from commit f195570)

# Conflicts:
#	packages/kbn-elastic-agent-utils/src/agent_guards.ts
#	packages/kbn-elastic-agent-utils/src/agent_ingestion_path.ts
#	packages/kbn-elastic-agent-utils/src/agent_sdk_name_and_language.test.ts
#	packages/kbn-elastic-agent-utils/src/agent_sdk_name_and_language.ts
#	src/platform/packages/shared/kbn-apm-synthtrace-client/src/lib/otel/index.ts
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/index.test.tsx
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/static_dashboard/dashboards/dashboard_catalog.ts
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/static_dashboard/dashboards/get_dashboard_file_name.test.ts
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/static_dashboard/dashboards/get_dashboard_file_name.ts
#	x-pack/test/api_integration/deployment_agnostic/apis/observability/apm/services/agent.spec.ts
@jennypavlova jennypavlova force-pushed the backport/8.16/pr-211822 branch from b658aa8 to 68d056d Compare March 7, 2025 12:10
@elasticmachine
Copy link
Contributor

elasticmachine commented Mar 7, 2025

💔 Build Failed

Failed CI Steps

History

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport ci:project-deploy-observability Create an Observability project Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants