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

[ObsUX] [APM] [OTel] Runtime metrics show dashboards with different ingest path #211822

Conversation

jennypavlova
Copy link
Member

@jennypavlova jennypavlova commented Feb 19, 2025

Closes #211783
Part of #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

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 [ObsUX] [APM] [OTel] Create empty state for metrics tab if a dashboard is missing #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
  • Cases to be checked:
    • OTel native with Vanilla OTel SDKs with available dashboard (example case file: otel_native-otel_other-nodejs, ...-java, ...-dotnet)
image
  • APM server with Vanilla OTel SDKs service with available dashboard (example case file: classic_apm-otel_other-nodejs, ...-java, ...-dotnet)

image

  • APM server with Classic APM Agent (example case file: classic_apm-apm-nodejs, ...-java)
image
  • OTel native with Vanilla OTel SDKs without available dashboard (empty state case example: python service)

image

  • APM server with Vanilla OTel SDKs service without available dashboard (empty state)
image
  • APM server with Classic APM Agent without available dashboard (Current metrics fallback)
image
  • ⚠️ OTel native Dashboards are still not available (at the time of adding the description)

@jennypavlova jennypavlova added the Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team label Feb 19, 2025
@jennypavlova jennypavlova self-assigned this Feb 19, 2025
@jennypavlova jennypavlova force-pushed the 211783-obsux-apm-otel-runtime-metrics-show-dashboards-with-different-ingest-path branch from 91f169e to 12f364d Compare February 24, 2025 19:07
@jennypavlova jennypavlova force-pushed the 211783-obsux-apm-otel-runtime-metrics-show-dashboards-with-different-ingest-path branch from 87776b4 to e59ed91 Compare February 25, 2025 16:00
@jennypavlova jennypavlova marked this pull request as ready for review February 25, 2025 16:10
@jennypavlova jennypavlova requested review from a team as code owners February 25, 2025 16:10
@elasticmachine
Copy link
Contributor

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

@jennypavlova
Copy link
Member Author

/ci

@jennypavlova jennypavlova added release_note:enhancement backport:prev-minor Backport to (9.0) the previous minor version (i.e. one version back from main) backport:prev-major Backport to (8.x, 8.18, 8.17, 8.16) the previous major branch and other branches in development labels Feb 26, 2025
@jennypavlova jennypavlova enabled auto-merge (squash) March 5, 2025 19:01
@jennypavlova jennypavlova merged commit f195570 into elastic:main Mar 6, 2025
10 checks passed
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 8.16, 8.17, 8.18, 8.x, 9.0

https://github.com/elastic/kibana/actions/runs/13699127640

@elasticmachine
Copy link
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #33 / discover/context_awareness extension getAdditionalCellActions data view mode should render additional cell actions for logs data source
  • [job] [logs] FTR Configs #45 / Observability AI Assistant Functional tests feature_controls/settings_security.spec.ts ai assistant management privileges all privileges allows updating of an advanced setting

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
apm 1890 1893 +3
discover 1179 1181 +2
infra 1443 1445 +2
inventory 226 228 +2
unifiedDocViewer 277 279 +2
total +11

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/elastic-agent-utils 41 45 +4

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
apm 2.5MB 2.5MB +2.7KB
discover 917.8KB 917.9KB +109.0B
infra 1.2MB 1.2MB +113.0B
inventory 212.1KB 212.2KB +109.0B
unifiedDocViewer 202.8KB 202.9KB +109.0B
total +3.2KB
Unknown metric groups

API count

id before after diff
@kbn/elastic-agent-utils 42 46 +4

async chunk count

id before after diff
apm 65 67 +2

History

cc @jennypavlova

kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Mar 6, 2025
…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)
kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Mar 6, 2025
…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)
@kibanamachine
Copy link
Contributor

💔 Some backports could not be created

Status Branch Result
8.16 Backport failed because of merge conflicts
8.17 Backport failed because of merge conflicts

