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

Create portable dashboard for OTel .NET runtime metrics #184842

Merged

Conversation

stevejgordon
Copy link
Contributor

@stevejgordon stevejgordon commented Jun 5, 2024

Summary

Create a dedicated "portable dashboard" for OTel .NET.

This uses metrics available in the contrib runtime metrics library. These metrics are opt-in and not enabled by default in the vanilla SDK. Our Elastic distro brings in the package and enables them by default. Therefore, the dashboard will only work if a) the customer uses our distro or b) they enable the metrics themselves when using the vanilla SDK.

Further, work is ongoing to define semantic conventions for .NET runtime metrics. Once complete, the metrics will be implemented directly in the .NET runtime BCL and be available with no additional dependencies. The goal is to achieve that by .NET 9, which is not guaranteed. At that point, the metric names will change to align with the semantic conventions. This is not ideal, but it is our only option if we want to provide some form of runtime dashboard with the current metrics and OTel distro.

As with #182107, this dashboard uses a table for some of the data and this table doesn't seem to reflect the correct date filtering. Until there is a solution, this PR will remain in the draft, or we can consider dropping the table for the initial dashboard.

image

@apmmachine
Copy link
Contributor

🤖 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!)

@stevejgordon stevejgordon force-pushed the dotnet-runtime-metrics-otel branch 3 times, most recently from a809b2a to a321915 Compare September 23, 2024 11:20
@stevejgordon stevejgordon marked this pull request as ready for review September 23, 2024 11:20
@stevejgordon stevejgordon requested review from a team as code owners September 23, 2024 11:20
@stevejgordon
Copy link
Contributor Author

#186167 fixed the issues described in this PR, and the dashboard now works as expected. I am marking this PR as ready for review.

@kpatticha, this is the .NET version of #182107

Copy link
Contributor

@cauemarcondes cauemarcondes left a comment

Choose a reason for hiding this comment

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

LGTM

@botelastic botelastic bot added ci:project-deploy-observability Create an Observability project Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team labels Sep 23, 2024
@elasticmachine
Copy link
Contributor

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

@cauemarcondes cauemarcondes added release_note:skip Skip the PR/issue when compiling release notes backport:prev-minor Backport to (8.x) the previous minor version (i.e. one version back from main) labels Sep 23, 2024
@kibana-ci
Copy link
Collaborator

💛 Build succeeded, but was flaky

Failed CI Steps

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
apm 1866 1867 +1

Async chunks

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

id before after diff
apm 3.4MB 3.4MB +16.8KB
Unknown metric groups

async chunk count

id before after diff
apm 53 54 +1

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

Copy link
Contributor

@yngrdyn yngrdyn left a comment

Choose a reason for hiding this comment

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

LGTM

@stevejgordon stevejgordon enabled auto-merge (squash) November 4, 2024 10:46
@stevejgordon stevejgordon force-pushed the dotnet-runtime-metrics-otel branch from a321915 to c930b8f Compare November 4, 2024 10:49
@stevejgordon stevejgordon force-pushed the dotnet-runtime-metrics-otel branch from c930b8f to 5e3dc46 Compare November 4, 2024 12:22
@elasticmachine
Copy link
Contributor

elasticmachine commented Nov 4, 2024

💛 Build succeeded, but was flaky

  • Buildkite Build
  • Commit: 5e3dc46
  • Kibana Serverless Image: docker.elastic.co/kibana-ci/kibana-serverless:pr-184842-5e3dc4691a73

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #3 / 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 1882 1883 +1

Async chunks

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

id before after diff
apm 3.4MB 3.4MB +16.8KB
Unknown metric groups

async chunk count

id before after diff
apm 53 54 +1

History

@stevejgordon stevejgordon merged commit 0600309 into elastic:main Nov 4, 2024
28 checks passed
@stevejgordon stevejgordon deleted the dotnet-runtime-metrics-otel branch November 4, 2024 14:16
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 8.x

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

kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Nov 4, 2024
## Summary

Create a dedicated "portable dashboard" for OTel .NET.

This uses metrics available in the
[contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)
runtime metrics library. These metrics are opt-in and not enabled by
default in the vanilla SDK. Our Elastic distro brings in the package and
enables them by default. Therefore, the dashboard will only work if a)
the customer uses our distro or b) they enable the metrics themselves
when using the vanilla SDK.