You might need to backport the following PRs to 8.17:
- [SecuritySolution] Fix Risk score Insufficient privileges warning missing cluster privileges (#212405)
- [Obs AI Assistant] fix flaky test and add back test in settings (#213196)
8.18 Backport failed because of merge conflicts

You might need to backport the following PRs to 8.18:
- [Lens] Do not crash when editing a Lens chart with a by reference annotation layer (#213090)
- [Siem Migrations] GET /integrations integration Test (#213251)
- [SecuritySolution] Fix Risk score Insufficient privileges warning missing cluster privileges (#212405)
- [Obs AI Assistant] fix flaky test and add back test in settings (#213196)
- [Siem Migrations] Translated Rules Upsell Page (#212777)
- fix: Product Documentation function not available error (#212676)
- [Security Assistant] Fix use default inference endpoint (#212191)
8.x
9.0

Note: Successful backport PRs will be merged automatically after passing CI.

Manual backport

To create the backport manually run:

node scripts/backport --pr 211822

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Mar 6, 2025
…rent ingest path (#211822) (#213373)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[ObsUX] [APM] [OTel] Runtime metrics show dashboards with different
ingest path (#211822)](#211822)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT
[{"author":{"name":"jennypavlova","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-03-06T12:52:44Z","message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","backport:prev-minor","backport:prev-major","Team:obs-ux-infra_services","v9.1.0"],"title":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest
path","number":211822,"url":"https://github.com/elastic/kibana/pull/211822","mergeCommit":{"message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/211822","number":211822,"mergeCommit":{"message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0"}}]}]
BACKPORT-->

Co-authored-by: jennypavlova <[email protected]>
kibanamachine added a commit that referenced this pull request Mar 6, 2025
…rent ingest path (#211822) (#213374)

# Backport

This will backport the following commits from `main` to `9.0`:
- [[ObsUX] [APM] [OTel] Runtime metrics show dashboards with different
ingest path (#211822)](#211822)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT
[{"author":{"name":"jennypavlova","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-03-06T12:52:44Z","message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","backport:prev-minor","backport:prev-major","Team:obs-ux-infra_services","v9.1.0"],"title":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest
path","number":211822,"url":"https://github.com/elastic/kibana/pull/211822","mergeCommit":{"message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/211822","number":211822,"mergeCommit":{"message":"[ObsUX]
[APM] [OTel] Runtime metrics show dashboards with different ingest path
(#211822)\n\nCloses #211783\nPart of
https://github.com/elastic/kibana/issues/195857\n\n## Summary\n\nThis PR
expands the logic to get the dashboard files based on the agent.\nWe
have many different ways to ingest data so we want to add more\nmetrics
dashboards to the APM metrics tab. The different ingest paths
we\nhave:\nClassic APM Agent --> APM Server --> ES\nVanilla OTel SDKs
--> APM Server --> ES\nEDOT OTel SDKs --> APM Server --> ES\nClassic APM
Agent --> EDOT Collector --> ES\nVanilla OTel SDKs. --> EDOT Collector
--> ES\nEDOT OTel SDKs --> EDOT Collector --> ES\nWe agreed on having a
dashboard filename pattern to make showing the\ncorrect dashboard easier
described\n[here](https://github.com/elastic/kibana/issues/195857#issue-2580733648)\n\nFirst,
we determine if the ingest path is through APM Server or EDOT\nCollector
by checking the `telemtry.sdk` fields.\n\n## TODOs / Reviewer notes\n- [
] Currently, we have a fallback to metrics charts which is valid\nonly
if we have APM agent so this PR adds an empty state message:\n\"Runtime
metrics are not available for this Agent / SDK type.\" in case\nthere is
no dashboard for the service language. To be improved
in\nhttps://github.com//issues/211774 and will be updated
in\nthis PR when ready - I will still open it for review as the other
logic\ncan be reviewed\n- The dashboards are to be updated (by the agent
team so not part of the\nchanges here)\n\n## Testing: \n- Using e2e PoC
\n- The available dashboard cases can be found
in\n[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)\n-
Cases to be checked:\n- OTel native with Vanilla OTel SDKs with
available dashboard (example\ncase file:
`otel_native-otel_other-nodejs`, `...-java`, `...-dotnet`)\n \n<img
width=\"1903\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/44d37b05-a8e7-4f14-a1de-2c631f1843bb\"\n/>\n\n-
APM server with Vanilla OTel SDKs service with available
dashboard\n(example case file: `classic_apm-otel_other-nodejs`,
`...-java`,\n`...-dotnet`)\n
\n\n![image](https://github.com/user-attachments/assets/caef88ea-2603-41ad-b815-f4c0c3647809)\n\n-
APM server with Classic APM Agent (example case
file:\n`classic_apm-apm-nodejs`, `...-java`)\n \n<img width=\"962\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/f9e96dce-55c8-467a-93f0-a09fa219597e\"\n/>\n\n-
OTel native with Vanilla OTel SDKs without available dashboard
(empty\nstate case example: python service)\n
\n\n![image](https://github.com/user-attachments/assets/4cb6cca3-240e-422b-9288-701ef080f9cc)\n\n-
APM server with Vanilla OTel SDKs service without available
dashboard\n(empty state)\n \n<img width=\"1910\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/5219cf94-5013-4874-aaea-e558cca69281\"\n/>\n\n-
APM server with Classic APM Agent without available dashboard
(Current\nmetrics fallback)\n \n<img width=\"1914\"
alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/66342f49-876c-4ad5-a4d1-1414c3abac75\"\n/>\n\n-
⚠️ OTel native Dashboards are still not available (at the time
of\nadding the description)\n\n---------\n\nCo-authored-by: Sergi Romeu
<[email protected]>\nCo-authored-by: Cauê Marcondes
<[email protected]>\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"f19557004904b490fcb69d18c1ea5f1ef9634ee0"}}]}]
BACKPORT-->

Co-authored-by: jennypavlova <[email protected]>
jennypavlova added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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:
#	src/platform/packages/shared/kbn-apm-synthtrace-client/src/lib/otel/index.ts
jennypavlova added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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_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/get_dashboard_file_name.test.ts
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/static_dashboard/dashboards/get_dashboard_file_name.ts
jennypavlova added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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
Copy link
Member Author

💚 All backports created successfully

Status Branch Result
8.18
8.17
8.16

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

jennypavlova added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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 added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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_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/get_dashboard_file_name.test.ts
#	x-pack/plugins/observability_solution/apm/public/components/app/metrics/static_dashboard/dashboards/get_dashboard_file_name.ts
jennypavlova added a commit to jennypavlova/kibana that referenced this pull request Mar 7, 2025
…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:
#	src/platform/packages/shared/kbn-apm-synthtrace-client/src/lib/otel/index.ts
@kibanamachine kibanamachine added the backport missing Added to PRs automatically when the are determined to be missing a backport. label Mar 10, 2025
@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport missing Added to PRs automatically when the are determined to be missing a backport. backport:prev-major Backport to (8.x, 8.18, 8.17, 8.16) the previous major branch and other branches in development backport:prev-minor Backport to (9.0) the previous minor version (i.e. one version back from main) release_note:enhancement Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team v8.19.0 v9.0.0 v9.1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ObsUX] [APM] [OTel] Runtime metrics show dashboards with different ingest path
8 participants