Further, work is ongoing to define [semantic conventions for .NET
runtime
metrics](open-telemetry/semantic-conventions#1035).
Once complete, the metrics will be implemented directly in the .NET
runtime BCL and be available with no additional dependencies. The goal
is to achieve that by .NET 9, which is not guaranteed. At that point,
the metric names will change to align with the semantic conventions.
This is not ideal, but it is our only option if we want to provide some
form of runtime dashboard with the current metrics and OTel distro.

As with elastic#182107, this dashboard uses a table for some of the data and
this table doesn't seem to reflect the correct date filtering. Until
there is a solution, this PR will remain in the draft, or we can
consider dropping the table for the initial dashboard.

![image](https://github.com/elastic/kibana/assets/3669103/0be46495-e09f-4f4e-81e1-5f69361d5781)

(cherry picked from commit 0600309)
@kibanamachine
Copy link
Contributor

💚 All backports created successfully

Status Branch Result
8.x

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

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Nov 4, 2024
… (#198795)

# Backport

This will backport the following commits from `main` to `8.x`:
- [Create portable dashboard for OTel .NET runtime metrics
(#184842)](#184842)

<!--- Backport version: 9.4.3 -->

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

<!--BACKPORT [{"author":{"name":"Steve
Gordon","email":"[email protected]"},"sourceCommit":{"committedDate":"2024-11-04T14:16:02Z","message":"Create
portable dashboard for OTel .NET runtime metrics (#184842)\n\n##
Summary\r\n\r\nCreate a dedicated \"portable dashboard\" for OTel
.NET.\r\n\r\nThis uses metrics available in
the\r\n[contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)\r\nruntime
metrics library. These metrics are opt-in and not enabled by\r\ndefault
in the vanilla SDK. Our Elastic distro brings in the package
and\r\nenables them by default. Therefore, the dashboard will only work
if a)\r\nthe customer uses our distro or b) they enable the metrics
themselves\r\nwhen using the vanilla SDK.\r\n\r\nFurther, work is
ongoing to define [semantic conventions for
.NET\r\nruntime\r\nmetrics](https://github.com/open-telemetry/semantic-conventions/pull/1035).\r\nOnce
complete, the metrics will be implemented directly in the
.NET\r\nruntime BCL and be available with no additional dependencies.
The goal\r\nis to achieve that by .NET 9, which is not guaranteed. At
that point,\r\nthe metric names will change to align with the semantic
conventions.\r\nThis is not ideal, but it is our only option if we want
to provide some\r\nform of runtime dashboard with the current metrics
and OTel distro.\r\n\r\nAs with #182107, this dashboard uses a table for
some of the data and\r\nthis table doesn't seem to reflect the correct
date filtering. Until\r\nthere is a solution, this PR will remain in the
draft, or we can\r\nconsider dropping the table for the initial
dashboard.\r\n\r\n\r\n![image](https://github.com/elastic/kibana/assets/3669103/0be46495-e09f-4f4e-81e1-5f69361d5781)","sha":"0600309378bf124c193c2bb041f731ad9ee5090d","branchLabelMapping":{"^v9.0.0$":"main","^v8.17.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","backport:prev-minor","ci:project-deploy-observability","Team:obs-ux-infra_services","apm:review"],"title":"Create
portable dashboard for OTel .NET runtime
metrics","number":184842,"url":"https://github.com/elastic/kibana/pull/184842","mergeCommit":{"message":"Create
portable dashboard for OTel .NET runtime metrics (#184842)\n\n##
Summary\r\n\r\nCreate a dedicated \"portable dashboard\" for OTel
.NET.\r\n\r\nThis uses metrics available in
the\r\n[contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)\r\nruntime
metrics library. These metrics are opt-in and not enabled by\r\ndefault
in the vanilla SDK. Our Elastic distro brings in the package
and\r\nenables them by default. Therefore, the dashboard will only work
if a)\r\nthe customer uses our distro or b) they enable the metrics
themselves\r\nwhen using the vanilla SDK.\r\n\r\nFurther, work is
ongoing to define [semantic conventions for
.NET\r\nruntime\r\nmetrics](https://github.com/open-telemetry/semantic-conventions/pull/1035).\r\nOnce
complete, the metrics will be implemented directly in the
.NET\r\nruntime BCL and be available with no additional dependencies.
The goal\r\nis to achieve that by .NET 9, which is not guaranteed. At
that point,\r\nthe metric names will change to align with the semantic
conventions.\r\nThis is not ideal, but it is our only option if we want
to provide some\r\nform of runtime dashboard with the current metrics
and OTel distro.\r\n\r\nAs with #182107, this dashboard uses a table for
some of the data and\r\nthis table doesn't seem to reflect the correct
date filtering. Until\r\nthere is a solution, this PR will remain in the
draft, or we can\r\nconsider dropping the table for the initial
dashboard.\r\n\r\n\r\n![image](https://github.com/elastic/kibana/assets/3669103/0be46495-e09f-4f4e-81e1-5f69361d5781)","sha":"0600309378bf124c193c2bb041f731ad9ee5090d"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/184842","number":184842,"mergeCommit":{"message":"Create
portable dashboard for OTel .NET runtime metrics (#184842)\n\n##
Summary\r\n\r\nCreate a dedicated \"portable dashboard\" for OTel
.NET.\r\n\r\nThis uses metrics available in
the\r\n[contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib)\r\nruntime
metrics library. These metrics are opt-in and not enabled by\r\ndefault
in the vanilla SDK. Our Elastic distro brings in the package
and\r\nenables them by default. Therefore, the dashboard will only work
if a)\r\nthe customer uses our distro or b) they enable the metrics
themselves\r\nwhen using the vanilla SDK.\r\n\r\nFurther, work is
ongoing to define [semantic conventions for
.NET\r\nruntime\r\nmetrics](https://github.com/open-telemetry/semantic-conventions/pull/1035).\r\nOnce
complete, the metrics will be implemented directly in the
.NET\r\nruntime BCL and be available with no additional dependencies.
The goal\r\nis to achieve that by .NET 9, which is not guaranteed. At
that point,\r\nthe metric names will change to align with the semantic
conventions.\r\nThis is not ideal, but it is our only option if we want
to provide some\r\nform of runtime dashboard with the current metrics
and OTel distro.\r\n\r\nAs with #182107, this dashboard uses a table for
some of the data and\r\nthis table doesn't seem to reflect the correct
date filtering. Until\r\nthere is a solution, this PR will remain in the
draft, or we can\r\nconsider dropping the table for the initial
dashboard.\r\n\r\n\r\n![image](https://github.com/elastic/kibana/assets/3669103/0be46495-e09f-4f4e-81e1-5f69361d5781)","sha":"0600309378bf124c193c2bb041f731ad9ee5090d"}}]}]
BACKPORT-->

Co-authored-by: Steve Gordon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
apm:review backport:prev-minor Backport to (8.x) the previous minor version (i.e. one version back from main) ci:project-deploy-observability Create an Observability project release_note:skip Skip the PR/issue when compiling release notes Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team v8.17.0 v9.0.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants